chef-solo / chef-client本地模式不接受json中的属性覆盖

时间:2016-07-25 03:13:25

标签: ruby chef chef-recipe chef-solo

我有一本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

  1. chef-solo -c client.rb -j roles.json

1 个答案:

答案 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 ..

node.json

{
  "java": {
    "jdk_version":8,
    "install_flavor":"oracle",
    "oracle": {
      "accept_oracle_download_terms":true
    }
  },
  "run_list":[
    "recipe[apt]",
    "recipe[java]"
  ]
}