2017-03-06 121 views
0

我只有在特定用户存在的情况下才需要执行某个操作。综观以下问题Chef Users resource (check if exists?)我得出的结论是以下几点:厨师:ohai不提供节点['etc']

if node['etc']['passwd']['random'] 

将是一个不错的方法。

,当我在厨房里测试过这实际工作,但是,当推到生产这种粉碎存在错误的所有服务器上:

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

当使用从庆典ohai我确实看到etc: {...}

究竟在这里发生?

+0

你确定它不是” t'node ['etc'] ['passwd']'不是不加载的部分? – coderanger

+0

是的。我们运行'chef-shell -z'和'node ['etc']'返回nil –

+0

请用实际的'chef-client'测试,'chef-shell'最好是不可预知的。 – coderanger

回答

0

最终,在评论人员的帮助下,我发现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 
相关问题