2015-09-23 38 views

回答

1

廚師將節點對象中的所有用戶存儲在密鑰etc下。

此樹是在運行開始ohai稀少,因此及時更新,並能夠訪問node['etc']['passwd']['myuser']['uid']你要問ohai像這樣再次運行etc插件(引自ohai documentation

ohai 'reload_passwd' do 
    action :nothing 
    plugin 'etc' 
end 

user 'daemonuser' do 
    home '/dev/null' 
    shell '/sbin/nologin' 
    system true 
    notifies :reload, 'ohai[reload_passwd]', :immediately 
end 

ruby_block 'just an example' do 
    block do 
    # These variables will now have the new values 
    puts node['etc']['passwd']['daemonuser']['uid'] 
    puts node['etc']['passwd']['daemonuser']['gid'] 
    end 
end 
+0

哇...這看起來相當先進,這向我展示了一個全新的世界,我很高興知道我還能做的是'uid ='id -u#{node ['jenkins'] ['master'] [''用戶']}'.delete(「\ n」)'。我們會在一行Ruby中給我'uid'或'「」',一定會更快。在一行Ruby中不是快捷和骯髒的?你會推薦什麼? – onknows

+0

第一次運行它可能會更快,在n ext運行您將通過所有提供程序代碼獲取用戶信息,這些信息已在啓動時由ohai收集,使用通知意味着只有在用戶更改時纔會完成ohai重新加載,因此下次運行時的計算時間爲0 – Tensibai

+0

配方中的ruby代碼將在編譯時完成,而不是在收斂時間完成。因此,首先運行它將在用戶創建之前評估,並返回nil – Tensibai