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:
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í:
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:
Una vez descargada instalamos:
dpkg -i puppet6-release-focal.deb
Para muestra un botón:
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í:
Guardamos y salimos.
Ahora encendemos el servicio y lo añadimos al arranque:
systemctl start puppetserver
systemctl enable puppetserver
Podemos comprobar su estado:
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:
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:
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:
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:
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
Y esto es todo, espero que esta entrada os pueda ser de utilidad en algún momento.