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.
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
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:
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
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
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.
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
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
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.
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«.
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‘.
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.
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.
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'
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
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
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'
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.
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.
A continuación se muestran los detalles cuando los servicios se están ejecutando y están habilitados.
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.