Chef infra 厨师长:ohai不提供node[';etc';]

Chef infra 厨师长:ohai不提供node[';etc';],chef-infra,chef-recipe,Chef Infra,Chef Recipe,我有一个要求,只有在特定用户存在的情况下才能执行特定的操作。通过研究以下问题,我得出以下结论: if node['etc']['passwd']['random'] 这是个好方法 当我在厨房测试它时,它实际上起了作用,但当推到生产阶段时,它在所有服务器上都出现了错误: NoMethodError: undefined method `[]' for nil:NilClass 当使用bash中的ohai时,我确实看到了etc:{…} 这里到底发生了什么?最后,在评论中的人的帮助下,我发现Oha

我有一个要求,只有在特定用户存在的情况下才能执行特定的操作。通过研究以下问题,我得出以下结论:

if node['etc']['passwd']['random']
这是个好方法

当我在厨房测试它时,它实际上起了作用,但当推到生产阶段时,它在所有服务器上都出现了错误:

NoMethodError: undefined method `[]' for nil:NilClass
当使用bash中的ohai时,我确实看到了
etc:{…}


这里到底发生了什么?

最后,在评论中的人的帮助下,我发现Ohai passwd插件实际上被禁用了。因此,我不得不绕过这个问题,询问是否存在这样一个用户:

if 'grep td-agent /etc/passwd > /dev/null; echo $?' == '0'
最后,为了将来的参考,我的全部资源:

group 'groupname' do
  action :create
  members 'td-agent' if 'grep td-agent /etc/passwd > /dev/null; echo $?' == '0'
  append true
end

最后,在评论中的人的帮助下,我发现Ohai passwd插件实际上被禁用了。因此,我不得不绕过这个问题,询问是否存在这样一个用户:

if 'grep td-agent /etc/passwd > /dev/null; echo $?' == '0'
最后,为了将来的参考,我的全部资源:

group 'groupname' do
  action :create
  members 'td-agent' if 'grep td-agent /etc/passwd > /dev/null; echo $?' == '0'
  append true
end

您确定
node['etc']['passwd']
不是未加载的部分吗?是的。我们运行了
chef shell-z
node['etc']
返回了nilPlease,请使用实际
chef client
进行测试,
chef shell
最多只能是不可预测的。运行
chef client-l debug
,您应该可以在顶部看到Ohai的调试输出。检查与etc插件相关的任何内容。还要检查您没有在Chef或Ohai配置文件中禁用插件。您没有在client.rb中禁用etc插件吗?您确定
node['etc']['passwd']
不是未加载的部分吗?是的。我们运行了
chef shell-z
node['etc']
返回了nilPlease,请使用实际
chef client
进行测试,
chef shell
最多只能是不可预测的。运行
chef client-l debug
,您应该可以在顶部看到Ohai的调试输出。检查与etc插件相关的任何内容。还要检查你没有在Chef或Ohai配置文件中禁用插件。你没有在client.rb中禁用etc插件吗?