Cómo instalar el servidor y el agente Puppet en AlmaLinux 9

Puppet es una herramienta centralizada de gestión de la configuración y 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» extraerá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 mediante 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.

Esta guía te muestra cómo instalar Puppet Server y Agent en servidores AlmaLinux. También te mostraremos cómo empezar a utilizar la herramienta de gestión de la configuración Puppet creando la primera implementación de Puppet para LAMP Stack.

Requisitos previos

Asegúrate de que tienes lo siguiente antes de empezar:

  • 2 servidores AlmaLinux – Este ejemplo utiliza servidores AlmaLinux 8:
    • nombre de host: pp-server– dirección IP: 192.168.10.20 – Utilizado como: Servidor Puppet
    • hostname: agent1 – Dirección IP: 192 .168.10. 21 – Utilizado como: Agente Puppet
  • Un usuario no root puede ejecutar sudo para obtener los privilegios de root.

Configurar el archivo /etc/hosts

Antes de pasar a la instalación de Puppet, se recomienda utilizar un nombre de dominio local o FQDN (Fully Qualified Domain Name) en lugar de una dirección IP para el entorno de Puppet.

En este ejemplo, utilizarás el sistema fqdn tanto para el Servidor como para el Agente de Puppet. Se puede acceder a cada servidor a través del fqdn y del nombre de host del sistema.

Para empezar, ejecuta el siguiente comando para configurar fqdn en cada servidor.

Ejecuta esto en el Servidor Puppet.

sudo hostnamectl set-hostname pp-server.hwdomain.lan

Y esto en la máquina del Agente.

sudo hostnamectl set-hostname agent1.hwdomain.lan

Abre el archivo /etc/hosts utilizando el comando editor nano que aparece a continuación.

sudo nano /etc/hosts

Introduce la siguiente configuración y asegúrate de cambiar la dirección IP detallada y el fqdn.

192.168.10.20   pp-server.hwdomain.lan   pp-server
192.168.10.21   agent1.hwdomain.lan    agent1

Guarda y cierra el archivo.

A continuación, ejecuta el siguiente comando para verificar el fqdn tanto en el Servidor Puppet como en el Agente.

sudo hostname -f

Deberías obtener la fqdn en el Servidor Puppet como pp-server. hwdomain . lan y para la máquina Agente agent1.hwdomain.lan.

Por último, ejecuta el siguiente comando ping para asegurarte de que cada hostname y fqdn apuntan a la dirección IP interna correcta del servidor.

ping -c3 pp-server.hwdomain.lan
ping -c3 pp-server
ping -c3 agent1.hwdomain.lan
ping -c3 agent1

Configura hostname y fqdn en el Servidor Puppet.

setup hostname fqdn

Configura hostname y fqdn en el Agente Puppet.

setup hostname fqdn

Instalar Puppet

En esta sección, iniciarás la instalación del Servidor y del Agente Puppet. Configurarás el repositorio Puppet tanto en el Servidor Puppet como en el Agente, y luego instalarás el paquete Puppet correspondiente en cada máquina.

Añadir el repositorio de Puppet

Asegúrate de ejecutar este comando tanto en el Servidor como en el Agente de Puppet.

Añade el repositorio de Puppet tanto al Servidor como al Agente de Puppet utilizando el siguiente comando.

sudo rpm -Uvh https://yum.puppet.com/puppet7-release-el-8.noarch.rpm

Una vez añadido el repositorio, ejecuta el siguiente comando dnf para verificar la lista de repositorios disponibles en ambos servidores.

sudo dnf repolist

Deberías ver el repositorio Puppet en la lista de repositorios.

añadir repositorio puppet

Instalar y configurar Puppet Server

Una vez añadido el repositorio, puedes iniciar la instalación de Puppet Server.

En primer lugar, ejecuta el siguiente comando dnf para instalar el paquete puppetserver en el servidor pp.

sudo dnf install puppetserver

Introduce y cuando se te solicite, y pulsa ENTER para continuar.

instalar puppetserver

Introduce también y cuando se te pida que añadas la clave GPG del repositorio de Puppet.

importar clave gpg

Una vez finalizada la instalación, ejecuta el siguiente comando para cargar el perfil del sistema Puppet en tu sistema. A continuación, comprueba la variable de entorno PATH para asegurarte de que se ha añadido el directorio bin del Servidor Puppet.

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

Si se ha hecho correctamente, deberías ver que el directorio /opt/puppetlabs/bin está disponible en el PATH del sistema.

A continuación, ejecuta el siguiente comando para localizar el archivo binario puppetserver y verificar la versión puppsetserver.

which puppetserver
puppetserver -v

En esta salida, deberías ver que el archivo binario de puppetserver está disponible en /opt/puppetlabs/bin/puppetserver. Y el puppetserver actual que está instalado es la v7.11.

comprobando puppetserver

Instalar el Agente Puppet

Ya estás preparado para instalar el Agente Puppet en la máquina agent1.hwdomain.lan.

En la máquina Agente, ejecuta el siguiente comando para instalar el paquete puppet-agent. Introduce y cuando se te pida y pulsa ENTER.

sudo dnf install puppet-agent

instalación del agente puppet

Además, vuelve a introducir y para añadir la clave GPG del repositorio de Puppet.

importar clave gpg

Una vez instalado puppet-agent, ejecuta el siguiente comando para cargar el perfil del sistema Puppet en tu sesión actual. A continuación, comprueba la variable de entorno PATH del sistema.

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

Si el perfil del sistema Puppet está cargado, deberías ver el directorio /opt/puppetlabs/bin disponible en el PATH del sistema.

Ejecuta el siguiente comando para localizar el archivo binario de puppet y verificar la versión del agente puppet.

which puppet
puppet -v

Deberías ver que el archivo binario de puppet se encuentra en /opt/puppetlabs/bin/puppet y que la versión de puppet-agent es la v7.11.

comprobación del agente títere

Por último, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio puppet en la máquina Agente.

sudo systemctl start puppet
sudo systemctl enable puppet

A continuación, ejecuta el siguiente comando para asegurarte de que se ejecuta el servicio puppet.

sudo systemctl status puppet

Si todo va bien, deberías ver una salida como ésta:

comprobación del servicio de cachorros

Configuración del Servidor Puppet

Con Puppet Server y Agent instalados, el siguiente paso será configurar la instalación de Puppet Server. Configurarás el nombre predeterminado del servidor para Puppet Server, establecerás el intervalo de ejecución para los agentes y, a continuación, iniciarás y activarás el servicio Puppe Server.

Primero, abre el archivo /etc/sysconfig/puppetserver con el editor vim.

sudo nano /etc/sysconfig/puppetserver

En el parámetro JAVA_ARGS, aumenta la asignación de memoria máxima para Puppet Server. Esta configuración depende de la memoria actual de tu sistema. En este ejemplo, el Servidor Puppet tiene 4GB de memoria y asignará 2GB para el Servidor Puppet.

# Modify this if you'd like to change the memory allocation, enable JMX, etc
JAVA_ARGS="-Xms2g -Xmx2g"

Guarda el archivo y sal del editor al terminar.

Ahora, ejecuta el siguiente comando puppet para cambiar el nombre predeterminado del servidor a pp-server.hwdomain.lan y el intervalo de ejecución a 1 hora. El parámetro runinterval significa la frecuencia con la que el Agente aplica los catálogos de Puppet.

puppet config set server pp-server.hwdomain.lan --section main
puppet config set runinterval 1h --section main

A continuación, ejecuta el siguiente comando para establecer el entorno predeterminado en producción y los nombres alternativos del servidor Puppet en pp-server y pp-server.hwdomain.lan.

puppet config set environment production --section server
puppet config set dns_alt_names pp-server,pp-server.hwdomain.lan --section server

configurar el servidor puppet

Una vez ejecutados estos comandos de Puppet, los ajustes se almacenarán en la configuración predeterminada de Puppet /etc/puppetlabs/puppet/puppet.conf. Ejecuta el siguiente comando para mostrar el contenido del archivo /etc/puppetlabs/puppet/puppet.conf.

cat /etc/puppetlabs/puppet/puppet.conf

Deberías obtener una configuración similar a ésta:

configuración generada servidor puppet

Ahora ejecuta el siguiente comando para recargar el gestor systemd.

sudo systemctl daemon-reload

A continuación, inicia y habilita el servicio puppetserver mediante el siguiente comando systemctl.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

Una vez iniciado el puppetserver, ejecuta el siguiente comando para verificarlo.

sudo systemctl status puppetserver

Si puppetserver se está ejecutando, deberías obtener una salida como ésta:

iniciar la verificación del servidor puppet

Configurar Firewalld en Puppet Server

Después de configurar Puppet Server, debes abrir el puerto 8140 en Puppet Server y permitir que tu red acceda a él. Ahora pasaremos a configurar el firewalld y a abrir el puerto 8140 en el pp-server.hwdomain.lan.

Ejecuta el siguiente comando para añadir tu red local al firewalld y abrir el puerto TCP 8140 que utilizará el Servidor Puppet.

sudo firewall-cmd --add-source=192.168.10.0/24 --permanent
sudo firewall-cmd --add-port=8140/tcp --permanent

A continuación, vuelve a cargar el firewalld y comprueba la lista de reglas habilitadas mediante el siguiente comando.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Deberías ver que la red 192.168.10.0/24 se ha añadido al firewalld y que el puerto 8140 está disponible en el firewalld.

Registrar el Agente Puppet en el Servidor Puppet

Esta sección trata sobre cómo añadir y registrar Puppet Agent en el Servidor Puppet. Registrarás el agente.hwdomain.lan en el Servidor Puppet pp-server.hwdomain.lan.

Para ello, sigue estos pasos:

  • Define el Servidor Puppet por defecto en el lado del agente y reinicia el Puppet Agent.
  • Inicializa la solicitud de firma de certificado del Puppet Agent.
  • Firmar la solicitud de certificado en el Servidor Puppet.
  • Verificar el certificado firmado de la lista.

Define el Servidor Puppet por defecto al que se puede conectar el agente y el ca_server que se utilizará para la verificación del agente. En este ejemplo, el Servidor Puppet se ejecuta dentro de la fqdn pp-server.hwdomain.lan.

puppet config set server pp-server.hwdomain.lan --section agent
puppet config set ca_server pp-server.hwdomain.lan --section agent

Ejecuta el siguiente comando para verificar la configuración del Agente Puppet /etc/puppetlabs/puppet/puppet.conf. Asegúrate de que tienes la configuración correcta de servidor y ca_server.

cat /etc/puppetlabs/puppet/puppet.conf

Deberías recibir una salida similar:

configurar el agente puppet

Ahora ejecuta el siguiente comando para reiniciar el servicio puppet en la máquina del Agente y verifica su estado.

sudo systemctl restart puppet
sudo systemctl status puppet

Si la configuración del Agente Puppet es correcta, deberías ver el servidor Puppet con el estado en ejecución.

iniciar la verificación del agente puppet

A continuación, ejecuta el siguiente comando para inicializar la máquina Puppet Agent.

puppet ssl bootstrap

Esto generará un nuevo certificado en la máquina del Agente y se autenticará en el Servidor Puppet.

bootstart agente puppet

Desplázate al Servidor Puppet y ejecuta el siguiente comando para verificar la lista de certificados (tanto los pendientes como los aceptados). a continuación, acepta y firma la solicitud de certificado de la máquina Agente agent1.hwdomain.lan.

puppetserver ca list --all
puppetserver ca sign --certname agent1.hwdomain.lan

Después de que Puppet Server firme el certificado, deberías ver el mensaje «Solicitud de certificadofirmada correctamente para agente1.hwdomain.lan».

solicitud de certificado sigend

Luego, en la máquina Puppet Agent, deberías ver el mensaje«Notice: Inicialización SSL completada«.

Por último, vuelve a comprobar la lista de certificados firmados en el Servidor Puppet mediante el siguiente comando.

puppetserver ca list --all

Si todo ha ido bien, deberías ver el certificado de la máquina agent1.hwdomain.lan en la sección Certificados firmados.

listar certificado firmado

Ahora, has instalado y configurado correctamente el Servidor y el Agente Puppet en dos servidores AlmaLinux diferentes. En el siguiente paso, crearás el primer manifiesto de Puppet para el despliegue automático de tu aplicación.

Creación del primer manifiesto de Puppet

Esta sección está dedicada como punto de partida para utilizar la gestión de la configuración de Puppet cas para automatizar el despliegue de tus aplicaciones. Crearás tu primer manifiesto Puppet para instalar LAMP Stack en el agente Puppet agent1.hwdomain.lan.

Asegúrate de ejecutar el siguiente comando y crear manifiestos Puppet en el Servidor Puppet.

Ve al directorio /etc/puppetlabs/code/environments/production/ y crea un nuevo directorio modules para tu proyecto modules/lamp/.

cd /etc/puppetlabs/code/environments/production/
mkdir -p modules/lamp/{manifests,files}

Ve al directorio modules/lamp/ y crea un nuevo archivo manifests/init. pp utilizando el editor nano.

cd modules/lamp/
nano manifests/init.pp

Inserta el siguiente script Puppet en el archivo. Esto instalará los paquetes LAMP Stack en la máquina agente, se asegurará de que los servicios LAMP Stack se ejecutan y están habilitados, creará el archivo index.html personalizado en el directorio /var/www/html/index .html y creará un nuevo archivo PHPINFO /var/www/html/info.php.

class lamp {
Package { ensure => 'installed' }
$lamppackages = [ 'httpd', 'mariadb-server', 'php' ]
package { $lamppackages: }

Service { ensure => 'running', enable => 'true'}
$lampsvc = [ 'httpd', 'mariadb' ]
service { $lampsvc: }

file { '/var/www/html/index.html':
ensure  => file,
content => "<h1><center>Welcome to httpd - Managed by Puppet</center></h1>",
mode    => '0644',
}

file { '/var/www/html/info.php':
ensure  => file,
content => "<?php phpinfo(); ?>",
mode    => '0644',
}

}

Guarda y cierra el archivo cuando hayas terminado.

A continuación, desplázate de nuevo al directorio /etc/puppetlabs/code/environments/production/ y crea otro archivo manifests/sites. pp utilizando el editor nano.

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

Define el Agente Puppet y el módulo que quieres utilizar. En este ejemplo, desplegarás el módulo lamp en la máquina Agente agent1.hwdomain.lan.

node 'agent1.hwdomain.lan' {
    include lamp
}

Guarda el archivo y sal del editor.

Aplicar manifiestos Puppet en el Agente

En la máquina Agente, ejecuta el siguiente comando para extraer y aplicar el despliegue.

puppet agent -t

Ahora, el Agente Puppet debería recuperar el despliegue del catálogo del Servidor Puppet, almacenarlo en caché en la máquina Agente y, a continuación, aplicar el despliegue.

aplicar el manifiesto en el agente puppet

Una vez que todo haya terminado, ejecuta el siguiente comando systemctl para verificar los servicios httpd y MariaDB.

Comprueba el servicio httpd para asegurarte de que se está ejecutando y está habilitado.

sudo systemctl is-enabled httpd
sudo systemctl status httpd

comprobando el servicio httpd

Comprueba el servicio MariaDB para asegurarte de que se está ejecutando y está habilitado.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

comprobación del servicio mariadb

Inicia tu navegador web y visita la dirección IP del Agente Puppet (es decir: http://192.168.10.21/). Si el despliegue se ha realizado correctamente, deberías obtener la página personalizada index.html como ésta:

index.html

Ahora navega hasta la ruta URL /info.php (es decir: http://192.168.10.21/info.php). Si PHP está instalado, deberías obtener la página detallada de PHPINFO así:

phpinfo

Conclusión

Enhorabuena, has completado con éxito la instalación de Puppet Server y Agent en tus servidores AlmaLinux. También has creado tu primer manifiesto Puppet para desplegar la pila LAMP, lo que es bueno como punto de partida. Ahora puedes crear tu propio manifiesto Puppet para desplegar tus aplicaciones.

También te podría gustar...