====== 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