Невозможно создать цикл в традиционном смысле слова, но вы, вероятно, все равно сможете достичь того, чего собираетесь. Массив, когда он используется в качестве заголовка ресурса, будет автоматически расширен.
Итак, в простом случае у вас будет просто массив типа
$packages = [ 'httpd', 'mysql', 'puppet' ]
Затем используйте его в ресурсе, например:
package { $packages:
ensure => installed,
}
Для более сложных случаях вы можете использовать определенный тип. Я не совсем уверен, куда вы идете со своим примером - дайте мне знать, если это не имеет смысла для вашего варианта использования.
Скажем, например, вы отправляете массив [ 'testserver', 'floor1', 'floor3']
и что вам нужно сделать с этим списком, так это создать файл по адресу / etc / foo / testserver
(для первого элемента) , затем запустите 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}"],
}
}
Затем использование массива в заголовке определенного типа расширит его, создав ресурсы файла и exec для каждого члена массива.
$names = [ 'testserver', 'floor1', 'floor3' ]
datafiles { $names: }