gpt4 book ai didi

arrays - puppet 。迭代 ERB 中的嵌套哈希

转载 作者:行者123 更新时间:2023-12-02 11:36:50 26 4
gpt4 key购买 nike

我开始使用 puppet (ruby) 进行开发,但遇到以下问题。

我有想要在模板文件中迭代的当前哈希。

$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”的内容来迭代哈希?

提前非常感谢...

最佳答案

您的模板大部分看起来都不错,但这里有一些东西。首先,您可能无法使用句点作为变量名称,但更重要的是,不要忘记用逗号来分隔键/值对:

$database_profile_array = [cpu,sysctl]
$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 -%>

 

编辑:OP,注意其他人留下的评论。如果迭代顺序无关紧要,则不需要单独的数组 $database_profile_array 来引用键,而是可以直接迭代哈希:

<% @database_profile_hash.each do |key, hash| -%>
[<%= key %>]
<% hash.each do |key,value| -%>
<%= key %>=<%= value %>
<% end %>
<% end -%>

此外,-%> erb puppet修剪标记已记录here .

关于arrays - puppet 。迭代 ERB 中的嵌套哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com