Cómo instalar el servidor y el agente de Puppet en Debian 11

Puppet es una herramienta de gestión de configuración y automatización centralizada. DevOps crea la gestión de la configuración para desplegar servidores y aplicaciones, y toda la configuración para la automatización se almacena en el «Servidor Puppet» central. Después, los nodos «Agente» sacarán una nueva configuración del «Servidor Puppet» y aplicarán el estado definido.
Todas las conexiones entre el «Servidor Puppet» y los nodos «Agente» están encriptadas por defecto usando un certificado SSL/TLS. Puppet utiliza un Lenguaje Específico de Dominio (DSL) para describir la configuración del sistema, y es similar a la sintaxis de Ruby.
En esta guía, instalará y configurará el servidor y el agente de Puppet en Debian 11 Bullseye. Instalarás el servidor Puppet en el servidor con el nombre de host ‘puppet-server’ y el agente Puppet en el servidor con el nombre de host ‘agent’. Al final, creará los primeros manifiestos de Puppet para instalar la pila básica de LEMP en el nodo ‘agent’.
Requisitos previos
- Necesitará dos servidores diferentes de Debian 11.
- El ‘puppet-server’ con la dirección IP ‘192.168.5.100‘ y el fqdn ‘puppet-server.localdomainl.lan‘.
- El ‘agent.node con la dirección IP ‘192.168.5.150‘ y el fqdn ‘agent.localdomain.lan‘.
- Además, necesitarás el usuario root o con privilegios de root/sudo.
Configurar el FQDN
En primer lugar, configurará el nombre de dominio completo (FQDN) y el archivo ‘/etc/hosts’ tanto en ‘puppet-server’ como en ‘agent’. Esto asegurará que ambos servidores puedan comunicarse con el nombre de dominio local.
Para configurar el FQDN, ejecute el comando ‘hostnamectl’ que aparece a continuación.
Ejecute el siguiente comando para configurar el fqdn ‘puppet-server.localdomain.lan‘ en el archivo ‘marioneta-servidor‘.
hostnamectl set-hostname puppet-server.localdomain.lan
Ejecute el siguiente comando para configurar el fqdn ‘agent.localdomain.lan‘ en el ‘agente‘ nodo.
hostnamectl set-hostname agent.localdomain.lan
A continuación, edite el archivo ‘/etc/hosts’ utilizando el editor vim como se indica a continuación.
sudo vim /etc/hosts
Copie y pegue la siguiente configuración.
192.168.5.100 puppet-server.localdomain.lan 192.168.5.150 agent.localdomain.lan
Guarde el archivo y salga.
Por último, ejecute el comando ‘ping’ que se muestra a continuación para verificar la conexión entre el servidor ‘puppet-server‘ y ‘agente‘.
ping puppet-server.localdomain.lan -c3 ping agent.localdomain.lan -c3
Si su configuración es correcta, verá la siguiente salida. El mensaje ‘puppet-server.localdomain.lanse resuelve en el servidor ‘192.168.5.100‘, y el agent.localdomain.lan‘ se resuelve en el nodo agente ‘192.168.5.150‘.
Añadiendo el repositorio de Puppet
Por defecto, Puppelabs proporciona paquetes de repositorio para diferentes distribuciones de Linux, incluyendo la última Debian 11 Bullseye. En este paso, añadirá e instalará el repositorio de Puppet tanto en ‘puppet-server’ como en ‘agent’. En el momento de escribir este artículo, la última versión de Puppet es la v7.x.
Descargue el paquete del repositorio utilizando el comando ‘wget’ que aparece a continuación.
wget https://apt.puppet.com/puppet7-release-bullseye.deb
A continuación, instale el archivo deb ‘puppet7-release-bullseye.deb’ utilizando el comando ‘dpkg’ que aparece a continuación.
sudo dpkg -i puppet7-release-bullseye.deb
Una vez completada la instalación, ejecute el siguiente comando ‘apt’ para actualizar y refrescar el índice de paquetes de Debian.
sudo apt update
Ahora está listo para instalar los paquetes de Puppet.
Instalación del servidor Puppet
En este paso, se instalará el paquete del servidor Puppet en el ‘puppet-server’. En el momento de escribir este artículo, la última versión de Puppet es la v7.Advertisement
Para instalar Puppet Server, ejecute el siguiente comando apt. Este comando también instala automáticamente otros paquetes como Java OpenJDK.
sudo apt install puppetserver
Escriba ‘Y‘ para confirmar la instalación.
Una vez completada la instalación, tendrá que cargar el entorno bash para el Servidor Puppet.
Por defecto, Puppet almacena su archivo binario en el directorio ‘/opt/puppetlabs/bin’. Ejecute el siguiente comando para aplicar la nueva variable de entorno ‘$PATH’ para Puppet Server.
source /etc/profile.d/puppet-agent.sh echo $PATH
Opcionalmente, también puede aplicar la variable de entorno ‘$PATH’ ejecutando el siguiente comando.
echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc source ~/.bashrc
Ahora verifique la variable de entorno ‘$PATH’ utilizando el siguiente comando. Asegúrese de que el directorio ‘/opt/puppetlabs/bin’ está en la lista de la variable de entorno ‘$PATH’.
echo $PATH
Despues de esto, puede ejecutar el comando ‘puppetserver’ normalmente. A continuación puede comprobar la versión de Puppet.
puppetserver -v
Debería obtener una salida similar a la captura de pantalla de abajo.
A continuación, edite la configuración del servidor Puppet ‘/etc/default/puppetserver’ utilizando el editor vim.
sudo vim /etc/default/puppetserver
Cambie la asignación de memoria máxima para el servidor de Puppet. Depende de la memoria de su sistema. En esta guía, tenemos 2GB de memoria y asignaremos para el servidor de Puppet 1GB. Y usaremos la siguiente configuración.
JAVA_ARGS="-Xms1g -Xmx1g"
Guarde el archivo de configuración y salga.
A continuación, recargue el gestor systemd para aplicar el nuevo archivo de servicio de Puppet.Advertisement
sudo systemctl daemon-reload
Luego inicie y habilite el servicio ‘puppetserver’ usando el siguiente comando.
sudo systemctl start enable --now puppetserver
El servicio ‘puppetserver’ debería estar en funcionamiento. Ejecute el siguiente comando para verificar el ‘puppetserver’.
sudo systemctl status puppetserver
Debería ver una salida similar a la captura de pantalla que aparece a continuación.
Adicionalmente, si está usando un firewall UFW en su sistema, asegúrese de abrir el puerto ‘8140’ que será usado por el Servidor Puppet.
Ejecute el siguiente comando para aliar cualquier conexión entrante desde la subred local ‘192.168.5.0/24’ al Servidor Puppet en el puerto ‘8140’.
sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140 sudo ufw status
Abajo estan las reglas del firewall de UFW que deberia ver.
Configuración del Servidor Puppet
En este paso, usted editará la configuración del Servidor Puppet. Y esto se puede hacer editando la configuración de Puppet directamente o generando la configuración usando la línea de comandos ‘puppet’.
Ejecute los comandos ‘puppet’ que aparecen a continuación para configurar el Servidor Puppet. Esto será la configuración del nombre de dominio del Servidor Puppet por defecto y el intervalo de ejecución en el directorio ‘principal‘, y el entorno y dns_alt_names en la sección ‘servidor‘.
puppet config set server puppet-server.localdomain.lan --section main puppet config set runinterval 1h --section main
puppet config set environment production –section server
puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan –section server
Ahora compruebe la configuración del Servidor Puppet ‘/etc/puppetlabs/puppet/puppet.conf’ usando el comando ‘cat’ que aparece a continuación.
cat /etc/puppetlabs/puppet/puppet.conf
Deberá ver la configuración del Servidor de Puppet como se indica a continuación.
Por último, reinicie el servicio ‘puppetserver’ para aplicar una nueva configuración ejecutando el comando ‘systemctl’ que aparece a continuación.
sudo systemctl restart puppetserver
En este punto, usted ha completado la instalación y configuración del Servidor Puppet.
Instalar y configurar el Agente de Puppet
En este paso, instalará y configurará el Agente Puppet en el equipo cliente ‘agente‘.
Antes de instalar Puppet Agent, asegúrese de que ha completado la configuración del FQDN y ha añadido el repositorio de Puppet.
Ahora vamos a instalar y configurar el Puppet Agent.
Instale el paquete ‘puppet-agent’ usando el comando apt que aparece a continuación.
sudo apt install puppet-agent
Una vez completada la instalación, ejecute el siguiente comando para iniciar y habilitar el servicio Puppet.
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
Debería ver la salida similar a la captura de pantalla de abajo.
A continuación, configure la variable de entorno ‘$PATH’ para añadir la ruta del binario de Puppet ‘/opt/puppetlabs/bin/’. Hacer esto, le permite ejecutar el comando ‘puppet’ directamente sin la ruta completa del archivo binario.
source /etc/profile.d/puppet-agent.sh echo $PATH
Otra forma de hacerlo es añadiendo una nueva variable de entorno ‘$PATH’ a la configuración de ‘~/.bashrc’ mediante el siguiente comando.
echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc source ~/.bashrc
Ahora verifique la configuración de la variable de entorno ‘$PATH’ usando el siguiente comando.
echo $PATH
Debería ver que la ruta binaria de Puppet ‘/opt/puppetlabs/bin’ se añade a la variable de entorno ‘$PATH’.
Registro del Agente Puppet en el Servidor Puppet
Después de instalar el Puppet Agent, ahora deberá configurar el Puppet Agent para registrarlo en el servidor principal de Puppet.
Primero, asegúrese de que el fqdn del Servidor Puppet es alcanzable desde el directorio ‘agente‘ de la máquina. Pruébalo usando el comando ‘ping’ que aparece a continuación.
ping puppet-server.localdomain.lan -c3
A continuación, ejecute los siguientes comandos para configurar el Agente Puppet. Esto definirá el nombre de dominio del Servidor Puppet y ca_server en el directorio ‘agente‘ sección.
puppet config set server puppet-server.localdomain.lan --section agent puppet config set ca_server puppet-server.localdomain.lan --section agent
Verifique la configuración de Puppet generada en el archivo ‘/etc/puppetlabs/puppet/puppet.conf’.
cat /etc/puppetlabs/puppet/puppet.conf
Debería ver la salida similar a la captura de pantalla de abajo.
Ahora, ejecute el siguiente comando para reiniciar el servicio Puppet y aplicar los nuevos cambios. Luego verifique el servicio Puppet y asegúrese de que está activo y funcionando.
sudo systemctl restart puppet sudo systemctl status puppet
A continuación se muestra la salida del estado del servicio Puppet.
A continuación, ejecute el siguiente comando para registrar el agente de Puppet en el servidor de Puppet. Este comando generará nuevos certificados TLS y creará nuevas peticiones de firma de certificados al servidor de Puppet.
puppet ssl bootstrap
Ahora vaya a la terminal del Servidor Puppet y ejecute el siguiente comando para comprobar las peticiones de firma de certificados, luego verifique la firma de certificados para el Agente Puppet ‘agent.localdomain.lan’.
puppetserver ca list --all puppetserver ca sign --certname agent.localdomain.lan
Debería ver el mensaje como ‘Solicitud de certificado firmada con éxito ….‘.
A continuación, ejecute el siguiente comando para verificar la lista de certificados en el servidor de Puppet.
puppetserver ca list-all
Debería ver dos certificados diferentes, el certificado para el Servidor de Puppet y el Agente de Puppet.
Ahora vaya de nuevo a la terminal de Puppet Agent y debería ver los mensajes como ‘Aviso: Inicialización SSL completada‘, lo que significa que las solicitudes de firma de certificados se han completado con éxito.
En este punto, está listo para crear un nuevo primer manifiesto de Puppet.
Creando el primer manifiesto de Puppet
En este paso, creará un nuevo primer manifiesto de Puppet para instalar la pila LEMP (Nginx, MariaDB y PHP-FPM). Todos los manifiestos para el entorno de producción deben ser almacenados en el directorio del servidor Puppet ‘/etc/puppetlabs/code/environments/production/’.
Cambie su directorio de trabajo actual a ‘/etc/puppetlabs/code/environments/production/’.
cd /etc/puppetlabs/code/environments/production/
A continuación, cree un nuevo directorio de diseño de manifiesto para la pila LEMP bajo el directorio ‘modules’.
mkdir -p modules/lemp/{manifests,files}
Muévase al directorio ‘modules/lemp’ y cree un nuevo archivo de manifiesto de Puppet ‘manifests/init.pp’ usando el editor vim/nano.
cd modules/lemp/ nano manifests/init.pp
Copie y pegue el siguiente lenguaje de sintaxis de Puppet para instalar LEMP Stack, asegúrese de que cada servicio de LEMP Stack esté en funcionamiento y cree un nuevo archivo index.html personalizado.
class lemp {
Package { ensure => ‘installed’ }
$lemppackages = [ ‘nginx’, ‘mariadb-server’, ‘php-fpm’ ]
package { $lemppackages: }
Service { ensure => ‘running’, enable => ‘true’}
$lempsvc = [ ‘nginx’, ‘mariadb’, ‘php7.4-fpm’ ]
service { $lempsvc: }
file { ‘/var/www/html/index.html’:
ensure => file,
content => «<h1><center>Welcome to Nginx – Managed by Puppet</center></h1>»,
mode => ‘0644’,
}
}
Guarde el archivo y salga.
A continuación, ejecute el siguiente comando para validar el archivo de manifiesto de Puppet ‘init.pp’.
puppet parser validate init.pp
Si no ve ningún mensaje de salida, la configuración es correcta.
Ahora cree otra configuración ‘manifests/site.pp’ usando el editor vim/nano.
cd /etc/puppetlabs/code/environments/production/ vim manifests/sites.pp
Defina el host de destino como ‘agent.localdomain.lan’ y aplique el nuevo manifiesto de Puppet ‘lemp’.
node 'agent.localdomain.lan' { include lemp }
Guarde el archivo y salga.
Verifique de nuevo la configuración del manifiesto de Puppet usando el siguiente comando.
puppet parser validate site.pp
Verificación y aplicación de los manifiestos de Puppet
Ahora ha creado un nuevo primer manifiesto de Puppet para desplegar LEMP Stack. En este punto, el nodo Puppet Agent sincronizará automáticamente todos los manifiestos con el servidor Puppet y aplicará una nueva configuración de manifiesto.
Pero también, puede aplicar el manifiesto de Puppet manualmente desde la máquina del Puppet Agent.
Vuelva al servidor de terminal ‘agente’ y ejecute el siguiente comando para aplicar los manifiestos de Puppet manualmente.
puppet agent -t
Esto ejecutará el manifiesto de Puppet en la máquina Puppet Agent e instalará LEMP Stack a través de los manifiestos de Puppet ‘lemp’.
A continuación se muestra la salida que obtendrá.
Ahora ejecute el siguiente comando para verificar cada servicio Nginx, MariaDB y PHP-FPM.
sudo systemctl status nginx sudo systemctl status mariadb sudo systemctl status php7.4-fpm
Debería ver que cada servicio está activo y funcionando.
Ahora abra su navegador web y escriba la dirección IP de su nodo Agente en la barra de direcciones. Y debería ver el archivo index.html personalizado de abajo.
Ahora ha aplicado con éxito el despliegue de LEMP Stack en la máquina del Agente utilizando los manifiestos de Puppet.
Conclusión
¡Enhorabuena! Ya ha instalado con éxito el servidor y el agente de Puppet en Debian 11 Bullseye. Además, ha aprendido a crear los primeros manifiestos de Puppet para instalar LEMP Stack.
OEn el siguiente paso, puede ser interesante configurar otro nodo y crear un manifiesto de Puppet más complejo para sus despliegues.