Puppet en 15 minutos.

Introducción

Este post va a ser un breve esquema de como poner en marcha una arquitectura cliente/servidor con Puppet. Va a ser solo unas pinceladas para información más en detalle tenemos la web de puppet o es este libro de James Loope publicado en o’relly.

¿Qué es Puppet?

Puppet es, en poca palabras, un sistema de gestión de la configuración. Lo que nos permite es gestionar los ficheros, configuraciones, software instalado, etc de N máquinas (unix o windows) de una manera similar a como programaríamos. En puppet programamos “manifiestos” que declaran como será la configuración de un servicio, etc.

Es algo realmente útil cuando tenemos varias máquinas y queremos poder gestionarlas de manera centralizada, distribuyendo cambios de configuración entre ellas. Es indispensable en entornos de tipo cloud donde creamos nuevas máquinas y queremos que estas estén listas para funcionar (con una configuración de servidor web, por ejemplo).

¿Cómo funciona?

Aunque puppet se puede usar de manera aislada en una sola máquina (toda la docu de iniciación que encontré al principio describía este uso) su verdadera potencia viene cuando tenemos un puppet maestro y varios puppet cliente (agentes) que consiguen los manifiestos de configuración del maestro.

http://docs.puppetlabs.com/guides/installation.html#debian-and-ubuntu

http://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html#for-debian-and-ubuntu

Instalación del maestro

Instalamos el repo de puppetlabs para tener las últimas versiones:

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

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

sudo apt-get update

Instalamos el maestro:

sudo apt-get install puppetmaster

A que no ha dolido? 😀

Ahora hay que editar un par de ficheros para que nuestro maestro esté en marcha. Vamos a crear un par de manifiestos necesarios para que funcione el maestro. Por defecto puppet master va a leer el manifiesto en el fichero site.pp, pero para se un poco ordenados en este site.pp vamos a decirle que cargue el manifiesto donde definidos todos los agentes y un par de opciones más:

# fichero /etc/puppet/manifests/site.pp

import "nodes"

filebucket { main: server => "masterpuppet.mired.lan" }

# defaults

File { backup => main }

Exec { path => "/usr/bin:/usr/sbin/:/bin:/sbin" }

Ahora debemos crear el manifiesto nodes.pp donde le diremos como configurar cada nodo. De momento solo vamos a crear un nodo “default” el cual se encargar de configurar ntp en el nodo.

#fichero /etc/puppet/manifests/nodes.pp

node base {
include ntp

}

node 'clientepuppet.mired.lan' inherits base {
}

Ya tenemos el maestro listo. Para probarlo vamos a instalar un módulo que nos creará la clase ntp y así probaremos desde un agente. Instalar


cd /etc/puppet/modules
puppet module install puppetlabs-ntp

Instalación del nodo

 

Si tenemos una ubuntu medio actual (12.04 o superior) instalamos desde el repositorio de la propia Ubuntu, sino usamos el mismo sistema para instalar el repo de puppetlabs que hemos visto para el maestro.

Instalamos puppet:

sudo apt-get install puppet

Lanzamos en agente contra el server:


sudo puppet agent --test --server masterpuppet.mired.lan

Fallara por la falta de firma del cert:

info: Creating a new SSL key for clientpuppet.mired.lan
info: Caching certificate for ca
info: Creating a new SSL certificate request for clientpuppet.mired.lan
info: Certificate Request fingerprint (md5): 37:16:56:D5:15:09:E0:A0:DF:B5:73:CF:5A:76:45:54
Exiting; no certificate found and waitforcert is disabled

En el SERVER firmamos el cert del cluente


sudo puppet ca list

Miramos el que esta pendiente y lo firmamos


puppet ca sign clientpuppet.mired.lan

(se puede hacer que autofirme siempre y evitar este paso pero hay que ser consciente de los problemas de seguridad que implica ello).

Ya podemos volvemos al nodo cliente y volvemos a lanzar el agente de puppet.

En la docu de puppet tenemos una explicación de como funciona el agente vs master y un útil “trobleshoot”

http://docs.puppetlabs.com/learning/agent_master_basic.html

Y con eso tenemos lo básico. Ahora tendríamos que empezar a escribir manifiestos 🙂

Marcar el Enlace permanente.

Deja un comentario