Chef infra 如何使Ohai插件生成[';etc';][';passwd';]?

Chef infra 如何使Ohai插件生成[';etc';][';passwd';]?,chef-infra,Chef Infra,我已将我的Chef客户端从14.0升级到15.3.14,但每当我在我的节点(macOS Mojave)上执行Chef客户端时,就会发出rose命令。 客户端输出为: ------------- undefined method `[]' for nil:NilClass Cookbook Trace: --------------- /var/chef/cache/cookbooks/macos/recipes/mac_init.rb:62:in `from_file' Relevant

我已将我的Chef客户端从
14.0
升级到
15.3.14
,但每当我在我的节点(macOS Mojave)上执行Chef客户端时,就会发出rose命令。
客户端输出为:

-------------
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插件 Ohai现在包括将插件标记为可选的功能,默认情况下跳过这些插件。这允许我们提供额外的插件,有些用户可能会觉得有用,但并非所有用户都希望写入他们的Chef服务器。更改引入了两个新的配置选项
run_all_plugins
运行包括可选插件在内的所有插件,以及
optional_plugins
允许您运行标记为可选的插件

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

但你总是可以:

启用可选插件 可选插件可以在
client.rb
配置文件中启用:
ohai.optional\u插件=[
:会议,
:Lspci
]

在您的具体情况下:

ohai.optional\u插件=[
:Passwd
]
假设您使用bundler安装了ohai,那么您可以通过执行

$ bundle exec ohai etc
配置 要经常有这样的行为,那么:

  • 调用
    chef-client
    时使用if,可以使用,它可以存储在存储库中
  • 使用。比如:
    ohai'reload_passwd'do
    操作:重新加载
    插件'etc'
    结束
    
  • 节点['ohai']['disabled\u plugins']贡献,获得免费支持。
更新: chef client cookbook中引入了对此的支持:

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

解释得很好的回答。非常感谢您回答我的问题。如果您有空闲时间,我还想问一下如何在多个节点上高效地应用此配置。噢,在挖掘一些线程和文档时,我看到ohai资源用于重新加载插件。但不幸的是,这个插件似乎仍然被禁用。我将在chef client cookbook repo上为启用的插件提交一个功能请求。以下是我向chef client发送的关于此问题的请求,并已顺利回复@gilloytoledano:太棒了!