Chef

Chef - 多文件動態模板資源

  • December 2, 2014

我正在嘗試找到一種方法,將模板資源動態應用於食譜模板文件夾內的文件夾中的所有文件。就像是:

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

引用自:https://serverfault.com/questions/460442