我想迭代一个存储为Facter事实的数组,并为数组的每个元素创建一个新的系统用户和一个目录,最后对AWS进行API调用.
事实的例子: my_env => [shared1,shared2,shared3]
我的问题是如何迭代木偶中的数组?
我已经尝试过Ruby DSL,但还没有成功让它工作......谢谢!
its*_*uce 71
这可能会有效,具体取决于您正在做什么
# Assuming fact my_env => [ shared1, shared2, shared3 ]
define my_resource {
file { "/var/tmp/$name":
ensure => directory,
mode => '0600',
}
user { $name:
ensure => present,
}
}
my_resource { $my_env: }
Run Code Online (Sandbox Code Playgroud)
如果您的要求很简单,它将起作用,如果没有,Puppet很难做到这一点.基于对声明性语言如何工作的误解,Puppet开发人员对迭代有不合理的偏见.
如果这种资源不适合您,也许您可以更好地了解您尝试从阵列中设置哪些资源属性?
编辑:
随着Puppet 4,这个可悲的缺陷终于被修复了.目前的情况记录在这里.正如文档所述,您将在许多旧代码中找到上述解决方案的示例.
小智 21
从puppet 3.2开始,可以使用"future"解析器,如下所示:
$my_env = [ 'shared1', 'shared2', 'shared3', ]
each($my_env) |$value| {
file { "/var/tmp/$value":
ensure => directory,
mode => 0600,
}
user { $value:
ensure -> present,
}
}
Run Code Online (Sandbox Code Playgroud)
另见:http://docs.puppetlabs.com/puppet/3/reference/lang_experimental_3_2.html#background-the-puppet-future-parser