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

chef-solo/chef-client local mode doesn't accept attribute override in a json

我有一本食谱和 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 : chef-client 本地模式 client.rb:

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

不使用-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]"
  ]
}