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
不能包含 parameters
,resource
不理解。在您的示例中,port
无法使用 user
资源,因为它不理解该参数。
希望这对您有所帮助。
Puppet 4 提供了 built-in functions 用于遍历聚合值,以及新的、类似于 Ruby 的语法。当启用未来的解析器时,这些也可以在足够新的 Puppet 3 版本中使用。如果您正在使用这样的 Puppet,您可以这样解决问题:
each($environments) |$e| {
foo { $e['name']: port => $e['port'] }
}
我有一组二维配置变量:
$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
不能包含 parameters
,resource
不理解。在您的示例中,port
无法使用 user
资源,因为它不理解该参数。
希望这对您有所帮助。
Puppet 4 提供了 built-in functions 用于遍历聚合值,以及新的、类似于 Ruby 的语法。当启用未来的解析器时,这些也可以在足够新的 Puppet 3 版本中使用。如果您正在使用这样的 Puppet,您可以这样解决问题:
each($environments) |$e| {
foo { $e['name']: port => $e['port'] }
}