Não há como fazer um loop no sentido tradicional, mas você provavelmente ainda pode conseguir o que está procurando. Uma matriz, quando usada como um título de recurso, será expandida automaticamente.
Então, para um caso simples, você teria apenas uma matriz como
$packages = [ 'httpd', 'mysql', 'puppet' ]
Em seguida, use isso em um recurso, como:
package { $packages:
ensure => installed,
}
Para casos mais complicados, você pode usar um tipo definido. Não tenho certeza de onde você está indo com o seu exemplo - deixe-me saber se isso não faz sentido para o seu caso de uso.
Digamos, por exemplo, que você esteja enviando uma matriz de [ 'testserver', 'floor1', 'floor3' ]
e o que você precisa fazer com essa lista é criar um arquivo em /etc/foo/testserver
(para o primeiro elemento) e, em seguida, executar uma exec
para configurar algo assim que for feito.
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}"],
}
}
Em seguida, usando a matriz no título do tipo definido, ela será expandida, criando os recursos de arquivo e exec para cada membro da matriz.
$names = [ 'testserver', 'floor1', 'floor3' ]
datafiles { $names: }