我在属性文件中定义了以下属性
node.default['main']['a2'] = "hello world"
在我的食谱中,我按以下方式调用
执行' 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"的不同价值到"厨师部署"
谢谢
答案 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