【问题标题】:chef-solo/chef-client local mode doesn't accept attribute override in a jsonchef-solo/chef-client 本地模式不接受 json 中的属性覆盖
【发布时间】:2016-07-26 02:08:28
【问题描述】:

我有一本食谱、roles.son 和 environment.json 文件可用。 我通过 chef-solo 和 chef-client -z (本地模式)运行它们。

两者都可以添加 -j 标志来传递角色.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

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

【问题讨论】:

  • @MarkO'Connor 你能把它复制到答案中吗?
  • @MarkO'Connor - 我需要指定角色和属性信息。有没有办法在一个 json 中指定这两种信息,或者以某种方式在不同的 json 中同时传递这两种信息?
  • 即使是单独使用,角色数据也位于./roles/ 之下,并且与普通厨师客户端的使用方式完全相同(即,将角色添加到节点的运行列表中)。

标签: ruby chef-infra chef-recipe chef-solo


【解决方案1】:

-j 不用于指定角色信息,见:

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

更新

我怀疑你根本不需要角色。

以下是如何在传递给 Chef 客户端的 JSON 文件中指定节点属性和运行列表的示例:

sudo chef-client -z -j node.json

cookbook 依赖项当然位于“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]"
  ]
}

【讨论】:

  • 我看看确认一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
相关资源
最近更新 更多