Cómo instalar Saltstack Master y Minion en Debian 11
SaltStack es un software de automatización y gestión de la configuración gratuito, de código abierto y basado en Python. Es una herramienta de línea de comandos que te ayuda a gestionar tu infraestructura desde una ubicación central. SaltStack está formado por cuatro componentes. A continuación se muestra una breve explicación de cada componente:
- Salt Master actúa como controlador de la línea de comandos para sus subordinados. Se utiliza para controlar y gestionar una serie de minions.
- Los minions de Salt son demonios esclavos que reciben configuraciones y comandos del maestro.
- Lafórmula son los archivos de gestión de la configuración.
- Laejecución es una serie de comandos y módulos que se ejecutan en los minions.
En este artículo, te mostraré cómo instalar los sistemas SaltStack Master y Minion en Debian 11.
Requisitos previos
- Dos servidores que ejecuten Debian 11.
- Una contraseña de root configurada en el servidor.
Instalar Saltstack Master
Por defecto, SaltStack no está incluido en el repositorio por defecto de Debian 11. Así que tendrás que añadir el repositorio de SaltStack a APT. Puedes añadirlo ejecutando el siguiente comando:
curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list
Una vez añadido el repositorio, actualiza la caché del repositorio con el siguiente comando:
apt-get update -y
A continuación, instala las dependencias necesarias utilizando el siguiente comando:
apt-get install python3 salt-common -y
A continuación, instala el maestro SaltStack con el siguiente comando:
apt-get install salt-master -y
Después de la instalación exitosa, puedes pasar al siguiente paso.
Configurar el maestro Saltstack
A continuación, deberás definir la interfaz bind en el archivo de configuración de SaltSTack.
nano /etc/salt/master
Cambia la siguiente línea:
interface: 0.0.0.0
Guarda y cierra el archivo y luego reinicia el maestro SaltStack con el siguiente comando:
systemctl restart salt-master
Ahora puedes verificar el estado del SaltStack con el siguiente comando:
systemctl status salt-master
Obtendrás la siguiente salida:
? salt-master.service - The Salt Master Server
Loaded: loaded (/lib/systemd/system/salt-master.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-12 07:39:48 UTC; 9s ago
Docs: man:salt-master(1)
file:///usr/share/doc/salt/html/contents.html
https://docs.saltproject.io/en/latest/contents.html
Main PID: 19403 (salt-master)
Tasks: 32 (limit: 2341)
Memory: 201.5M
CPU: 6.109s
CGroup: /system.slice/salt-master.service
??19403 /usr/bin/python3 /usr/bin/salt-master
??19407 /usr/bin/python3 /usr/bin/salt-master
??19431 /usr/bin/python3 /usr/bin/salt-master
??19434 /usr/bin/python3 /usr/bin/salt-master
??19435 /usr/bin/python3 /usr/bin/salt-master
??19436 /usr/bin/python3 /usr/bin/salt-master
??19437 /usr/bin/python3 /usr/bin/salt-master
??19444 /usr/bin/python3 /usr/bin/salt-master
??19445 /usr/bin/python3 /usr/bin/salt-master
??19446 /usr/bin/python3 /usr/bin/salt-master
??19448 /usr/bin/python3 /usr/bin/salt-master
??19451 /usr/bin/python3 /usr/bin/salt-master
??19454 /usr/bin/python3 /usr/bin/salt-master
Feb 12 07:39:48 debian11 systemd[1]: Starting The Salt Master Server...
Feb 12 07:39:48 debian11 systemd[1]: Started The Salt Master Server.
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar Saltstack Minion
En este punto, SaltStack Master está instalado y configurado. Ahora, entra en otra máquina y añade el repositorio de SaltStack Minion con el siguiente comando:
curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list
Una vez añadido el repositorio, actualiza la caché del repositorio con el siguiente comando:
apt-get update -y
A continuación, instala el SaltStack Minion con el siguiente comando:
apt-get install salt-minion -y
Después de la instalación exitosa, edita el archivo de configuración de SaltStack Minion y define la dirección IP maestra.
nano /etc/salt/minion
Cambia la siguiente línea:
master: salt-master-ip
Guarda y cierra el archivo cuando hayas terminado.
A continuación, tendrás que autenticar a los minions utilizando la huella digital pública del maestro.
En la máquina maestra de Salt, haz una lista de todas las huellas digitales utilizando el siguiente comando:
salt-key --finger-all
Obtendrás la siguiente salida:
Local Keys: master.pem: b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78 master.pub: 5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1
Ahora, copia la línea de la huella maestra.pub y añádela al archivo de configuración de los minions.
En la máquina Minion, edita el archivo de configuración:
nano /etc/salt/minion
Añade la huella digital maestra como se muestra a continuación:
master_finger: '5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1'
También tendrás que definir el nombre del Minion:
id: Minion1
Guarda y cierra el archivo y luego reinicia el SaltStack Minion con el siguiente comando:
systemctl restart salt-minion
También puedes verificar el estado del SaltStack Minion con el siguiente comando:
systemctl status salt-minion
Obtendrás la siguiente salida:
? salt-minion.service - The Salt Minion
Loaded: loaded (/lib/systemd/system/salt-minion.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-12 07:46:04 UTC; 7s ago
Docs: man:salt-minion(1)
file:///usr/share/doc/salt/html/contents.html
https://docs.saltproject.io/en/latest/contents.html
Main PID: 2324 (salt-minion)
Tasks: 8 (limit: 2341)
Memory: 59.9M
CPU: 1.185s
CGroup: /system.slice/salt-minion.service
??2324 /usr/bin/python3 /usr/bin/salt-minion
??2326 /usr/bin/python3 /usr/bin/salt-minion
??2328 /usr/bin/python3 /usr/bin/salt-minion
Feb 12 07:46:04 debian11 systemd[1]: Starting The Salt Minion...
Feb 12 07:46:04 debian11 systemd[1]: Started The Salt Minion.
También puedes comprobar la huella digital del minion con el siguiente comando::
salt-call key.finger --local
Obtendrás la siguiente salida:
local:
14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27
En la máquina SaltStack Master, comprueba la huella dactilar utilizando el siguiente comando
salt-key --finger-all
Obtendrás la siguiente salida:
Local Keys: master.pem: b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78 master.pub: 5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1 Unaccepted Keys: Minion1: 14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27
En la máquina SaltStack Master, acepta la huella digital del minion utilizando el siguiente comando::
salt-key -a Minion1
Obtendrás la siguiente salida:
The following keys are going to be accepted: Unaccepted Keys: Minion1 Proceed? [n/Y] Y Key for minion Minion1 accepted.
Ahora, verifica la conexión entre el Maestro y el Minion utilizando el siguiente comando:
salt Minion1 test.ping
Obtendrás la siguiente salida:
Minion1:
True
Una vez que hayas terminado, puedes pasar al siguiente paso.
Controlar a los súbditos desde el maestro
Después de la conexión exitosa entre el Maestro y el Súbdito. Empecemos a ejecutar algunos comandos en los Minions.
Ejecuta el siguiente comando para listar el espacio de disco disponible en el Minion:
salt '*' disk.usage
Obtendrás la siguiente salida:
Minion1:
----------
/:
----------
1K-blocks:
51538400
available:
47658628
capacity:
4%
filesystem:
/dev/sda1
used:
1661604
/dev:
----------
1K-blocks:
998936
available:
998936
capacity:
0%
filesystem:
udev
used:
0
/dev/shm:
----------
1K-blocks:
1015232
available:
1015152
capacity:
1%
filesystem:
tmpfs
used:
80
Para instalar el paquete Apache en el Minion, ejecuta el siguiente comando:
salt Minion1 pkg.install apache2
Obtendrás el siguiente resultado:
Minion1:
----------
apache2:
----------
new:
2.4.52-1~deb11u2
old:
apache2-bin:
----------
new:
2.4.52-1~deb11u2
old:
apache2-data:
----------
new:
2.4.52-1~deb11u2
old:
apache2-utils:
----------
new:
2.4.52-1~deb11u2
old:
libapr1:
----------
new:
1.7.0-6+deb11u1
old:
libaprutil1:
----------
new:
1.6.1-5
old:
libaprutil1-dbd-sqlite3:
----------
new:
1.6.1-5
old:
libaprutil1-ldap:
----------
new:
1.6.1-5
old:
Para comprobar la memoria libre en el Minion, ejecuta el siguiente comando:
salt '*' cmd.run 'free -m'
Obtendrás el siguiente resultado:
Minion1:
total used free shared buff/cache available
Mem: 1982 140 1392 2 450 1691
Swap: 0 0 0
Utiliza el Archivo de Estado de Salt para gestionar los Minions
Los archivos de estado también se conocen como archivos de gestión de la configuración que se utilizan para configurar y gestionar los Minions.
Para crear un archivo de estado, tendrás que crear el entorno base para SaltStack.
mkdir /src/salt
A continuación, crea un archivo de estado con el siguiente comando:
nano /src/salt/setup.sls
Añade el siguiente código para instalar el paquete PHP, UNZIP y Apache en Minions:
network_utilities:
pkg.installed:
- pkgs:
- php
- unzip
apache2_pkg:
pkg.installed:
- name: apache2
apache2_service:
service.running:
- name: apache2
- enable: True
- require:
- pkg: apache2_pkg
Guarda y cierra el archivo y luego aplica la configuración a todos los Minions con el siguiente comando:
salt '*' state.apply setup
Obtendrás la siguiente salida:
Minion1:
----------
ID: network_utilities
Function: pkg.installed
Result: True
Comment: The following packages were installed/updated: php, unzip
Started: 07:51:22.424504
Duration: 17349.907 ms
Changes:
----------
libapache2-mod-php7.4:
----------
new:
7.4.25-1+deb11u1
old:
php:
----------
new:
2:7.4+76
old:
php-common:
----------
new:
2:76
old:
php7.4:
----------
new:
7.4.25-1+deb11u1
old:
php7.4-cli:
----------
new:
7.4.25-1+deb11u1
old:
php7.4-common:
----------
new:
7.4.25-1+deb11u1
old:
php7.4-json:
----------
new:
7.4.25-1+deb11u1
old:
php7.4-opcache:
----------
new:
7.4.25-1+deb11u1
old:
php7.4-readline:
----------
new:
7.4.25-1+deb11u1
old:
psmisc:
----------
new:
23.4-2
old:
unzip:
----------
new:
6.0-26
old:
----------
ID: apache2_pkg
Function: pkg.installed
Name: apache2
Result: True
Comment: All specified packages are already installed
Started: 07:51:39.780956
Duration: 1029.457 ms
Changes:
----------
ID: apache2_service
Function: service.running
Name: apache2
Result: True
Comment: The service apache2 is already running
Started: 07:51:40.812210
Duration: 35.61 ms
Changes:
Summary for Minion1
------------
Succeeded: 3 (changed=1)
Failed: 0
------------
Total states run: 3
Total run time: 18.415 s
Conclusión
Enhorabuena! has instalado y configurado con éxito SaltStack Master y Minion en el servidor Debian 11. También hemos explicado cómo gestionar los Minions utilizando los archivos de estado y la línea de comandos. Espero que esto te ayude a automatizar y gestionar tu infraestructura desde la ubicación central. No dudes en preguntarme si tienes alguna duda.