============= = Saltstack = ============= Salt ou SaltStack est un logiciel de gestion de configuration écrit en Python, fonctionnant sur le principe client-serveur. Salt a pour but de rendre la gestion de configuration simple et flexible. Il s'agit d'une alternative à Puppet, Ansible et Chef. (Wikipédia) Les communications entre clients et serveurs sont basées sur une bibliothèque de messagerie asynchrone haute performance apellée ZeroMQ. Les clients sont appelés "les minions" et le serveur (voire les serveurs) est appellé "master". Les échanges entre minions et masters sont entièrement cryptés. Les ports par défaut utilisés par Saltstack sont les ports 4505 et 4506. Installation : ============== Cette installation préservera la version 2018.3 de SaltStack. Lors des mises à jour éventuelles des OS, la dernière version mineure s'installera, pas les nouvelles versions majeures. Sur Debian 9, la vmSaltstack : ------------------------------ Importer et installer la clef du dépôt SaltStack : # wget -O - https://repo.saltstack.com/apt/debian/9/amd64/2018.3/SALTSTACK-GPG-KEY.pub | apt-key add - Ajouter au fichier /etc/apt/sources.list la ligne : deb http://repo.saltstack.com/apt/debian/9/amd64/2018.3 stretch main Synchroniser avec les dépôts : # apt update Installer le paquet 'salt-master' : # apt install salt-master Modifier la 15ème ligne du fichier /etc/salt/master afin d'indiquer l'adresse IP de l'interface à utiliser par le master : "interface: 10.0.x.104" Redémarrer le service : # systemctl restart salt-master Nous venons d'installer salt-master sur la machine. Cela permettra de gérer les différents minions. Il est également possible d'installer salt-minion sur le master. Sur Fedora : ------------ Les paquets sont disponibles dans le dépôt standard de Fedora. Installer le paquet 'salt-minion' : # dnf install salt-minion-2018.3.2 Activer le service au démarrage : # systemctl enable salt-minion Modifier la 11ème ligne du fichier /etc/salt/minion afin d'indiquer l'adresse IP du master : "master: 10.0.x.104" Redémarrer le service : # systemctl restart salt-minion Sur CentOS : ------------ Activer le dépôt 'Extra' : # yum-config-manager --enable extras Activer le dépôt 'Epel' : # yum install epel-release Installer le paquet 'salt-minion' : # yum install salt-minion Activer le service au démarrage : # systemctl enable salt-minion Modifier la 16ème ligne du fichier /etc/salt/minion afin d'indiquer l'adresse IP du master : "master: 10.0.x.104" Redémarrer le service : # systemctl restart salt-minion Post-Installation : =================== Une fois le master et les minions installés, le master doit autoriser les différents minions via leur clef d'identification : Sur le Master : --------------- Afficher la clef d'identification du master : # salt-key -F master Afficher la liste des différents minions et leur clef : # salt-key -L Autoriser l'ensemble des minions en acceptant leur clef : # salt-key -A En passant le paramètre "-a", en minuscule, on peut autoriser un seul minion à la fois. Une fois les minions acceptés, il est maintenant possible de gérer leur configuration et leur état depuis le master. Relancer la commande "salt-key -L" afin de constater que les différents minions ont été acceptés. ------------------ Remote execution : ------------------ Le premier mode par lequel il est possible de gérer les minions est le mode d'exécution à distance. Commandes 'Salt' : ------------------ Saltstack dispose de ses propres commandes afin de gérer les minions. La commande 'test.ping' permet de lister les minions présents et joignables (l'étoile signifie l'ensemble des minions) : # salt '*' test.ping Quelques commandes utiles pour l'administration d'un parc informatique : Lister les mises à jour disponibles sur chaque minion : # salt '*' pkg.list_upgrades Effectuer les mises à jour : # salt '*' pkg.upgrade Installer le paquet 'openssh-server': # salt '*' pkg.install openssh-server Les diférents paramètres possibles pour le module 'pkg' de gestion des paquets sont nombreux. Pour obtenir la liste : # salt '*' sys.doc pkg La documentation de ce module est également disponible sur internet : https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pkg.html La liste des différents modules et leur documentation est disponible à l'adresse : https://docs.saltstack.com/en/latest/salt-modindex.html Ciblage des minions : --------------------- Il y a de nombreuses méthodes pour cibler des mignons : - les 'grains' (caractéristiques communes à une machine ou un groupe de machines). - les listes d'IDs - les IPs ou Subnets - une méthode composée ("compound") de méthodes précédentes - les groupes ('node groups'). Ils doivent être préalablement créés par l'administrateur. Concernant les grains : Pour demander l'ID des différents minions connectés : # salt '*' grains.get id Pour demander les IP des différents minions connectés : # salt '*' grains.get ipv4 Pour afficher la liste complète des différents grains spécifiques à chaque minion : # salt '*' grains.items Exemples : ---------- Cibler plusieurs minions par liste d'IDs (-L) : # salt -L 'vmglpi.fij.name,mail.fij.name' test.ping Cibler un minion par son IP (-S) : # salt -S '10.0.1.101' test.ping On peut également cibler un minion par son IP en utilisant la méthode des grains (-G) : # salt -G 'ipv4:10.0.1.101' test.ping Utiliser la méthode composée ('Compound') pour cibler des minions à l'aide de plusieurs méthodes (-C) : # salt -C 'vmglpi.fij.name or S@10.0.1.101 or S@10.0.1.120' test.ping Autres exemples, cibler les minions selon l'OS installé (méthode des grains) : # salt -G 'os:Fedora' test.ping # salt -G 'os:Debian' test.ping # salt -G 'os:CentOS' test.ping Commandes Linux : ----------------- Il est également possible de lancer directement des commandes linux sur les minions en utilisant le module 'cmd.run'. Par exemple, pour créer un nouvel utilisateur et définir son mot de passe sur les minions dont l'OS est Debian : # salt -G 'os:Debian' cmd.run "useradd -m -c 'postfo2025' postfo2025 -s /bin/bash" # salt -G 'os:Debian' cmd.run "echo 'postfo2025:postfo2025' | chpasswd" ---------------- Etats / States : ---------------- Un autre mode de contrôle/configuration des minions est celui des états. Quelques exemples : https://media.readthedocs.org/pdf/install-saltstack/latest/install-saltstack.pdf https://blog.talpor.com/2014/07/saltstack-beginners-tutorial/ Saltstack peut s'installer sur une variéte d'OS : BSD, MAC, Linux, Solaris, Windows ------------ Références : ------------ Site : https://www.saltstack.com/ Documentation : https://docs.saltstack.com/en/latest/ ------- Utile : ------- Cheat Sheet : https://github.com/eon01/SaltStackCheatSheet