Tengo un par de cientos de servidores únicos que tienen diferentes archivos de configuración que deben estar presentes en un directorio. Las copias de los archivos residen en el titiritero.
Dentro de una de mis clases tengo un conjunto predeterminado de configuraciones que siempre se envían al nodo, así:
file { "/etc/someprogram/config/000-default":
ensure => "present",
owner => "root",
group => "root",
mode => 0764,
source => "puppet:///modules/someprogram/000-default",
}
Lo que me gustaría tener es algo como esto:
$filearray = directory listing of /etc/puppet/modules/someprogram/files/$fqdn
with each file as an element into array
$filearray.each(
file { "/etc/someprogram/config/$filename":
ensure => "present",
owner => "root",
group => "root",
mode => 0764,
source => "puppet:///modules/someprogram/files/$fqdn/$filename",
}
)
No estoy muy familiarizado con las marionetas, pero tengo la impresión de que no hay forma de hacerlo.
recurse => true
en elfile
tipo), en lugar de declarar cada archivo como un recurso separado?Respuestas:
Puedes hacer lo que estás intentando con esto:
Esto copiará todos los archivos en $ fqdn a / etc / someprogram / config, sobrescribiendo si ya existen.
fuente
recurse => remote
si el directorio en cuestión tendrá archivos locales que no son empujados por el servidor de marionetas.Si desea definir varios archivos en un directorio sin recurrir a todo el directorio, puede usar una matriz, como esta:
Por supuesto, con rutas largas a "/ my / dir" o muchos archivos, sería un poco difícil de manejar, por lo que en ese caso sería mejor crear una definición que incluyera la ruta del directorio, y simplemente pasar la matriz de nombres de archivo a la misma.
fuente
alias
conjunto en el archivo: /$name
aquí. Eso solo funciona si es un tipo definido.Aquí hay un ejemplo de cómo hago esto:
En el ejemplo anterior, estoy asignando el planificador de E / S de fecha límite a cada uno de los discos en un servidor determinado a través de Puppet.
fuente