Sommaire
Présentation de Salt
Salt est un logiciel de gestion de configuration de systèmes et d’exécution d’application à distance.
Le but est d’avoir un système central afin de gérer les configurations des systèmes d’une maniène plus simple et surtout de rendre celles-ci le plus uniforme possible.
Le projet est écrit en Python, ce qui en fait un grand point fort pour les administrateurs systèmes, la rédaction de module est de ce fait simplifié.
Site officiel : https://www.saltstack.com/.
Fonctionnement
Salt fonctionne avec un Master qui fournit la capacité de gérer à distance des machines et des Minions (clients) qui executent les commandes demandées par le master.
Le Master est capable d’envoyer des commandes en parallèles sur chacun des Minions et à des groupes de Minions (Node Group).
Préparation des dépôts sur Debian Wheezy
Tout d’abord, nous devons mettre les dépots prévus pour Wheezy :
echo "deb http://debian.saltstack.com/debian wheezy-saltstack main" >> /etc/apt/sources.list
Avant de mettre à jour la base de données des paquets, il faut importé la clé GPG pour signer le dépot :
wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
Ensuite, on peut mettre à jour la base de données :
apt-get update
Désormais, nous pouvons vérifier quels paquets nous pourrons installer Salt :
root@server-salt:~# apt-cache search salt-
salt-common - shared libraries that salt requires for all packages
salt-doc - additional documentation for salt, the distributed remote execution system
salt-master - remote manager to administer servers via salt
salt-minion - client package for salt, the distributed remote execution system
salt-ssh - remote manager to administer servers via salt
salt-syndic - master-of-masters for salt, the distributed remote execution system
Création d’un master
Installation des paquets
Pour commencer, nous allons installer les différents paquets :
apt-get install salt-master salt-syndic -y
Durant l’installation, nous pouvons remarquer un point, l’installation de nombreux paquets Python et rsync !
Fichiers de configuration
Les fichiers de configuration se trouvent dans /etc/salt/.
Dans ce dossier, nous avons normalement ces fichiers/dossiers :
total 48
23 -rw-r--r-- 1 root root 23026 Mar 24 08:03 master
1 drwxr-xr-x 4 root root 1024 Dec 30 16:33 pki
Modification de la configuration du master
Dans le fichier /etc/salt/master, nous avons lui préciser que nous souhaitons écouter uniquement sur l’interface réseau de la machine “master” :
root@server-salt:~# sed -i -e 's/#interface: 0.0.0.0/interface: IP_SALT_MASTER/g' /etc/salt/master
Gérer le service
- Démarrer le service : service salt-master start
- Arrêter le service : service salt-master stop
- Status du service : service salt-master status
Création d’un minion
Installation des paquets
Pour commencer, nous allons installer le paquet salt-minion :
apt-get install salt-minion -y
Fichiers de configuration
Les fichiers de configuration se trouvent dans /etc/salt/.
Dans ce dossier, nous avons normalement ces fichiers/dossiers :
total 23
21 -rw-r--r-- 1 root root 21227 Mar 18 23:30 minion
1 drwxr-xr-x 2 root root 1024 Mar 21 07:41 minion.d
1 -rw-r--r-- 1 root root 4 Mar 24 07:42 minion_id
1 drwxr-xr-x 4 root root 1024 Mar 24 07:42 pki
Modification de la configuration du minion
Par défaut, les minions sont configurés pour communiquer avec le master “salt”, sinon il faut configurer l’adresse du master sur le minion :
root@minion-salt:~# sed -i -e 's/#master: salt/master: IP_SALT_MASTER/g' /etc/salt/minion
Modification du fichier minion_id
Dans ce fichier, il y a le nom du minion qui sera diffusé, vous pouvez le changer si vous le souhaitez.
Gérer le service
- Démarrer le service : service salt-minion start
- Arrêter le service : service salt-minion stop
- Status du service : service salt-minion status
Communication entre le master et les minions
Maintenant que nous avons un master et un minion de configuré, il faut les faire communiquer. La communication utilise le protocole AES afin de sécuriser les échanges, afin que ces échanges puissent se réaliser il faut que le master accepte l’échange de clés.
Lister les clés avec la commande salt-key -L
Accepted Keys:
Unaccepted Keys:
minion-salt
Rejected Keys:
Accepter les clés avec la commande salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
minion-salt
Proceed? [n/Y] y
Key for minion minion-salt accepted.
Par ces commandes, nous pouvons déployer en masse les minions puis accepter les échanges une fois le déploiement réalisé.
L’envoi de vos premières commandes
Un simple ping
Nous allons commencer nos essais par un simple ping :
root@server-salt:~# salt minion-salt test.ping
minion-salt:
True
Si nous voulons faire un ping sur l’ensemble du parc :
minion-salt:
True
Un arrêt d’un serveur Apache2
Nous partons du principe que le serveur apache2 est bien démarré sur minion-salt, puis nous lançons la commande :
minion-salt:
Command: "apache2ctl -k stop" completed successfully!
Si le processus était déjà arrêté, nous aurions ce message :
minion-salt:
httpd (no pid file) not running
Connaître le système d’exploitation des minions
Nous pouvons filtrer nos commandes en fonction du système d’exploitation, ainsi si nous voulons vérifier les dépôts des serveurs Debian, nous n’avons qu’à les lister puis exécuter la commande (le faire en 2 étapes permet de retirer la liste les éventuels serveurs que l’on ne veut pas lister) :
root@server-salt:~# salt '*' cmd.run 'uname -a'
minion-salt:
Linux ids2 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
minion-salt2:
Linux web1 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux