Salt (SaltStack): installation de la solution

SaltStack, souvent appelé simplement “Salt”, est une plateforme d'automatisation permettant de gérer et automatiser les configurations de systèmes, les tâches administratives et le déploiement d'applications sur des machines clientes cibles Linux ou Windows.

IMPORTANT du fait de la nécessité et du fonctionnement le serveur salt et les minions doivent avoir un acces réseau (acl) adapté et droits élevés! Il y a donc un très fort risque de sécurité du fait de la surface d'attaque exposée !!!

La sécurisation du serveur salt est critique!

1. Installation du serveur Salt

Pour l'installation sur une Debian, la documentation officielle est : https://docs.saltproject.io/salt/install-guide/en/latest/topics/install-by-operating-system/debian.html

Selon la version on récupère le dépot

Pour Debian 11

mkdir /etc/apt/keyrings

sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/11/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/11/amd64/latest bullseye main" | sudo tee /etc/apt/sources.list.d/salt.list

Puis on installe les paquets

sudo apt-get update
sudo apt-get install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api

On lance les services

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl enable salt-syndic && sudo systemctl start salt-syndic
sudo systemctl enable salt-api && sudo systemctl start salt-api

Salt-Syndic: Le Salt-Syndic est un Salt-Master intermédiaire. Il agit entre le Salt-Master et les Salt-Minions.

Salt-SSH: Parfois, il peut arriver qu’un Salt-Minion ne puisse pas être exécuté sur un système cible. Via SSH, le Salt-Master peut contacter directement ce système. Toutefois, cela élimine l’échange via ZeroMQ, ce qui peut ralentir considérablement le processus. En outre, certaines fonctions et certains modules peuvent également être omis.

Salt-Proxy Minion: Avec le Salt-Proxy Minion, il est possible de gérer des appareils tiers. Cela inclut, par exemple, les dispositifs de réseau tels que les routeurs ou les commutateurs.

On remarque que sur le serveur on a le salt master ET le salt minion ! Le serveur doit pouvoir gérer des machines distantes. Ces machines doivent avoir un “agent”, le salt-minion, qu'il faut donc installer.

2 -Installation des agents minion

Sur les machines Windows

https://docs.saltproject.io/salt/install-guide/en/latest/topics/install-by-operating-system/windows.html#install-windows

Une fois le fichier d'installation récupéré (ici l'exe) on lance soit en interface graphique soit en ligne de commande (via ghost/ssh/cmd local/etc…)

Salt-Minion-xxxxx-AMD64-Setup.exe /S /master=master-salt.beemoon.fr /minion-name=monminion

pour /minion-name on ne met pas le domaine beemoon.fr

Sur les machines Linux

même principe que pour la partie serveur mais que pour le minion.

Penser au proxy si nécessaire

export http_proxy='http://monproxy.fr:3128'
export https_proxy='http://monproxy.fr:3128'

Installer le dépôt du client (comme pour le serveur)

mkdir /etc/apt/keyrings
sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/11/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/11/amd64/latest bullseye main" | sudo tee /etc/apt/sources.list.d/salt.list

Installer l'agent minion

apt install salt-minion -y

Editer le fichier de configuration

vi /etc/salt/minion

Changer les paramètres suivants:

master: master-salt.beemoon.fr
ipv6: false
master_port: 4506
user: root
random_master: False

Editer dans /etc/salt/minion_id le nom du minion (client) et garder seulement le nom d'hôte court.

Par exemple, monminion.beemoon.fr deviendra monminion

vi /etc/salt/minion_id

démarrer le service

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

Controle depuis le serveur salt

Maintenant le serveur salt et les agents minion sont installés. Il faut désormais que le serveur accepte la connexion des minions avec la commande (à lancer sur le serveur salt): salt-key

La communication entre agent et serveur salt se base sur des échanges de clés: https://docs.saltproject.io/salt/install-guide/en/latest/topics/accept-keys.html#accept-keys

Cette commande gére les clés d'authentification entre le maître (master) et les agents (minions).

salt-key -L # List all keys
salt-key -A # Accept all unaccepted keys

On peut lancer des tests basics de controle

Le status des minions connu par le serveur salt

salt-run manage.status

la version de l'agent installé sur tous les minions

salt '*' test.version

Voilà Salt est opérationnel. Voir maintenant le fonctionnement de salt!

En cas de pb avec les clé on peut les remplacer:

https://docs.saltproject.io/en/latest/ref/modules/all/salt.modules.saltutil.html#salt.modules.saltutil.regen_keys

ou avec l'aide

salt-key --help
Dernière modification : le 2024/09/11