Crear un archivo con Puppet con datos de múltiples hosts

Crear un archivo con Puppet con datos de múltiples hosts

Estoy intentando que Puppet cree un archivo de configuración similar a este:

[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)

Básicamente, este archivo necesita una entrada para cada nodo que incluya la clase apt-dater. He estado experimentando con recursos exportados, pero no puedo encontrar una forma clara de combinarlos. ¿Cómo debo hacer para crear este archivo?

Respuesta1

Supongo que ya comprende los principios de exportación y recopilación de recursos de tipo individual. Simplemente no sé cómo traducir estos recursos individuales en un solo archivo. Puppet tiene dos métodos para hacer esto:

Augeas es una herramienta muy inteligente, pero puede resultar compleja si tienes que empezar a escribir y distribuir tus propios lentes. Sin embargo, puppet-concates muy sencillo de entender. No he probado la sintaxis de lo siguiente, pero debería ponerte en el camino correcto:

# apt-dater/manifests/server.pp
class apt-dater::server {
    file { "/somepath/apt-dater/hosts.conf": }
    concat::fragment{ "apt-dater_hosts_header":
        content => "[All]\nHosts=",
        order   => 1,
    }
    Apt-dater::Client <<| |>>
}

# apt-dater/manifests/defines/register.pp
define apt-dater::register($order=10) {
    concat::fragment{ "apt-dater_hosts_$name":
        target  => "/somepath/apt-dater/hosts.conf",
        content => "apt-dater@${name};",
    }
}

# apt-dater/manifests/client.pp
class apt-dater::client {
    @apt-dater::register{ "$hostname": }
}

Luego configure los nodos:

# On the central server.
include apt-dater::server

# On each of the client nodes.
include apt-dater::client

información relacionada