Puppet: Instalación y primeros pasos

Puppet, es una herramienta para la gestión de configuraciones de hosts. Esto funciona de la siguiente manera: tu tienes un host maestro con todas las configuraciones y los clientes se conectan a este y cogen la configuración que les toca. De esta forma, podemos tener muchos hosts auto-configurados sin tener que hacerlo uno a uno.

Maestro

Descargar el paquete para cargar los repositorios (dependiendo la versión de linux que se tenga será uno u otro)

cd /tmp/ && wget http://apt.puppetlabs.com/puppetlabs-release-`lsb_release -c -s`.deb

Instalar el paquete descargado

dpkg -i puppetlabs-release-`lsb_release -c -s`.deb

Actualizar los repositorios

aptitude update

Instalar los paquetes necesarios para puppet

aptitude install vim-puppet puppetmaster-passenger ntp etckeeper puppetlabs-apache

Parar el servicio de apache

service apache2 stop

Ahora lo recomendable, es congelar la versión de puppet ya que si se actualiza a una versión mayor puede dar problemas de configuración

Comprobar la versión

puppet help | tail -n 1

Crear el archivo 00-puppet.pref

vim /etc/apt/preferences.d/00-puppet.pref
  Package: puppet puppet-common puppetmaster-passenger
   Pin: version 3.7.*
   Pin-Priority: 501

Borrar los certificados existentes

rm -rf /var/lib/puppet/ssl

Editar el archivo de configuración de puppet

vim /etc/puppet/puppet.conf

Añadir al final del apartado [main] lo siguiente

  certname = masterofpuppets
  dns_alt_names = masterofpuppets,masterofpuppets.ichasco.com

Generar los nuevos certificados para puppet

puppet master --verbose --no-daemonize

[cuando aparezca el siguiente mensaje pulsar CTRL-C]

Notice: Starting Puppet master version 3.7.2

Ver el certificado creado

puppet cert list -all

Iniciar apache

service apache2 start

Nota: Puede que de problemas con los certificados, si es así, sustituirlos por los buenos.

Agente

Descargar el paquete para cargar los repositorios (dependiendo la versión de linux que se tenga será uno u otro)

cd /tmp/ && wget http://apt.puppetlabs.com/puppetlabs-release-`lsb_release -c -s`.deb

Instalar el paquete descargado

dpkg -i puppetlabs-release-`lsb_release -c -s`.deb

Actualizar los repositorios

aptitude update

Instalar los paquetes necesarios para puppet

aptitude install puppet

Ahora lo recomendable, es congelar la versión de puppet ya que si se actualiza a una versión mayor puede dar problemas de configuración

Comprobar la versión

puppet help | tail -n 1

Crear el archivo 00-puppet.pref

vim /etc/apt/preferences.d/00-puppet.pref
  Package: puppet puppet-common
   Pin: version 3.7.*
   Pin-Priority: 501

Editar el archivo de configuración de puppet

vim /etc/puppet/puppet.conf

Borrar la sección de [master] y añadir una sección nueva de [agent]

  [agent]
  server = masterofpuppets.ichasco.com

Reiniciar el servicio

service puppet restart

En el servidor, comprobar que el cliente esté conectado

puppet cert list
 "clientpuppet.ichasco.com" (SHA256) F2:08:D6:8D:31:1A:AF:F9:ED:71:G5:61:4F:D8:6U:B3:C5:EC:4A:5D:16:20:7D:A5:DA:3B:2A:41:64:B2:6F:0F

Firmar el certificado para el cliente. Se puede hacer para un cliente especifico o para todos a la vez

Para todos:

puppet cert sign --all

Para uno en concreto:

puppet cert sign clientpuppet.ichasco.com
Notice: Signed certificate request for clientpuppet.ichasco.com
Notice: Removing file Puppet::SSL::CertificateRequest cliente.ichasco.com at '/var/lib/puppet/ssl/ca/requests/cliente.ichasco.com.pem'

Revocar certificados

puppet cert clean <host_FQDN>

Ver los certificados firmados

puppet cert list --all
+ "clienpuppet.ichasco.com" (SHA256)
F2:08:D6:8D:31:1A:AF:F9:ED:71:G5:61:4F:D8:6U:B3:C5:EC:4A:5D:16:20:7D:A5:DA:3B:2A:41:64:B2:6F:0F
+ "puppet"             (SHA256) C7:13:F4:68:A5:FF:85:EE:F9:B6:EF:63:5F:2D:5D:AC:11:DC:26:45:4F:7F:EE:07:4E:3C:C1:1A:GH:F3:3C:9C (alt names: "DNS:masterofpuppet.ichasco.com", "DNS:puppet")

Habilitar el agente y lanzar una prueba en el cliente

puppet agent --enable
puppet agent --test --server masterofpuppets.ichasco.com

El mensaje que tiene que salir

Info: Caching certificate_revocation_list for ca
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for clientpuppet.ichasco.com
Info: Applying configuration version '1459840778'

Pequeña comprobación para testear que todo está bien, para eso vamos a crear un manifiesto que cree un fichero en el /tmp del agente y que muestre la IP que tiene

Crear el manifiesto

vim /etc/puppet/manifests/site.pp
file {'/tmp/IP-prueba':
  ensure  => present,
  mode    => 0644,
  content => "Direccion IP: ${ipaddress_eth0}.\n",
}

En el agente hay que ejecutar el siguiente comando para que el agente se conecte al maestro

puppet agent --test

Ahora en el agente debería de haberse creado en /tmp un fichero con el nombre IP-prueba.

Extra

Configurar Ruby en UTF-8
vim /usr/share/puppet/rack/puppetmasterd/config.ru
  #FIX UTF-8
  Encoding.default_external = Encoding::UTF_8

Reiniciar apache2

service apache2 restart
Activar vim para puppet
vim-addons -w install puppet
Puppet master no recibe los certificados para firma

En el servidor comprobar que puppet master está funcionando

puppet master

En el agente forzar la petición de firmado

puppet agent --server masterofpuppets.ichasco.com --waitforcert 60 --test

 

Fuente:
https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *