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

Ping al servidor de títeres

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‘.

Ping al servidor de títeres

configuración del agente puppet

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.

configurar el repositorio 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.

Instalar el Servidor Puppet

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.

Configurar la variable de entorno PATH para Puppet

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.

Configurar el límite máximo de memoria del Servidor Puppet

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

Configurar y habilitar 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.

verificar el estado de puppetserver

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.

configurar el firewall ufw para el servidor Puppet

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.

Configurar el Servidor Puppet

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

Instalando el Agente Puppet

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.

Inicie y habilite el Agente Puppet

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’.

Configurar la variable de entorno PATH Puppet

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

Ping al servidor puppet

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.

Configurar el Agente Puppet

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.

Reinicie el Agente 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 ….‘.

Comprobar y verificar la firma del certificado

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.

Lista de certificados firmados

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.

Arrancando el agente de títeres

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á.

Aplicar el manifiesto de Puppet

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.

Estado del servicio Nginx

Estado del servicio MariaDB

Estado del servicio PHP-FPM

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.

Index.html personalizado creado por Puppet

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *