我有一本cookbook和roles.son以及environment.json文件。 我通过chef-solo和chef-client -z(本地模式)运行它们。
两者都能够添加-j标志来传递roles.json,但是没有使用environment.json提供任何简单的属性覆盖方法。我没有使用服务器,所以不要在任何地方推送它。
我错过了什么吗?
我有这样的事情:
cookbooks environment.json file.txt local-mode-cache nodes roles.json
我正在运行以下
1:使用client.rb:
的chef-client本地模式log_level :info
log_location "/var/log/chef/client.log"
node_name "ip-10-201-38-78"
cookbook_path "/tmp/cookbooks/"
json_attribs "/tmp/roles.json"
chef-client -z -c client.rb -j roles.json
答案 0 :(得分:2)
-j不用于指定角色信息,请参阅:
它可用于指定节点属性,但与角色文件相比具有不同的格式。
我怀疑你根本不需要一个角色。
以下是如何在传递给Chef客户端的JSON文件中指定节点属性和运行列表的示例:
sudo chef-client -z -j node.json
食谱依赖性当然位于" cookbooks"子目录
├── node.json
├── cookbooks
├── apt ..
├── build-essential ..
├── chef_handler ..
├── compat_resource ..
├── homebrew ..
├── java ..
├── mingw ..
├── seven_zip ..
└── windows ..
{
"java": {
"jdk_version":8,
"install_flavor":"oracle",
"oracle": {
"accept_oracle_download_terms":true
}
},
"run_list":[
"recipe[apt]",
"recipe[java]"
]
}