試圖輸出的與廚師語法
node['a'] = {:b "1" :c "2"}
通過這樣的內容ERB文件:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
產生這樣的:
a:
b: 1
c: 2
但不能完全肯定正確的語法對紅寶石,廚師和erb來說這是新鮮事。
試圖輸出的與廚師語法
node['a'] = {:b "1" :c "2"}
通過這樣的內容ERB文件:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
產生這樣的:
a:
b: 1
c: 2
但不能完全肯定正確的語法對紅寶石,廚師和erb來說這是新鮮事。
好吧,讓我們回過頭來。首先,您通常不希望直接在模板中引用節點屬性。在某些情況下,像從Ohai到來屬性也可以是沒關係,速記,但對於重要的數據我也想通過它在通過variables
屬性是這樣的:
template '/etc/whatever.conf' do
source 'whatever.conf.erb'
variables a: node['a']
end
有了到位,現在,我們已經暴露數據作爲模板變量。第二個改進就是讓Ruby完成生成YAML的繁重工作。我們可以用.to_yaml
方法在模板中做到這一點:
<%= @a.to_yaml %>
這應該是所有你需要的!
感謝您的幫助。不幸的是,它必須通過直接在模板中引用節點屬性來完成。有沒有辦法直接在模板中做到這一點?我認爲我的語法不太正確。再次感謝您的幫助。 –
當然,你可以用同樣的方法做'<%= node ['a']。to_hash.to_yaml%>'但我們不推薦它,因爲它會導致難以維護的食譜。 – coderanger
謝謝,我不完全理解。這是我的.yml.erb文件中的一個例子:d:<%= node ['d']%>(其中node ['d'] ='5'),我需要做類似的事情.yml.erb文件可以讓我取出node ['a'] = {:b「1」:c「2」}的值。我正在努力如何訪問:b和:c。謝謝 –
您是否正在嘗試爲配置文件生成Yaml? – coderanger
@coderanger是的。謝謝 –