0
我开始在puppet(ruby)中开发,并且遇到以下问题。木偶。在ERB中迭代嵌套散列
我有我想要在模板文件中迭代的当前散列。
$database_profile_hash =
{
cpu => {
governor => ondemand
energy_perf_bias => powersave
}
sysctl => {
kernel.sched.min.granularity.ns => 10000000
kernel.sched.wakeup.granularity.ns => 15000000
kernel.msgmnb => 6
}
...
}
而且我现在的模板是:
<% @database_profile_array.each do |arrayValue| %>
[<%= arrayValue %>]
<% database_profile_hash[arrayValue].each do |key,value| %>
<%= key %> <%= value %>
<% end %>
<% end %>
要重复我试图用一个数组来存储所有的第一级别名称,然后用它来遍历哈希数组:
$ database_profile_array = [CPU,sysctl的,...]
但我不能让它工作,我在寻找这样一个出口:
[cpu]
governor=ondemand
energy_perf_bias=powersave
[sysctl]
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
kernel.nmi_watchdog=0
我在模板中做错了什么?有一种方法可以传递变量“arrayValue”的内容来迭代散列?
感谢很多提前...
另请注意,您不一定需要单独的顶级密钥阵列。您可以遍历顶级哈希以获取这些密钥及其关联的哈希(值)。单独的数组仅适用于要指定节的显示顺序或要选择顶级键的外部引导子集的情况。 –
RE回答:你可能想提及' - %>'是因为Puppet ERB修剪模式是'-'。 RE评论:他也可以使用来自'puppetlabs-stdlib'的'keys'自动生成该数组。 –
@JohnBollinger非常好的一点,编辑我的答案,包括你的提示。谢谢! – drewyupdrew