Ruby 厨师独奏/厨师客户端本地模式不适用';不接受json中的属性重写

Ruby 厨师独奏/厨师客户端本地模式不适用';不接受json中的属性重写,ruby,chef-infra,chef-recipe,chef-solo,Ruby,Chef Infra,Chef Recipe,Chef Solo,我有一本食谱和roles.son和environment.json文件。 我通过chef solo和chef client-z(本地模式)运行它们 两者都提供了添加-j标志以传递roles.json的功能,但没有提供使用environment.json进行属性重写的简单方法。我没有使用服务器,所以没有把它推到任何地方 我错过什么了吗 我有这样的想法: cookbooks environment.json file.txt local-mode-cache nodes roles.jso

我有一本食谱和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的厨师客户端本地模式:

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

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

  • -j不用于指定角色信息,请参阅:

    它可用于指定节点属性,但与角色文件相比,其格式不同

    更新 我想你根本不需要扮演什么角色

    下面是如何在传递给chef client的JSON文件中指定节点属性和运行列表的示例:

    sudo chef-client -z -j node.json
    
    cookbook依赖项当然位于“cookbooks”子目录中

    node.json
    @MarkO'Connor你能把它复制到一个答案吗?@MarkO'Connor-我需要指定角色和属性信息。有没有一种方法可以在一个json中指定这两个信息,或者以某种方式在不同的json中传递这两个信息?即使使用solo,角色数据也会在
    /roles/
    下,并且使用与普通chef客户端完全相同的方式(即,将角色添加到节点的运行列表中)。我会查看并确认。您更新的答案有效!谢谢:)
    ├── 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]"
      ]
    }