嗨,我想要一些关于如何在木偶中的 erb 中编码的帮助,基本上我有
server::actionhost { 'details':
servername[ 'felix', 'washington', ],
ipa [ '192.168.43.5', '192.168.43.11', ],
enviro [ 'prod', 'uat', ],
}
Run Code Online (Sandbox Code Playgroud)
我现在想将其打印到一个文件中,其中每个数组中的每个元素都在一行中,即我的类中模板文件的输出应该是这样的:
felix 192.168.43.5 prod
washington 192.168.43.11 uat
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我在模板文件中编写了以下代码:
<% servername.each do |name| -%>
<% ipa.each do |ip| -%>
<% enviro.each do |env| -%>
<%= name %> <%= ip %> <%= env %>
<% end -%>
<% end -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
但我得到的是多次递归打印,而不是每个数组的打印,然后移动到下一个数组元素。
我正在考虑 for 循环,但不确定如何获取数组长度作为 for 循环的参数,希望得到一些有关如何完成正确输出的指导吗?
我试过做这样的事情,但它在木偶运行时失败了?
<% for id in servername.length %>
<%= servername[id] %> <%= ipa[id] …Run Code Online (Sandbox Code Playgroud) 我将散列传递给像这样的定义:
节点.pp
net::addr { 'routes':
ipr => {
ipr1 => {
address => '192.168.34.38',
netmask => '255.255.255.0',
gateway => '192.168.34.1',
dev => 'eth3',
},
ipr22 => {
address => '10.1.5.33',
netmask => '255.255.255.0',
gateway => '10.1.5.1',
dev => 'eth2',
},
}
}
Run Code Online (Sandbox Code Playgroud)
地址文件
define net::addr (
$routes={},
)
{
if ($num != "") {
$iname=${routes[route${num}][dev]}
$num+1
}
else{
$num=0;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是定义一个名为 iname 的变量并将其设置为每个哈希元素下的 dev,所以在迭代 1 我希望 dev 设置为 eth3,它对应于“ipr1”元素,在下一次迭代中我是iname 设置为 eth2 等等。
我正在努力做到这一点,因为每次我的 num 变量一直未定义,然后最终被设置为 0,有人可以提出解决这个问题的方法或更智能的解决方案吗?
如何访问人偶清单中数组的元素,即创建 for/while 循环?假设我在我的 nodes.pp 中有
Name [ 'testserver', 'floor1', 'floor3' ],
Run Code Online (Sandbox Code Playgroud)
如何迭代它,以便在定义文件资源时可以迭代每个并确保每个元素都存在正确的文件资源?
谢谢丹