我使用廚師來管理Ubuntu服務器。我爲服務器上的每個用戶添加了一個控制檯工具箱,其中大部分用戶都是在首次Chef運行期間創建的。第一次運行Chef時,會創建用戶,但這段代碼不會將符號鏈接添加到工具包,也不會創建正確的.bashrc文件。我認爲這是因爲ruby Dir.open('/home')
在創建用戶之前在運行開始時被編譯,因爲這些文件在下一次Chef運行中正確添加。獲取目錄中廚師運行列表
如何在實際運行此配方時獲取反映系統當前狀態的目錄列表?我認爲ruby_block
可能是我需要看的,但我不確定如何在這裏應用它。
# Loop over all user folders
Dir.open('/home').each do |user_dir|
next if user_dir.start_with?('.')
link "/home/#{user_dir}/.bash_it" do
to '/home/.bash_it/'
link_type :symbolic
end
template "/home/#{user_dir}/.bashrc" do
source 'bashrc.erb'
owner user_dir
group user_dir
mode '0644'
end
end
你可以不喜歡它添加到/ etc/skel中的框,以便它創造自動作爲添加用戶的一部分? – Doon
ruby_block可能是解決方案yes,定義或提供者,因爲它將在收斂時調用時進行編譯(因此您的dirs已經創建)。 (兩個廚師跑)是另一種方式來實現這 – Tensibai