Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 在ssh运行时将CLI参数传递给chef客户端_Chef Infra_Knife_Databags - Fatal编程技术网

Chef infra 在ssh运行时将CLI参数传递给chef客户端

Chef infra 在ssh运行时将CLI参数传递给chef客户端,chef-infra,knife,databags,Chef Infra,Knife,Databags,我正在尝试使用chef自动化应用程序部署 我准备了一本通用的cookbook(基于输入属性值工作)来部署API。我已将所有属性保存在属性文件夹中 这里我面临的问题是,如果我在属性文件中保留包的版本号,我就能够成功地部署包。实际上,每次触发CD管道时,包号都会发生变化。我正在考虑使用chef client CLI功能,通过-j选项将参数作为JSON文件传递 问题是我不想每次触发CD管道时都用我的cookbook来更新包版本,因为如果我更新我的cookbook中的任何内容,我必须再次运行CI进行co

我正在尝试使用chef自动化应用程序部署

我准备了一本通用的cookbook(基于输入属性值工作)来部署API。我已将所有属性保存在属性文件夹中

这里我面临的问题是,如果我在属性文件中保留包的版本号,我就能够成功地部署包。实际上,每次触发CD管道时,包号都会发生变化。我正在考虑使用chef client CLI功能,通过-j选项将参数作为JSON文件传递

问题是我不想每次触发CD管道时都用我的cookbook来更新包版本,因为如果我更新我的cookbook中的任何内容,我必须再次运行CI进行cookbook验证,同时我不能在每个节点(从50到500个服务器)保留一个文件并在触发chef客户端之前远程更新版本


请帮助我找到将参数远程传递给ssh的方法。或解决此问题的任何其他解决方案。非常感谢。如果包版本被指定为属性,为什么不在chef环境中设置它呢

使用此方法,您可以选择为应用程序的每个版本创建环境:

  • myapp_v1
  • myapp_v2
  • myapp_v3
或者,只需更新管道流程中每个阶段的现有环境:

  • mydev
  • myint
  • 我的测试
  • 迈卡
关键是在引导新节点时,可以指定环境。环境将确保每个节点具有相同的节点属性覆盖设置(您也可以更新现有节点的环境)

最后,使用环境的不明显好处是能够“锁定”正在使用的应用程序烹饪书的版本。在某个阶段,您将需要升级您的烹饪书,并且该更改也需要进行版本控制

最后,这里是一个示例环境,它说明了以下原则:

{
  "name": "mytest",
  "cookbook_versions": {
    "myappcookbook1": "= 1.0",
    "myappcookbook2": "= 2.0"
  },
  "override_attributes": {
    "myapp1": {
      "version": "1.0"
    },
    "myapp2": {
      "version": "2.0"
    }
  }
}

谢谢马克·奥库纳!!。。。这个解决方案对我的问题很有意义。让我试试这个…再次感谢!!!!