Introducción a Salt IT Automation Framework en AlmaLinux 9

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 a múltiples máquinas directamente. Salt está escrito principalmente en Python y diseñado utilizando la arquitectura Master y Minion. SaltStack master es el controlador central de la gestión de la configuración de Salt, y los Minions son servidores gestionados por SaltStack Master, o tú nombras a los minions como servidores de destino.

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

Este tutorial te mostrará cómo instalar Salt en servidores AlmaLinux 9. También aprenderás el uso básico de los módulos Salt y crearás el primer proyecto de estado Salt. En este caso, crearás un proyecto de estado Salt para instalar LEMP Stack.

Requisitos previos

Para empezar con esta guía, asegúrate de que tienes lo siguiente:

  • 3 servidores AlmaLinux 9.
  • Un usuario no root con privilegios de administrador sudo.
  • Un SELinux con estado Permisivo o Deshabilitado.

Configuración de Firewalld en Salt Maestro

Antes de instalar Salt, debes abrir los puertos 4505 y 4506 en el servidor Salt Master, que serán utilizados por los Salt Minions para conectarse al Salt Master. Para ello, utilizarás Firewalld.

Ejecuta el siguiente comando para abrir los puertos 4505 y 4506 del servidor Salt Master.

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

Ahora recarga el firewalld para aplicar los cambios y, a continuación, comprueba la lista de puertos abiertos en firewalld utilizando el siguiente comando.

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

Tras ejecutar el comando, los puertos 4505 y 4506 se añaden a firewalld.

configurar firewalld

Añadir el repositorio Salt

Los paquetes de Salt están disponibles en el repositorio oficial de Salt. Ahora, añadirás el repositorio Salt a todos tus servidores AlmaLinux, tanto Salt Master como Minions.

Ejecuta el siguiente comando para importar la clave GPG de Salt.

sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub

Ahora descarga el repositorio Salt a tus sistemas utilizando el comando que aparece a continuación.

curl -fsSL https://repo.saltproject.io/salt/py3/redhat/9/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

añadir repo

Una vez añadida la clave Saltk GPG y el repositorio, ejecuta el comando dnf que aparece a continuación para verificar la lista de repositorios disponibles en tus sistemas y descargar los metadatos de todos los repositorios disponibles.

sudo dnf repolist
sudo dnf makecache

Suponiendo que el comando tenga éxito, la salida que recibas debería ser similar a la siguiente:

recargar repo

Instalación y configuración de Salt Master

Después de añadir el repositorio Salt, instalarás y configurarás el paquete salt-master en el servidor principal Salt Master.

Instala el paquete salt-master utilizando el siguiente comando dnf. Introduce y cuando se te solicite para continuar con la instalación.

sudo dnf install salt-master

instalar salt-master

Una vez completada la instalación, abre la configuración por defecto de Salt /etc/salt/master utilizando el siguiente comando del editor nano.

sudo nano /etc/salt/master

Cambia la opción interfaz por defecto por tu dirección IP local y la opción ID por el nombre de host de tu servidor. En este caso, el servidor Salt Master está configurado con la dirección IP local 192.168.5.50 y el nombre de host master.

interface: 192.168.5.50
id: master

Cuando hayas terminado, guarda y cierra el archivo.

A continuación, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio salt-master.

sudo systemctl start salt-master
sudo systemctl enable salt-master

start enable salt-master

Por último, verifica el servicio salt-master para asegurarte de que se está ejecutando ejecutando el siguiente comando.

sudo systemctl status salt-master

Si se ejecuta correctamente, la salida mostrada debería ser activa (en ejecución), lo que indica que el servicio salt-master se está ejecutando.

comprobar maestro-sal

Instalación y configuración de Salt Minion

Tras configurar Salt Master, el siguiente paso es instalar salt-minion y configurar los servidores Minion para que se conecten al Salt Master.

Ejecuta el siguiente comando dnf para instalar el paquete salt-minion en tus servidores Minion. Escribe y para confirmar la instalación.

sudo dnf install salt-minion

instalar sal-minion

Tras la instalación, abre la configuración por defecto de Salt /etc/salt/minion utilizando el siguiente comando del editor nano.

sudo nano /etc/salt/minion

En la opción maestro, introduce la dirección IP del maestro Salt.

master: 192.168.5.50

Introduce la dirección IP local del minion en la opción interfaz e introduce el nombre de host del servidor en la opción id.

interface: 192.168.5.20
id: minion1

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio salt-minion.

sudo systemctl start salt-minion
sudo systemctl enable salt-minion

start enable sal-minion

Una vez iniciado el servicio salt-minion, verifícalo utilizando el siguiente comando.

sudo systemctl status salt-minion

Si todo va bien, la salida estará activa (en ejecución), lo que confirma que el servicio salt-minion se está ejecutando.

comprobar sal-minión

Registro de los Minions de Salt en Salt Master

Llegados a este punto, el servicio Salt-minion está en ejecución. En ese momento, las Minions de Sal envían una solicitud para registrarse en el Salt Master. Para solicitar el registro de las Minions de Sal, debes aceptar la clave de la huella digital en el Salt Master.

Dirígete al Salt Master y ejecuta el comando salt-key que aparece a continuación para obtener la lista de claves de huellas dactilares.

salt-key --finger-all

Aquí aparecen las huellas de los servidores Salt Minion minion1 y minion2, que aún están en el estado«Claves no aceptadas«.

listar teclas

Ejecuta el siguiente comando para aceptar la clave Salt Minion de los servidores minion1 y minion2.

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

Introduce Y cuando se te pida que aceptes la clave, y deberías obtener una salida como ‘Clavepara minion minion1/2 aceptada‘.

aceptar llaves

Ahora verifica de nuevo la lista de claves de huellas dactilares en el Salt Master utilizando el siguiente comando.

salt-key --finger-all

Aquí la huella digital de los servidores Salt Minion para minion1 y minion2 está disponible dentro de la sección Claves Aceptadas.

listar teclas

Ahora puedes controlar los servidores Salt Minion desde el Salt Master mediante la línea de comandos Salt.

Ejecuta el siguiente comando salt para verificar la conexión entre Salt Master y los Minions y verificar la versión de Salt en los servidores Minion.

salt '*' test.ping
salt '*' test.version

Si la conexión entre Salt Master y Minion se realiza correctamente, se mostrará la salida True. También puedes ver que está instalada la versión Salt 3006.4, que resulta del parámetro test.version.

sal de prueba

Además, puedes especificar el minion de destino utilizando el comando salt de esta forma.

salt minion1 test.ping

Uso básico del Módulo de Estado Salt

En la siguiente sección, aprenderás a utilizar el módulo de estado Salt para gestionar servidores Minion. Explorarás algunos de los módulos de estado de Salt, como cmd para ejecutar comandos arbitrarios de Linux, pkg para gestionar paquetes y repositorios, y el módulo service para gestionar servicios.

Ejecutar comandos arbitrarios mediante el módulo cmd

Ejecuta el siguiente comando para ejecutar comandos específicos de Linux a través del módulo de estado cmd. En este ejemplo, comprobarás los detalles del núcleo Linux mediante el comando uname -a.

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

ejecutar comando linux mediante salt

Gestionar paquetes y repositorios mediante el módulo pkg

Ahora, utiliza el siguiente módulo de estado pkg para gestionar paquetes y repositorios en tus servidores Minion.

Comprueba la lista de repositorios mediante pkg.list_repos, y luego actualiza los repositorios mediante pkg.refresh_db.

salt '*' pkg.list_repos
salt '*' pkg.refresh_db

También puedes comprobar la lista de actualizaciones de paquetes disponibles utilizando el argumento pkg.list_upgrades que aparece a continuación.

salt '*' pkg.list_upgrades

Para instalar un paquete concreto, utiliza el argumento pkg.install que aparece a continuación.

salt '*' pkg.install vim

pkg instalar

Gestionar servicios mediante el módulo service

A continuación, puedes utilizar el módulo de estado service para gestionar los servicios de tus servidores Minion.

Utiliza el argumento service.available para asegurarte de que el servicio está disponible en el servidor de destino. O utiliza el argumento service.enabled para asegurarte de que el servicio de destino está habilitado, o también puedes utilizar service.get_running para asegurarte de que el servicio se está ejecutando.

salt '*' service.available chronyd
salt '*' service.enabled chronyd
salt '*' service.get_running

comprobar servicio

Por último, también puedes comprobar el comando de inicio que ejecuta un servicio concreto utilizando el argumento service.execs.

salt '*' service.execs

Crear el primer estado de Salt

En esta sección, crearás el primer proyecto de estado Salt para instalar la pila LEMP (Nginx, MariaDB y PHP-FPM) en los servidores Minion de destino.

Antes de continuar, ejecuta el siguiente comando para habilitar el módulo de repositorio que se utilizará para instalar paquetes de versiones específicas.

salt '*' cmd.run 'sudo dnf module enable nginx:1.22 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.1 -y'

activar el módulo repo mediante salt

Ahora, crea un nuevo directorio de configuración /srv/salt/ que se utilizará para almacenar tu estado Salt.

mkdir -p /srv/salt/

Ejecuta el siguiente comando para crear un nuevo directorio de proyecto /srv/salt/lemp y el archivo init.sls.

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

Introduce la siguiente configuración en el archivo. En este caso, instalarás los paquetes LEMP Stack en los servidores Minion mediante el módulo de estado pkg y te asegurarás de que cada servicio esté en ejecución y activado mediante el módulo de estado service.

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

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para mostrar los detalles de la configuración de estado del proyecto lemp.

sudo salt * state.show_sls lemp

Una vez ejecutado el comando, deberías obtener la configuración detallada como la siguiente.

comprueba el estado de la sal

Ahora ejecuta el siguiente comando para aplicar el estado lemp a los servidores Minion.

sudo salt '*' state.apply lemp

Deberías ver el informe generado de la instalación automática. En este caso, la instalación de los paquetes LEMP Stack en ambos servidores Minion se ha realizado correctamente.

aplicar estado de sal

A continuación se muestran los detalles cuando los servicios se están ejecutando y están habilitados.

cada servicio en funcionamiento

Conclusión

Para concluir, ya has instalado Salt en servidores AlmaLinux 9 paso a paso. Has instalado y configurado tanto Salt Master como Minions en servidores AlmaLinux, y también has aprendido el uso básico de los módulos de estado de Salt, y has creado tu primer proyecto de estado de Salt para instalar LEMP Stack.

También te podría gustar...