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.
Configura hostname y fqdn en el Agente Puppet.
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.
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.
Introduce también y cuando se te pida que añadas la clave GPG del repositorio de Puppet.
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.
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
Además, vuelve a introducir y para añadir la clave GPG del repositorio de Puppet.
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.
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:
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
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:
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:
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:
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.
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.
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».
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.
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.
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
Comprueba el servicio MariaDB para asegurarte de que se está ejecutando y está habilitado.
sudo systemctl is-enabled mariadb sudo systemctl status 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:
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í:
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.