如何让 Ohai 插件生成 ['etc']['passwd']?

Řoy*_*äno 4 chef-infra

我已将 Chef 客户端从 升级为 ,14.015.3.14每当我在我的节点(macOS Mojave)上执行 Chef-client 时就会出现问题。
客户端输出是:

-------------
undefined method `[]' for nil:NilClass

Cookbook Trace:
---------------
  /var/chef/cache/cookbooks/macos/recipes/mac_init.rb:62:in `from_file'

Relevant File Content:
----------------------
/var/chef/cache/cookbooks/macos/recipes/mac_init.rb:

 55:    action :create
 56:    owner 'administrator'
 57:    group 'localaccounts'
 58:    mode  '0775'
 59:  end
 60:
 61:  # Template for bash history
 62>>   node['etc']['passwd'].each do |user, data|
 63:
 64:    template "/Users/#{user}/.bash_profile" do
 65:      source '/default/bash_profile.erb'
 66:      owner 'administrator'
 67:      group 'staff'
 68:      ignore_failure true
 69:    end
 70:  end
Run Code Online (Sandbox Code Playgroud)

似乎node['etc']['passwd']不再可读哪个结果的值为nil
我检查了另一台新引导的机器,并在 Chef Server UI 上验证它,但结果是,属性选项卡中没有“etc”。

Mr.*_*Mr. 5

阅读ohai 的发行说明,它说:

可选的 Ohai 插件

Ohai 现在包含将插件标记为可选的功能,默认情况下会跳过这些插件。这使我们能够提供额外的插件,一些用户可能会发现这些插件很有用,但并非所有用户都希望被写入他们的 Chef 服务器。此更改引入了两个新的配置选项;run_all_plugins它运行所有内容,包括可选插件,并optional_plugins允许您运行标记为可选的插件。

默认情况下,我们现在将lspcisessionspasswd插件标记为可选。Passwd 对于连接 LDAP 或 AD 的节点尤其有问题,因为它试图将整个目录写入节点。如果您之前通过 Ohai 配置禁用了此插件,则不再需要。欢呼!

但您始终可以启用可选插件

启用可选插件

可以在配置文件中启用可选插件client.rbohai.optional_plugins = [ :Sessions, :Lspci ]

在您的具体情况下:

ohai.optional_plugins = [
  :Passwd
]
Run Code Online (Sandbox Code Playgroud)

假设您使用bundler安装了ohai,那么您可以passwd通过执行来检查是否存在

$ bundle exec ohai etc
Run Code Online (Sandbox Code Playgroud)

配置

不断地有这样的行为,那么:

更新: 厨师-客户食谱中已引入对此的支持:

  • node['ohai']['disabled_plugins']- 要禁用的 ohai 插件数组,默认为空,如果指定则必须是数组。Ohai 6 插件应指定为字符串(即“dmi”)。Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。
  • node['ohai']['optional_plugins']- 要启用的可选 ohai 插件数组,默认为空,如果指定则必须是数组。Ohai 6 插件应指定为字符串(即“dmi”)。Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。