如何在chef-client run命令

时间:2018-04-05 19:27:51

标签: chef chef-recipe cookbook

我在属性文件中定义了以下属性

node.default['main']['a2'] = "hello world"

在我的食谱中,我按以下方式调用

Recipe :: default


版权所有(c)2018作者,保留所有权利。

执行' just_test'做什么 命令&touch; tmp / a2345'
结束 执行' just_test1'做什么 命令"触摸#{/ tmp / node [' main'] [' a2']}"
结束 执行' just_test2'做什么 命令" echo#{node [' main'] [' a2']}"
结束

我想在运行时传递属性的值,默认情况下它将是" hello world:它将创建一个名为hello world的目录,

如何在节点实例上运行chef-client期间更改属性值?来自" hello world"的不同价值到"厨师部署"

谢谢

2 个答案:

答案 0 :(得分:0)

您可以通过传递到命令行的-j参数的json来实现。这是非常沮丧的。它将导致创建永久正常属性并与节点相关联,这很难维护和调试。

您希望设置位于节点的run_list中的角色或角色cookbook,或者将已编译的策略文件应用于该节点。在默认情况下分配'或者'覆盖'等级('正常'等级。)

如果您正在尝试测试您的食谱,您应该查看测试厨房,它通过.kitchen.yml文件支持设置属性,然后可以用来启动一个新鲜,干净的virt,安装厨师并编译你的食谱代码,让你摆弄属性。

答案 1 :(得分:0)

您可以在role中设置属性,该属性的值比在cookbook中设置的precedence更高。您可以在运行时使用-j选项将该属性作为json文件传递,但是如上所述,它将被设置为普通属性,并且在成功运行结束时将收敛到节点。

您可以像myattributes.json

一样创建json文件
{ "main": {
          "a2": "chef deploy"
          }
}

运行chef-client -j myattributes.json