meaning - puppet que es
Cómo iterar sobre un array en Puppet (5)
A partir del títere 3.2, esto es posible utilizando el analizador "futuro" de la siguiente manera:
$my_env = [ ''shared1'', ''shared2'', ''shared3'', ]
each($my_env) |$value| {
file { "/var/tmp/$value":
ensure => directory,
mode => 0600,
}
user { $value:
ensure -> present,
}
}
Ver también: http://docs.puppetlabs.com/puppet/3/reference/lang_experimental_3_2.html#background-the-puppet-future-parser
Me gustaría iterar sobre una matriz que se almacena como un hecho de Facter, y para cada elemento de la matriz crear un nuevo usuario del sistema y un directorio, y finalmente hacer llamadas API a AWS.
Ejemplo del hecho: my_env => [shared1,shared2,shared3]
¿Mi pregunta es cómo iterar sobre una matriz en títere?
He probado el DSL de Ruby, pero aún no lo he conseguido para que funcione ... ¡Gracias!
Esto podría funcionar, dependiendo de lo que estés haciendo
// Assuming fact my_env => [ shared1, shared2, shared3 ]
define myResource {
file { "/var/tmp/$name":
ensure => directory,
mode => 0600,
}
user { $name:
ensure => present,
}
}
myResource { $my_env: }
Funcionará si sus requisitos son simples, si no, Puppet hace que esto sea muy difícil de hacer. Los desarrolladores de Puppet tienen prejuicios irracionales contra la iteración basados en un malentendido sobre cómo funcionan los lenguajes declarativos.
Si este tipo de recurso no funciona para usted, ¿quizás podría dar una mejor idea de qué propiedades de recursos está tratando de establecer desde su matriz?
EDITAR:
Con Puppet 4, este defecto lamentable fue finalmente arreglado. Estado actual de los asuntos documentados here . Como dice la documentación, encontrará un ejemplo de la solución anterior en un montón de código antiguo.
Hay una función "create_resources ()" en títere. Eso será muy útil al iterar sobre la lista de itmes
La respuesta de itsbruce es probablemente la mejor por ahora, pero hay una propuesta de iteración que está pasando por el proceso de armaduras de Puppetlabs para una posible implementación en el futuro.
Puppet 3.7 lanzado a principios de este mes tiene el nuevo DSL, cuya función es la iteración, verifique la siguiente URL https://docs.puppetlabs.com/puppet/latest/reference/experiments_lambdas.html#enabling-lambdas-and-iteration
estas nuevas características se pueden habilitar con el:
Configurando analizador = futuro en su archivo puppet.conf o agregando el interruptor de línea de comando --parser = futuro
Espero que ayude