¿Que es SaltStack?
SaltStack es un software de código abierto basado en Python que sirve para automatizar la ejecución remota de tareas y configuraciones.
Es de la familia de Chef, Puppet y Ansible, sobre este ultimo hablamos en el blog.
A través de la "Infraestructura como código", SaltStack nos permite realizar la implementación y administración de sistemas, automatización de la configuración, orquestación, corrección de vulnerabilidades, etc.
La arquitectura de SaltStack:
Utiliza una arquitectura maestro-esclavo y sus componentes mas importantes son:
Master: Servidor que se comunica con los agentes instalados en los dispositivos finales llamados Minions.
Minions : Son los nodos en los cuales se instala un agente que le permite al Master administrarlos y ejecutar comandos de forma remota.
Grains: Es una interfaz que proporciona información del sistema, como el sistema operativo, la memoria, el nombre de dominio, el núcleo, la dirección IP, etc.
States: Los estados son archivos YAML (.SLS) para almacenar la configuración de los Minions.
El Master y los Minions se comunican a través de Keys. Una vez que se forma una red segura entre ellos, el cliente puede comunicarse sin problemas con el Master para recibir instrucciones.
Instalar SaltStack:
Agregamos la llave del repo:
wget -O - https://repo.saltstack.com/py3/ubuntu/20.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
Agregamos el repo en /etc/apt/sources.list.d/saltstack.list:
deb http://repo.saltstack.com/py3/ubuntu/20.04/amd64/latest focal main
Actualizamos el sistema:
sudo apt-get update
Instalación del Master:
sudo apt-get install salt-master
Verificamos la versión:
salt --versions-report
Ahora editamos el archivo del Master:
sudo nano /etc/salt/master
Y cambiamos las siguientes lineas:
interface: 192.168.2.116
gather_job_timeout: 120
timeout: 120
Verificamos el estado del Master:
systemctl status salt-master
Verificamos las llaves:
sudo salt-key -L
Vemos que no hay ninguna Aceptada, ni Denegada ni Rechazada.
Instalación del Minion:
Agregamos la llave del repo:
wget -O - https://repo.saltstack.com/py3/ubuntu/20.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -
Agregamos el repo en /etc/apt/sources.list.d/saltstack.list:
deb http://repo.saltstack.com/py3/ubuntu/20.04/amd64/latest focal main
Actualizamos el sistema:
sudo apt-get update
Ahora instalamos el Minion:
sudo apt-get install salt-minion
Editamos el archivo del Minion:
sudo nano /etc/salt/minion
Y agregamos las siguientes lineas:
master: 192.168.2.116
id: primer-minion
Verificamos el estado del Minion:
systemctl status salt-minion
En la parte del archivo minion donde decía master podríamos haber dejado la palabra salt y editar el archivo /etc/hosts asignándole a salt la IP del servidor, pero para los fines de este ejemplo directamente usamos la IP y no el nombre DNS.
Reiniciamos el servicio para que el Minion intente conectarse al Master:
systemctl restart salt-minion
Chequeamos las llaves en el Master:
sudo salt-key -L
Y vemos que ya nos aparece el primer-minion (que es el ID con el que definimos nuestro Minion) pero en las keys no aceptadas: