我正在嘗試爲文件創建一個Puppet ERB模板,其中包含一些默認內容和一個可選尾部。可選部分由Ppuppet客戶端的主機名/ FQDN確定,不需要存在。目前,我有這個:如何在Puppet ERB模板中有選擇地包含文件?
<%= scope.function_file(['mod/default']) %>
<%= scope.function_file(["mod/" + @hostname, "mod/" + @fqdn, 'mod/empty']) %>
mod
是模塊名稱。我必須創建一個空的mod/files/empty
,以便scope.function_file
不會因爲主機名或FQDN找到文件而失敗。我覺得這很醜陋。
我已經試過的變化:
<%= File.read('default') %>
<% if File.file?(@hostname) %>
<%= File.read(@hostname) %>
<$ elsif File.file?(@fqdn) %>
<%= File.read(@fqdn) %>
<& end %>
隨着放置在mod/templates
目錄而不是mod/files
文件,但我通常得到一個錯誤丟失的文件。使用scope.function_template
與mod/templates
中的文件也有與scope.function_file
相同的問題 - 如果文件丟失,操作將失敗。
我該怎麼做,而不必創建佔位符文件(如empty
這裏)?
@MattSchuchard請不要張貼廢話。你的回答根本沒有提供任何可行的方法。木偶解決方案是受歡迎的,只要你真的有一個。你說「這是錯誤的道路」,而沒有真正解釋爲什麼它是錯誤的道路。 – muru