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 *