Cómo configurar SaltStack Master y Minion en Rocky Linux

Salt o Saltstack es un marco de automatización de TI de código abierto que permite a los administradores ejecutar comandos de forma remota en varias máquinas directamente. Salt está escrito principalmente en Python y está diseñado con una arquitectura Master y Minion. El maestro SaltStack es el controlador central de la gestión de la configuración de Salt, y los Minions son servidores gestionados por el maestro SaltStack, o bien nombras a los Minions como servidores de destino.

El maestro SaltStack se ejecuta por defecto en el sistema operativo Linux, pero los minions pueden ser cualquier sistema operativo. SaltStack es una revolucionaria gestión de la configuración para la automatización del despliegue, la ejecución de tareas remotas y la infraestructura como código. SaltStack también puede utilizarse para aprovisionar múltiples servidores de infraestructura, esto incluye servidores físicos y virtuales, y también la nube.

Siguiendo esta guía, instalarás SaltStack Master y Minion en los servidores Linux de Rocky. Además, aprenderás a utilizar Salt para ejecutar comandos arbitrarios desde SaltStack Master contra Salt Minions. Y al final, también aprenderás a crear un estado Salt para instalar la Pila LEMP básica (Linux, Nginx, MariaDB y PHP-FPM).

Requisitos previos

Para completar este tutorial, necesitarás al menos dos o más servidores Linux Rocky. Todos esos servidores deben tener un usuario no root con privilegios de root/administrador.

Configuración del archivo /etc/hosts

Para este ejemplo, utilizaremos tres servidores Rocky Linux para la instalación de SaltStack. Un servidor se utilizará como Maestro, y dos servidores se utilizarán como subordinados.

A continuación se detallan los servidores Rocky Linux que utilizaremos:

Hostname    IP Address      Used as
---------------------------------------------
master      192.168.5.10    SaltStack Master
minion1     192.168.5.15    SaltStack Minion
minion2     192.168.5.16    SaltStack Minion

Antes de instalar los paquetes de SaltStack, se configurará el archivo /etc/hosts en cada servidor Linux.

Edita el archivo /etc/hosts con el siguiente comando.

sudo nano /etc/hosts

Ahora añade la siguiente configuración al archivo.

master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16

Cuando hayas terminado, guarda y cierra el archivo.

Añadir el repositorio de SaltStack

Los paquetes de SaltStack están disponibles en su repositorio oficial. Vas a añadir el repositorio SaltStack y la clave GPG a todos tus servidores Rocky Linux.

Ejecuta el siguiente comando para importar la clave GPG del repositorio SaltStack. A continuación, añade el repositorio SaltStack. En este ejemplo, añadirás la última versión del repositorio SaltStack.

sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

añadir repositorio y clave

Ahora ejecuta el siguiente comando para comprobar y verificar la lista de repositorios en tu servidor Rocky Linux. A continuación, actualiza y genera nuevos metadatos para todos los repositorios disponibles.

Deberías ver que el repositorio SaltStack se ha añadido al servidor Rocky Linux.

sudo dnf repolist
sudo dnf makecache

comprobar el repositorio y generar nuevos metadatos

Instalación de SaltStack Master

Has añadido el repositorio SaltStack a todos tus servidores Rocky Linux. Ahora vas a instalar y configurar el SaltStack Master en el servidor «maestro».

En primer lugar, ejecuta el comando DNF que aparece a continuación para instalar el paquete «salt-master». Este paquete es el principal para configurar el SaltStack Master.

Introduce Y para confirmar la instalación y pulsa ENTER, y la instalación comenzará.

sudo dnf install salt-master

instalar salt-master

Una vez finalizada la instalación, edita la configuración del maestro SaltStack«/etc/salt/master» utilizando el siguiente comando.

sudo nano /etc/salt/master

Descomenta la opción «interface:» y cambia la dirección IP por la de tu servidor «maestro». En este ejemplo, la dirección IP de SaltStack Master es «192.168.5.10«.

interface: 192.168.5.10

Guarda y cierra el archivo cuando hayas terminado.

A continuación, habilita el servicio «salt-master» para que se ejecute en el arranque del sistema e inicia el servicio «salt-master». A continuación, comprueba y verifica el servicio «salt-master».

Deberías ver que el servicio «salt-master» está habilitado y en funcionamiento.

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master

comprobar y verificar salt-master

En el SaltStack Master, tendrás que abrir los puertos TCP 4505 y 4506, que serán utilizados por la conexión de los SaltStack Minions con el SaltStack Master.

Ejecuta el siguiente comando «firewall-cmd » para abrir los puertos 4505 y 4506. A continuación, recarga el Firewalld.

sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp
sudo firewall-cmd --reload

Por último, comprueba y verifica las reglas del Firewalld con el siguiente comando. Y deberías tener los puertos 4505 y 4506 disponibles en el Firewalld.

sudo firewall-cmd --list-all

maestro de la sal con muro de fuego

Instalación de SaltStack Minion

Has instalado y configurado el SaltStack Master. Ahora vas a instalar y configurar SaltStack Minion en los servidores «minion1» y «minion2«.

Mueve los servidores «minion1» y » minion2«, y luego ejecuta el comando DNF que aparece a continuación para instalar el paquete «salt-minion». Este paquete debe instalarse en todos los servidores SaltStack Minion.

Introduce Y para confirmar la instalación y pulsa ENTER. Y comenzará la instalación de «salt-minion«.

sudo dnf install salt-minion

instala sal-minión

Una vez terminada la instalación, edita el archivo de configuración de SaltStack Minion«/etc/salt/minion» utilizando el siguiente comando.

sudo nano /etc/salt/minion

Descomenta la opción «master:» y añade la dirección IP o el nombre de host del maestro SaltStack. En este ejemplo, el maestro SaltStack se ejecuta en la dirección IP del servidor «192.168.5.10«.

master: 192.168.5.10

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para habilitar el servicio «salt-minion» e iniciar el servicio. A continuación, comprueba y verifica el servicio «salt-minion«.

Deberías ver que el servicio «salt-minion» está habilitado y se ejecutará automáticamente al iniciar el sistema. Y el estado actual del servicio «salt-minion» es de ejecución.

sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

comprueba la sal-minión

Añadir servidores Minion a SaltStack Master

Ya has terminado la instalación de SaltStack Master en el servidor «master» y de SaltStack Minion en los servidores «minion1» y «minion2». Para añadir SaltStack Minions al SaltStack Master, aceptarás la huella de la clave de los servidores «minion1» y «minion2» del servidor «maestro».

Vuelve al servidor «maestro» y ejecuta el siguiente comando salt para comprobar todas las huellas digitales de clave disponibles. Deberías ver que hay dos «Claves no aceptadas» de los servidores «minion1» y «minion2«.

salt-key --finger-all

lista de claves de huellas dactilares

Para aceptar la huella digital de la clave del servidor «minion1» y «minion2«, ejecuta el comando salt-key que aparece a continuación. Y se te pedirá que aceptes la huella digital de la clave, introduce Y para confirmar y añadir la clave.

salt-key -a minion1
salt-key -a minion2

A continuación, comprueba y verifica todas las huellas dactilares de las claves disponibles mediante el siguiente comando. Y deberías obtener las dos huellas digitales del servidor «minion1» y «minion2» añadidas al maestro SaltStack. Ambas huellas digitales de llaves están disponibles en la sección «Llaves aceptadas«.

salt-key --finger-all

añadir claves de huellas dactilares

Tras añadir los servidores SaltStack Minion al maestro SaltStack, ejecuta el siguiente comando salt en el servidor «maestro» para probar y hacer ping a los servidores «minion1» y «minion2«.

Si la configuración tiene éxito, debería aparecer el mensaje de salida «True«, lo que significa que los servidores SaltStack Minion se han añadido al SaltStack Master.

salt minion1 test.ping
salt minion2 test.ping

También puedes utilizar un asterisco‘*‘ para apuntar a todos los servidores SaltStack Minion.

salt '*' test.ping

Prueba de ping de SaltStack

También puedes comprobar la versión actual de SaltStack instalada en los servidores «minion1″ y «minion2» mediante el siguiente comando.

En el momento de escribir esto, la última versión del software SaltStack es la v3004.2, que está instalada en todos los servidores SaltStack.

salt '*' test.version

Ejecutar un comando arbitrario con SaltStack

Saltstack te permite ejecutar comandos arbitrarios desde el servidor maestro a todos los servidores subordinados. Para ello, tendrás que utilizar un módulo de ejecución proporcionado por Saltstack.

Ejecuta el siguiente comando salt desde el servidor maestro. Esto ejecutará el comando uname -a en todos los servidores subordinados, y este comando se ejecuta a través del módulo cmd.

salt '*' cmd.run 'uname -a'

Como puedes ver en la siguiente captura de pantalla, cada uno de los servidores subordinados devuelve la salida del comando uname -a.

ejecutar comando artbitrario saltstack

Otro ejemplo es que puedes utilizar el módulo pkg para gestionar la instalación de paquetes, el repositorio y todo lo relacionado con la gestión de paquetes. Esto es compatible con varias distribuciones de Linux, incluidas las basadas en RHEL, como CentOS y Rocky Linux, y también las basadas en Debian, como Ubuntu.

Actualiza los repositorios disponibles en todos los servidores minion.

salt '*' pkg.refresh_db

Comprueba el paquete bash mediante el comando salt que aparece a continuación.

salt '*' pkg.show bash

Instala el paquete llamado chrony en todos los servidores minion.

salt '*' pkg.install chrony

Comprueba la lista de repositorios en todos los servidores minion.

salt '*' pkg.list_repos

Comprueba la lista de actualizaciones de paquetes disponibles en todos los servidores minion.

salt '*' pkg.list_upgrades

Otro gran ejemplo aquí es el módulo de servicio que te permite gestionar servicios en varias distribuciones de Linux, incluida la distribución con systemd.

Comprueba si el servicio chronyd está disponible o no.

salt '*' service.available chronyd

Habilita el servicio chronyd para que se inicie en el arranque del sistema en todos los servidores minion.

salt '*' service.enabled chronyd

Comprobar la lista de servicios en ejecución en todos los servidores.

salt '*' service.get_running

Comprueba el comando ExecStart= para cada servicio disponible en todos los servidores.

salt '*' service.execs

Instalación de LEMP Stack con SaltStack State

Has aprendido el comando salt básico para ejecutar un comando arbitrario contra todos los servidores SaltStack Minion. Ahora crearás un nuevo archivo de estado SaltStack para instalar la Pila LEMP básica (Linux, Nginx, MariaDB y el PHP-FPM). Aquí podrás utilizar SaltStack como gestor de la configuración de tu infraestructura de servidores y de los despliegues automáticos de aplicaciones.

El repositorio de Rocky Linux proporciona varias versiones de los paquetes Nginx, MariaDB y PHP-FPM. Para instalar la última versión de esos paquetes, tendrás que habilitarla a través del módulo del gestor de paquetes DNF.

En el momento de escribir esto, no existe un modelo de SaltStack que sea equivalente al comando«dnf module» para la distribución basada en RHEL. Por tanto, deberás habilitar el módulo manualmente a través del comando arbitrario de SaltStack.

Ejecuta el siguiente comando para habilitar el módulo para Nginx v1.20, MariaDB v10.5 y los paquetes PHP v8.0.

salt '*' cmd.run 'sudo dnf module enable nginx:1.20 -y'
salt '*' cmd.run 'sudo dnf module enable mariadb:10.5 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.0 -y'

Ahora crea un nuevo directorio central de gestión de la configuración «/srv/salt/lemp» y crea un nuevo archivo «init.sls » utilizando el siguiente comando.

mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls

Añade la siguiente configuración al archivo. En este ejemplo, crearemos el estado Salt llamado«lemp» para instalar los paquetes LEMP Stack. Además, nos aseguraremos de que todos los servicios de LEMP Stack (Nginx, MariaDB y PHP-FPM) estén habilitados y en ejecución en todos los servidores SaltStack Minion.

lemp_stack:
 pkg.installed:
   - pkgs:
     - nginx
     - mariadb-server
     - php
     - php-fpm
nginx:
service.running:
- enable: True
- reload: True

mariadb:
service.running:
- enable: True
- reload: True

php-fpm:
service.running:
- enable: True
- reload: True

Cuando hayas terminado, guarda y cierra el archivo.

Ahora, para verificar tu configuración del estado de Salt, utiliza el comando salt que aparece a continuación. Este comando probará y verificará tu configuración de estado de Salt en los servidores SaltStack Minion.

sudo salt * state.show_sls lemp

ejecutar la sal de prueba

Para aplicar el estado Salt a todos los servidores SaltStack Minion, puedes utilizar el comando salt de abajo. Ahora el LEMP Stack se instalará automáticamente en los servidores «minion1» y «minion2«.

sudo salt '*' state.apply lemp

En la siguiente captura de pantalla, puedes ver que el LEMP Stack está instalado en los servidores «minion1» y «minion2«.

instalar LEMP Stack con el estado SaltStack

Conclusión

En este tutorial, has finalizado la instalación de SaltStack Master y SaltStack Minion en servidores Linux Rocky. También has aprendido el uso básico del comando salt para ejecutar un comando arbitrario contra SaltStack Minion. Al final, también has aprendido a crear una configuración de estado de Salt para instalar la pila LEMP automáticamente y a configurar SaltStack como gestión de la configuración para el despliegue de aplicaciones.

Scroll al inicio