迭代 Puppet 模板中的资源

迭代 Puppet 模板中的资源

所以我有一个包含多个资源的 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 邮件列表中询问了这个问题,我们会看看他们是否会回复我。作为参考,请查看这个帖子

相关内容