Cómo instalar Puppet en Ubuntu 20.04

En la web ya hemos hablado largo y tenido sobre Puppet, un motor de administración, automatización y orquestación de parques informáticos. Ya sean estos con equipos GNU/Linux, UNIX o Windows. Sé que ya no esta tan de moda como otros productos como Ansible, pero yo lo uso cada día en el trabajo, así que allá vamos.

En la entrada de hoy os voy a explicar cómo instalar y configurar de forma inicial un servidor con Ubuntu 20.04, con el rol de master y otro con el rol de cliente. Para esta ocasión he utilizado dos VPS creados en mi proveedor de confianza Clouding.io, ubicada en mi ciudad, Barcelona.

Cómo instalar Puppet en Ubuntu 20.04

1. Pasos previos

Al crear ambas máquinas he habilitado la opción de tener un red interna, para no utilizar las IPs públicas en la comunicación entre los nodos, tal y como se ve en la imagen:

Habilitar la red privada en el panel de Clouding.io

Finalmente, una vez creados los nodos, han quedado así:

  • Nodo Master: servmaster.bitsandlinux.com con IP interna 10.20.10.2
  • Nodo cliente: servnode1.bitsandlinux.com con IP interna 10.20.10.5

Al servidor maestro le he asignado un core de CPU, 20 GB de disco duro y 2 GB de memoria; en cambio, al servidor cliente, le he asignado medio core de CPU, 1 GB de memoria y 10 GB de disco.

Lo primero que haremos en ambos nodos es actualizarlos:

apt update
apt upgrade -y

El siguiente es modificar el fichero /etc/hosts, añadiendo la información de los nodos, para que se resuelvan los nombres:

vim /etc/hosts

Y añadimos:

# Para puppet
10.20.10.2 servmaster.bitsandlinux.com servmaster puppet
10.20.10.5 servnode1.bitsandlinux.com servnode1

Es importante que el servidor maestro también tengo el nombre de «puppet» asignado.

Por último, tenemos que habilitar el puerto 8140, que es que utiliza Puppet en el cortafuegos, en el caso de Clouding.io, quedaría así:

Habilitamos el puerto 8140 en el cortafuegos de Clouding.io

2. Instalar Puppet en el nodo maestro

Nos descargamos la última versión del repositorio de Puppet en el nodo maestro

wget https://apt.puppetlabs.com/puppet6-release-focal.deb

Tal y como se ve en la imagen:

Descargamos la última versión de Puppet para Ubuntu

Una vez descargada instalamos:

dpkg -i puppet6-release-focal.deb

Para muestra un botón:

Instalamos el paquete DEB de puppet

Actualizamos para cazar el nuevo repositorio e instalamos, ahora sí:

apt update
apt install puppetserver -y

Una vez instalado modificamos el fichero de configuración principal de Puppet, ubicado en /etc/default/puppetserver:

vim /etc/default/puppetserver

Y cambios el uso de la memoria que va a utilizar Puppet a 1GB, esto depende de nuestras necesidades:

JAVA_ARGS="-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Quedando así:

Aspecto de la configuración una vez modificada

Guardamos y salimos.

Ahora encendemos el servicio y lo añadimos al arranque:

systemctl start puppetserver
systemctl enable puppetserver

Podemos comprobar su estado:

Comprobamos el estado del servicio

3. Instalar el agente de Puppet en el nodo cliente

Al igual que hemos hecho con el nodo maestro, en el cliente vamos a instalar el repositorio de Puppet:

wget https://apt.puppetlabs.com/puppet6-release-focal.deb
dpkg -i puppet6-release-focal.deb

Actualizamos para tener habilitado el repositorio:

apt update

Instalamos el agente:

apt install puppet-agent -y

Modificamos el fichero de configuración del agente /etc/puppetlabs/puppet/puppet.conf

vim /etc/puppetlabs/puppet/puppet.conf

Indicamos como «certname» el nombre del servidor cliente y como «server» el nombre del servidor maestro:

[main]
certname = servnode1.bitsandlinux.com
server = servmaster.bitsandlinux.com

Guardamos y salimos.

A continuación encendemos el servicio y lo añadimos al arranque:

systemctl start puppet
systemctl enable puppet

Comprobamos el estado del servicio:

systemctl status puppet

Con el resultado en mi caso:

Comprobamos el estado del agente de puppet

4. Firmar el certificado del agente puppet

Primero de todo, desde el servidor cliente, realizamos la primera comunicación con el servidor maestro:

/opt/puppetlabs/bin/puppet agent --test

Con este resultado:

Primera comunicación de puppet con el servidor maestro

Tal y como nos indica, tenemos pendiente firmar el certificado del agente, desde el servidor central.

Pues, nos iremos al servidor maestro, desde allí listamos todos los certificados, los firmados y los por firmar:

/opt/puppetlabs/bin/puppetserver ca sign --all

Con este resultado:

Listamos los certificados

Firmamos el certificado del cliente:

/opt/puppetlabs/bin/puppetserver ca sign --certname servnode1.bitsandlinux.com
Successfully signed certificate request for servnode1.bitsandlinux.com

Una vez hecho esto, comprobamos en el cliente si se conecta correctamente con el cliente:

/opt/puppetlabs/bin/puppet agent --test

Y así vemos que todo ha ido bien y nos hemos descargado el certificado desde el servidor maestro:

Descargamos el certificado desde el servidor maestro

Y así ya lo tendríamos, ahora solo nos falta empezar a desplegar módulos y clases.

Si quieres saber más sobre Puppet, aquí te dejo unos cuantos enlaces a otras entradas:

Puppet, la herramienta para controlarlo todo

Instalar agente Puppet en cliente GNU Linux

Trabajando con Puppet

Creación de módulos en Puppet

Y esto es todo, espero que esta entrada os pueda ser de utilidad en algún momento.