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插件吗?