2017-03-06 131 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