我如何访问木偶清单中的数组元素,即创build一个for / while循环? 比方说,我在我的nodes.pp
Name [ 'testserver', 'floor1', 'floor3' ],
我如何迭代,以便当我定义我的文件资源时,我可以遍历每个,并确保每个元素存在正确的文件资源?
谢谢丹
传统意义上没有办法做一个循环,但你可能仍然可以实现你要做的事情。 当用作资源标题时,数组将自动展开。
所以对于一个简单的例子,你只需要一个数组就可以了
$packages = [ 'httpd', 'mysql', 'puppet' ]
然后在资源中使用,如:
package { $packages: ensure => installed, }
对于更复杂的情况,您可以使用定义的types。 我不太清楚你要用你的例子去哪里 – 让我知道这是否对你的用例没有意义。
[ 'testserver', 'floor1', 'floor3' ]说,你发送一个[ 'testserver', 'floor1', 'floor3' ]的数组,你需要做的是在/etc/foo/testserver上创build一个文件对于第一个元素),然后运行一个exec来设置一旦完成。
define datafiles { file { "/etc/foo/${title}": ensure => present, content => $title, } exec { "setup-${title}": command => "/usr/local/bin/something -a /etc/foo/${title}", require => File["/etc/foo/${title}"], } }
然后,使用定义types的标题中的数组将扩展它,为数组的每个成员创build文件和exec资源。
$names = [ 'testserver', 'floor1', 'floor3' ] datafiles { $names: }