====== 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|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 =====
Une fonctionnalité interessante à creuser:
[[https://docs.saltproject.io/en/latest/ref/clouds/all/salt.cloud.clouds.saltify.html|https://docs.saltproject.io/en/latest/ref/clouds/all/salt.cloud.clouds.saltify.html]]
https://docs.saltproject.io/en/latest/topics/cloud/index.html
==== Sur les machines Windows ====
[[https://docs.saltproject.io/salt/install-guide/en/latest/topics/install-by-operating-system/windows.html#install-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|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|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