Chef
Chef - 多文件動態模板資源
我正在嘗試找到一種方法,將模板資源動態應用於食譜模板文件夾內的文件夾中的所有文件。就像是:
Dir.foreach("../templates/default/shared/") do | file | # This is the wrong line... template "/home/admin/shared/#{file}" do source "shared/#{file}" … end end
我該怎麼做?我試圖避免將此目錄中所有文件的單獨列表作為變數…謝謝。
您的程式碼將在節點的上下文中執行,因此您的 Ruby 程式碼 (
Dir.foreach
) 將需要檢查節點的本地記憶體。在我的 Chef 安裝中,我的 chef-client 配置模板需要本地記憶體路徑,所以我有這個屬性:node[:chef][:cache_path]
.所以:
Dir.foreach("#{node[:chef][:cache_path]}/cookbooks/the_cookbook/templates/default/shared/")
編輯:在現代 Chef 配置中,模板在需要之前不會存在於伺服器上。您需要將其添加到您的client.rb:
no_lazy_load true