erb:迭代哈希数组

时间:2017-06-10 15:21:53

标签: arrays hash puppet erb

我在木偶中有hiera数据,如下所示:

myservers:
  - serverA:
      propertyA: valueA
      propertyB: valueB
      propertyC: valueC
  - serverB:
      propertyA: valueD
      propertyB: valueE

此数据中的配置文件应打印出来:

serverA:  PropertyA: valueA ; propertyB: valueB ; propertyC: valueC
serverB:  PropertyA: valueD ; propertyB: valueE

我试图通过迭代哈希数组来将它放在erb模板中,但无法正确格式化。

<% myservers.each do |server| -%>
<%= server -%>: <%= server.each do |k,v| -%> <%= k -%>: <%= v -%> ;
<% end %>
<% end -%>

1 个答案:

答案 0 :(得分:1)

我相信你的意思是:

<% @myservers.each do |server| -%>
<% server.keys.each do |s| -%>
<%= s %>: <% server[s].each do |k,v| -%><%= k -%>: <%= v -%> ;<% end %>
<% end -%>
<% end -%>

或许(如果你知道每个数组元素只包含一个服务器,如你的例子中所示):

<% @myservers.each do |server| -%>
<%= server.keys[0] %>: <% server[server.keys[0]].each do |k,v| -%><%= k -%>: <%= v -%> ;<% end %>
<% end -%>

用语言来说,你正在将哈希哈希数组作为一个哈希数组来处理。

此外,Puppet清单中的变量在ERB模板中显示为实例变量,因此@。请参阅here