Mostrando entradas con la etiqueta Saltstack. Mostrar todas las entradas
Mostrando entradas con la etiqueta Saltstack. Mostrar todas las entradas

viernes, 19 de junio de 2020

Instalar Saltstack en Ubuntu

¿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: