Puppet

De Astillas.net

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


Enlaces y referencias

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.

  1. El cliente se conecta por primera vez con el servidor para lo cual crea un CSR que envía al servidor para su firma.
  2. El administrador del sistema tiene que autorizar la firma del certificado cliente en el servidor.
  3. 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'