Puppet 2D 迭代

Puppet 2D Iteration

我有一组二维配置变量:

$environments = [
  {
    'name' => 'foo',
    'port' => '1234',
  },
  {
    'name' => 'bar',
    'port' => '4321',
  },
]

是否可以遍历数组并使用内部数组中的变量。例如。我想为每个名字创建一个用户帐户。

# How to get each name?
user { $environment:
  ensure => 'present'
}

我从来没有真正使用过 puppet 中的迭代。

但是要从 hash(注意 hash 而不是 array)创建多个资源,您可以使用 create_resources()函数。

documentation有一个很好的例子。

您的 hash 不能包含 parametersresource 不理解。在您的示例中,port 无法使用 user 资源,因为它不理解该参数。

希望这对您有所帮助。

Puppet 4 提供了 built-in functions 用于遍历聚合值,以及新的、类似于 Ruby 的语法。当启用未来的解析器时,这些也可以在足够新的 Puppet 3 版本中使用。如果您正在使用这样的 Puppet,您可以这样解决问题:

each($environments) |$e| {
  foo { $e['name']: port => $e['port'] }
}