所以我有一个包含多个资源的 Puppet 清单
class foo {
Custom::Resource {'resource1':
attr1 => 'val1',
attr2 => 'val2',
}
Custom::Resource {'resource2':
attr1 => 'val3',
attr2 => 'val4',
}
Custom::Resource {'resource3':
attr1 => 'val5',
attr2 => 'val6',
}
}
如果我想循环遍历 .erb 模板中在 foo 类中定义的 Custom::Resource 资源名称,我该如何访问它们?因此,如果我想写出如下所示的模板:
ThisLine = resource1
ThisLine = resource2
ThisLine = resource3
答案1
如果您仍然想知道,我找到了如何在没有任何附加模块的情况下迭代 Puppet 模板内的资源的方法。下面是一个例子,其中我有一个定义规则类型 (firewall::rule) 的防火墙模块。我想迭代模板中该类型的所有实例,因此我使用:
<% scope.compiler.catalog.vertices.each do |resource| -%>
<% if resource.type == "Firewall::Rule" -%>
# <%= resource[:comment] %>
<% end -%>
<% end -%>
中间那行“resource[:comment]”不起作用,我仍在尝试弄清楚那部分。我在 puppet 邮件列表中询问了这个问题,我们会看看他们是否会回复我。作为参考,请查看这个帖子。