我已将 Chef 客户端从14.0
to 15.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
看起来node['etc']['passwd']
不再可读哪个结果的值为nil
.
我检查了另一台新引导的机器,并在 Chef Server UI 上验证它,但结果是,属性选项卡中没有“etc”。
阅读Ohai 发行说明 https://github.com/chef/ohai/blob/master/RELEASE_NOTES.md#optional-ohai-plugins它说:
可选的 Ohai 插件
Ohai 现在包含将插件标记为可选的功能,默认情况下会跳过这些插件。这使我们能够提供额外的插件,一些用户可能会发现这些插件很有用,但并非所有用户都希望被写入他们的 Chef 服务器。此更改引入了两个新的配置选项;run_all_plugins
它运行所有内容,包括可选插件,以及optional_plugins
它允许您运行标记为可选的插件。
默认情况下,我们现在将标记lspci
, sessions
and passwd
插件作为可选。 Passwd 对于连接 LDAP 或 AD 的节点尤其有问题,因为它试图将整个目录写入节点。如果您之前通过 Ohai 配置禁用了此插件,则不再需要。欢呼!
但你总是可以启用可选插件 https://docs.chef.io/ohai.html#enabling-optional-plugins:
启用可选插件
可以在以下位置启用可选插件client.rb
配置文件:ohai.optional_plugins = [
:Sessions,
:Lspci
]
在您的具体情况下:
ohai.optional_plugins = [
:Passwd
]
假设您使用bundler安装了ohai,那么您可以检查passwd
是否存在通过执行
$ bundle exec ohai etc
配置
不断地有这样的行为,那么:
UPDATE:厨师-客户食谱中已引入对此的支持:
-
node['ohai']['disabled_plugins']
- 要禁用的 ohai 插件数组,默认为空,如果指定则必须是数组。 Ohai 6 插件应指定为字符串(即“dmi”)。 Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。
-
node['ohai']['optional_plugins']
- 要启用的可选 ohai 插件数组,默认为空,如果指定则必须是数组。 Ohai 6 插件应指定为字符串(即“dmi”)。 Ohai 7+ 插件应指定为引号内的符号(即“:Passwd”)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)