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

Puppet es una herramienta centralizada de gestión de la configuración y de automatización. 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 utilizando un certificado SSL/TLS. Puppet utiliza el 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ás y configurarás 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ás los primeros manifiestos de Puppet para instalar la pila básica de LEMP en el nodo ‘agente’.

Requisitos previos

  • Necesitarás dos servidores Debian 11 diferentes.
    • El ‘puppet-server‘ con la dirección IP‘192.168.5.100‘ y el fqdn‘puppet-server.localdomainl.lan‘.
    • El nodo «agente» con la dirección IP «192.168.5.150″ y el fqdn «agente.dominiolocal.lan».
  • Además, necesitarás el usuario root o con privilegios de root/sudo.

Configurar el FQDN

En primer lugar, deberás configurar el Nombre de Dominio Completamente Cualificado (FQDN) y el archivo ‘/etc/hosts’ tanto en ‘puppet-server’ como en ‘agent’. Esto garantizará que ambos servidores puedan comunicarse con el nombre de dominio local.

Para configurar el FQDN, ejecuta el siguiente comando‘hostnamectl’.

Ejecuta el siguiente comando para configurar el fqdn‘puppet-server.localdomain.lan‘ en el ‘puppet-server‘.

hostnamectl set-hostname puppet-server.localdomain.lan

Ejecuta el siguiente comando para configurar el fqdn «agente.dominiolocal.lan» en el nodo «agente«.

hostnamectl set-hostname agent.localdomain.lan

A continuación, edita el archivo‘/etc/hosts‘ utilizando el editor vim como se indica a continuación.

sudo vim /etc/hosts

Copia y pega la siguiente configuración.

192.168.5.100   puppet-server.localdomain.lan
192.168.5.150   agent.localdomain.lan

Guarda el archivo y sal.

Por último, ejecuta el comando‘ping’ que aparece a continuación para verificar la conexión entre el‘puppet-server’ y el‘agente‘.

ping puppet-server.localdomain.lan -c3
ping agent.localdomain.lan -c3

Si tu configuración es correcta, verás la siguiente salida. El ‘puppet-server.localdomain.lan‘ se resuelve al servidor‘192.168.5.100‘, y el ‘agent.localdomain.lan‘ se resuelve al nodo agente‘192.168.5.150‘.

Ping al servidor-marioneta

configurar el agente marioneta

Añadir el repositorio de Puppet

Por defecto, Puppelabs proporciona paquetes de repositorio para diferentes distribuciones de Linux, incluida la última Debian 11 Bullseye. En este paso, añadirás e instalarás 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.

Descarga 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, instala 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, ejecuta el comando ‘apt‘ que aparece a continuación para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Ahora estás listo para instalar los paquetes de Puppet.

configurar el repositorio de puppet

Instalar el servidor Puppet

En este paso, instalarás el paquete del servidor Puppet en el ‘puppet-server’. En el momento de escribir esto, la última versión de Puppet es la v7.

Para instalar Puppet Server, ejecuta el siguiente comando apt. Este comando también instala automáticamente otros paquetes como Java OpenJDK.

sudo apt install puppetserver

Escribe « para confirmar la instalación.

Instalar el servidor Puppet

Una vez completada la instalación, tendrás que cargar el entorno bash para el Servidor de Puppet.

Por defecto, Puppet almacena su archivo binario en el directorio‘/opt/puppetlabs/bin‘. Ejecuta el siguiente comando para aplicar la nueva variable de entorno‘$PATH’ para el Servidor Puppet.

source /etc/profile.d/puppet-agent.sh
echo $PATH

Opcionalmente, también puedes aplicar la variable de entorno ‘$PATH‘ ejecutando el siguiente comando.

echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc

Ahora verifica la variable de entorno ‘$PATH‘ con el siguiente comando. Asegúrate de que el directorio‘/opt/puppetlabs/bin‘ está en la lista de la variable de entorno ‘$PATH‘.

echo $PATH

Después de esto, puedes ejecutar el comando‘puppetserver‘ normalmente. A continuación puedes comprobar la versión de Puppet.

puppetserver -v

Deberías obtener una salida similar a la captura de pantalla que aparece a continuación.

Configurar la variable de entorno PATH para Puppet

A continuación, edita la configuración del servidor Puppet ‘/etc/default/puppetserver ‘ utilizando el editor vim.

sudo vim /etc/default/puppetserver

Cambia la asignación de memoria máxima para el servidor Puppet. Depende de la memoria de tu sistema. En esta guía, tenemos 2GB de memoria y asignaremos para el servidor Puppet 1GB. Y utilizaremos la siguiente configuración.

JAVA_ARGS="-Xms1g -Xmx1g"

Guarda el archivo de configuración y sal.

configurar el límite máximo de memoria del servidor Puppet

A continuación, recarga el gestor systemd para aplicar el nuevo archivo del servicio Puppet.

sudo systemctl daemon-reload

A continuación, inicia y activa el servicio ‘puppetserver‘ con el siguiente comando.

sudo systemctl start enable --now puppetserver

Configurar y habilitar puppetserver

El servicio ‘puppetserver‘ debería estar en funcionamiento. Ejecuta el siguiente comando para verificar el ‘puppetserver‘.

sudo systemctl status puppetserver

Deberías ver una salida similar a la captura de pantalla de abajo.

verificar el estado del servidor de títeres

Además, si utilizas un cortafuegos UFW en tu sistema, asegúrate de abrir el puerto‘8140‘ que utilizará el Servidor Puppet.

Ejecuta 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

A continuación se muestran las reglas actuales del cortafuegos UFW que deberías ver.

configurar el firewall ufw para el servidor Puppet

Configurar el Servidor Puppet

En este paso, editarás la configuración del Servidor Puppet. Y esto puede hacerse editando la configuración de Puppet directamente o generando la configuración mediante la línea de comandos ‘puppet‘.

Ejecuta los siguientes comandos ‘puppet’ para configurar el Servidor Puppet. Para ello, configura el nombre de dominio predeterminado del Servidor Puppet y el intervalo de ejecución en la sección ‘main’, y el entorno y dns_alt_names en la sección ‘server‘.

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 comprueba la configuración del Servidor Puppet‘/etc/puppetlabs/puppet/puppet.conf‘ utilizando el comando‘cat’ que aparece a continuación.

cat /etc/puppetlabs/puppet/puppet.conf

Deberías ver la configuración del Servidor Puppet como se indica a continuación.

Configurar el servidor Puppet

Por último, reinicia el servicio‘puppetserver‘ para aplicar la nueva configuración ejecutando el comando‘systemctl‘ que aparece a continuación.

sudo systemctl restart puppetserver

En este punto, has completado la instalación y configuración del Servidor Puppet.

Instalación y configuración del Agente Puppet

En este paso, instalarás y configurarás el Agente de Puppet en la máquina cliente‘agent‘.

Antes de instalar Puppet Agent, asegúrate de que has completado la configuración del FQDN y has añadido el repositorio de Puppet.

Ahora vamos a instalar y configurar el Puppet Agent.

Instala el paquete‘puppet-agent‘ con el comando apt que aparece a continuación.

sudo apt install puppet-agent

Instalar el Agente Puppet

Una vez completada la instalación, ejecuta el siguiente comando para iniciar y habilitar el servicio Puppet.

sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

Deberías ver una salida similar a la captura de pantalla que aparece a continuación.

Inicia y activa el Agente Puppet

A continuación, deberás configurar la variable de entorno‘$PATH’ para añadir la ruta del binario de Puppet ‘/opt/puppetlabs/bin/‘. Hacer esto, te 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 verifica la configuración de la variable de entorno ‘$PATH‘ utilizando el siguiente comando.

echo $PATH

Deberías ver que la ruta del binario de Puppet‘/opt/puppetlabs/bin‘ se añade a la variable de entorno ‘ $PATH‘.

Configurar la variable de entorno PATH Puppet

Registrar el Puppet Agent en el servidor Puppet

Después de instalar el Puppet Agent, ahora deberás configurar el Puppet Agent para registrarlo en el servidor principal de Puppet.

Primero, asegúrate de que el fqdn del Servidor Puppet es alcanzable desde la máquina delagente’. Pruébalo utilizando el comando‘ping’ que aparece a continuación.

ping puppet-server.localdomain.lan -c3

Ping al servidor puppet

A continuación, ejecuta los siguientes comandos para configurar el Puppet Agent. Esto definirá el nombre de dominio del Servidor Puppet y el ca_server en la secciónagente’.

puppet config set server puppet-server.localdomain.lan --section agent
puppet config set ca_server puppet-server.localdomain.lan --section agent

Verifica la configuración de Puppet generada en el archivo ‘/etc/puppetlabs/puppet/puppet.conf’.

cat /etc/puppetlabs/puppet/puppet.conf

Deberías ver una salida similar a la captura de pantalla que aparece a continuación.

Configurar el Agente Puppet

Ahora, ejecuta el siguiente comando para reiniciar el servicio Puppet y aplicar los nuevos cambios. A continuación, verifica el servicio Puppet y asegúrate de que está activo y en funcionamiento.

sudo systemctl restart puppet
sudo systemctl status puppet

A continuación se muestra la salida del estado del servicio Puppet.

Reinicia el Agente Puppet

A continuación, ejecuta el siguiente comando para registrar el agente Puppet en el servidor Puppet. Este comando generará nuevos certificados TLS y creará nuevas solicitudes de firma de certificados al servidor Puppet.

puppet ssl bootstrap

Ahora ve al terminal del servidor Puppet y ejecuta el siguiente comando para comprobar las solicitudes de firma de certificados, y luego verifica la firma de certificados para el agente Puppet‘agent.localdomain.lan‘.

puppetserver ca list --all
puppetserver ca sign --certname agent.localdomain.lan

Deberías ver un mensaje como‘Solicitud de certificado firmada con éxito ….‘.

Comprobar y verificar la firma del certificado

A continuación, ejecuta el siguiente comando para verificar la lista de certificados en el servidor de Puppet.

puppetserver ca list-all

Deberías ver dos certificados diferentes, el del Servidor de Puppet y el del Agente de Puppet.

Lista de certificados firmados

Ahora pasa de nuevo al terminal del Puppet Agent y deberías ver mensajes como‘Notice: Completed SSL initialization‘, que significa que las solicitudes de firma de certificados se han completado con éxito.

Agente marioneta de arranque

Llegados a este punto, estás preparado para crear un nuevo primer manifiesto de Puppet.

Crear el primer manifiesto de Puppet

En este paso, crearás 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 almacenarse en el directorio del servidor Puppet‘/etc/puppetlabs/code/environments/production/‘.

Cambia tu directorio de trabajo actual a ‘/etc/puppetlabs/code/environments/production/‘.

cd /etc/puppetlabs/code/environments/production/

A continuación, crea un nuevo directorio de diseño de manifiesto para la pila LEMP en el directorio ‘modules’.

mkdir -p modules/lemp/{manifests,files}

Ve al directorio ‘modules/lemp‘ y crea un nuevo archivo de manifiesto Puppet‘manifests/init.pp‘ utilizando el editor vim/nano.

cd modules/lemp/
nano manifests/init.pp

Copia y pega el siguiente lenguaje de sintaxis de Puppet para instalar LEMP Stack, asegúrate de que cada servicio de LEMP Stack está en funcionamiento y crea 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',
   }

}

Guarda el archivo y sal.

A continuación, ejecuta el siguiente comando para validar el archivo de manifiesto de Puppet ‘init.pp’.

puppet parser validate init.pp

Si no ves ningún mensaje de salida, la configuración es correcta.

Ahora crea otra configuración ‘manifests/site.pp’ utilizando el editor vim/nano.

cd /etc/puppetlabs/code/environments/production/
vim manifests/sites.pp

Define el host de destino como‘agent.localdomain.lan‘ y aplica el nuevo manifiesto Puppet ‘lemp‘.

node 'agent.localdomain.lan' {
    include lemp
}

Guarda el archivo y sal.

Verifica de nuevo la configuración del manifiesto de Puppet con el siguiente comando.

puppet parser validate site.pp

Verificar y aplicar los manifiestos de Puppet

Ahora has 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 puedes aplicar el manifiesto de Puppet manualmente desde la máquina del Puppet Agent.

Vuelve al servidor de terminales ‘agent’ y ejecuta el siguiente comando para aplicar manualmente los manifiestos de Puppet.

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 el resultado que obtendrás.

Aplicar el manifiesto de la marioneta

Ahora ejecuta 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ías ver que cada servicio está activo y funcionando.

Estado del servicio Nginx

Estado del servicio MariaDB

Estado del servicio PHP-FPM

Ahora abre tu navegador web y escribe la dirección IP de tu nodo Agente en la barra de direcciones. Y deberías ver el archivo index.html personalizado que aparece a continuación.

Index.html personalizado creado por Puppet

Ahora has aplicado con éxito el despliegue de LEMP Stack en la máquina Agente utilizando los manifiestos de Puppet.

Conclusión

¡Enhorabuena! Ya has instalado con éxito el Servidor y el Agente de Puppet en Debian 11 Bullseye. Además, has aprendido a crear los primeros manifiestos de Puppet para instalar LEMP Stack.

En el siguiente paso, puede interesarte configurar otro nodo y crear un manifiesto de Puppet más complejo para tus despliegues.

También te podría gustar...