Puppet
Estas son notas que voy tomando mientras instalo y configuro Puppet en la red de mi empresa.
Versión |
2.7.18 |
Página principal |
http://projects.puppetlabs.com/projects/puppet |
Observaciones |
Gestión centralizada de máquinas en una red |
Sumario
Enlaces y referencias
- Libros:
- Libro: Pro Puppet de James Turnbull; Jeffrey McCune
- Libro: Pulling Strings with Puppet de James Turnbull
- Tutoriales y referencias:
- Recetas y trucos varios:
Recetario
¿ Cómo se verifica la síntaxis de la configuración ?
¿ Es posible forzar una actualización de un nodo desde el servidor ?
Instalación
Tal y como recomiendan los desarrolladores lo idóneo es que el servidor y los clientes tengan todos la misma versión. He tenido que emplear en el servidor la versión backport para que todos estén a la par.
- En el servidor instalar vía apt:
- Definir un registro CNAME en el servidor de nombres para el servidor maestro:
puppet.empresa.net
Configuración
En el servidor
Los archivos de configuración están en formato INI y -a partir de la versión 2.6- divididos en secciones cuyo nombre define a qué se aplica su contenido.
Creamos una configuración inicial con el programa puppetmasterd:
# puppetmasterd --genconfig > /etc/puppet/puppet.conf
Nos aseguramos de que los siguientes valores estén en la configuración del servidor en /etc/puppet/puppet.conf
:
# Nombre completo del servidor
certname=puppet.empresa.net
En el cliente
El cliente también necesita la siguiente configuración en /etc/puppet/puppet.conf
:
[main]
server = puppet.empresa.net
Puesta en marcha
Una vez que el servidor está en funcionamiento (en Debian con invoke-rc.d puppetmaster start
) el siguiente paso es conectar nodos. El mecanismo habitual consiste en emplear conexiones cifradas entre agentes y servidor para lo que es necesario reconocer antes firmas digitales.
- El cliente se conecta por primera vez con el servidor para lo cual crea un CSR que envía al servidor para su firma.
- El administrador del sistema tiene que autorizar la firma del certificado cliente en el servidor.
- El servidor envía el certificado firmado al cliente y asegura la conexión entre ambos.
En el cliente llamado sarajevo:
# puppet agent --server=puppet.empresa.net --no-daemonize --verbose info: Creating a new SSL key for sarajevo.empresa.net info: Caching certificate for ca info: Creating a new SSL certificate request for sarajevo.empresa.net info: Certificate Request fingerprint (md5): 4E:2D:B5:3F:DC:FE:22:62:CB:E8:CF:1C:3A:B0:DE:22 ... info: Caching certificate for sarajevo.empresa.net notice: Starting Puppet client version 2.7.18 info: Caching certificate_revocation_list for ca info: Caching catalog for sarajevo.empresa.net info: Applying configuration version '1346406332' info: Creating state file /var/lib/puppet/state/state.yaml notice: Finished catalog run in 0.10 seconds ...
Mientras que en el servidor hemos revisado la petición de firma con:
# puppet cert --list "sarajevo.empresa.net" (4E:3D:B5:3F:DC:FE:22:62:FB:E8:CF:1C:3A:B0:DE:22)
y a continuación la hemos firmado con:
# puppet cert --sign sarajevo.empresa.net notice: Signed certificate request for sarajevo.empresa.net notice: Removing file Puppet::SSL::CertificateRequest sarajevo.empresa.net at '/etc/puppet/...pem'