Chef infra 如何将属性从打包机构建传递到coobook?
我正在尝试从打包机构建中预先设置厨师属性,但似乎无法使其正常工作:Chef infra 如何将属性从打包机构建传递到coobook?,chef-infra,packer,Chef Infra,Packer,我正在尝试从打包机构建中预先设置厨师属性,但似乎无法使其正常工作: "provisioners": [ { "chef_environment": "test_cookbook", "environments_path": "environments", "execute_command": "{{if .Sudo}}sudo {{end}}chef-solo --no-color --legacy-mode -c {{.ConfigPath
"provisioners": [
{
"chef_environment": "test_cookbook",
"environments_path": "environments",
"execute_command": "{{if .Sudo}}sudo {{end}}chef-solo --no-color --legacy-mode -c {{.ConfigPath}} -j {{.JsonPath}}",
"json": {
"test_cookbook": {
"my_attr": "test"
}
},
"run_list": [
"test_cookbook"
],
"type": "chef-solo",
}
]
它总是作为nil值传递
output="#{Chef::Log.info(node['my_attr'])}"
log output
file "/tmp/#{node['my_attr']}" do
content output
end
我已经提到过这一点。当为打包机的Chef provisioner使用
json
键时,传递给Chef的属性将是以嵌套在json
键中的键开始的键值对。因此,您可以从test\u食谱
键中访问属性,如:
output="#{Chef::Log.info(node['test_cookbook']['my_attr'])}"
log output
file "/tmp/#{node['test_cookbook']['my_attr']}" do
content output
end
这应该将字符串test
分配给局部变量output
,并将其作为临时文件中的内容。这是由于您在json
键中设置了以下映射:
"test_cookbook": {
"my_attr": "test"
}
似乎
my\u attr
键嵌套在映射中的test\u食谱
键中。您是否尝试过使用test\u食谱
键?这就是答案,谢谢!