Installation¶
Ce tuto va montrer comment installer Saltstack sur un serveur et un client Debian.
Pour wheezy, les lignes suivantes doivent être présente dans /etc/apt/sources.list ou dans un fichier dans /etc/apt/sources.list.d:
deb http://debian.saltstack.com/debian wheezy-saltstack main
Ensuite on importe le clé pour le dépot. Nous aurons besoin de celle utilisé lors de la signature du paquet.
wget -q -O- "http://debian.saltstack.com/debian-salt-team-joehealy.gpg.key" | apt-key add -
On fait un Update sur notre BDD de notre dépot:
apt-get update
Installation des paquets¶
On instal le Salt master, minion ou syndic depuis le dépot avec la commande apt-get. Chacun de ces exemples montrent l’installation d’un seul daemon, mais nous pouvons également le faire en une seul fois avec la même commande:
Sur le serveur:
apt-get install salt-master
Sur le client:
apt-get install salt-minion
Note
Un autre paquet est installé, mais je ne connait pas encore l’utilité, salt-syndic
Configuration de Salt¶
La configuration de Salt est très simple. La configuration par défaut du master marchera pour la plupart des installations et la seul exigence pour la mise en place d’un minion est de lui fixer l’adresse IP du master dans son fichier de configuration.
Le fichier de configuration sera dans le dossier /etc/salt et sera nommé /etc/salt/master, et /etc/salt/minion.
Master Configuration¶
Par défaut le Salt master écoute sur les ports 4505 et 4506 sur toutes les interfaces (0.0.0.0). Pour lier Salt à une IP spécifique, il faut redefinir l’instruction interface dans le fichier de configuration du master, typiquement /etc/salt/master, comme suit:
- #interface: 0.0.0.0
+ interface: 192.168.0.25
Après avoir réactualiser le fichier de configuration, il faut redémarrer le Salt master
Configuration du minion¶
Bien qu’il y ai beaucoup d’options de configuration pour les Salt minion, les configurer est très simple. Par défaut, un Salt minion va essayé de se connecter au nom DNS salt; si le minion est capable de résoudre le nom correctement, auncune configuration n’est requise.
Si le nom DNS salt ne peut pas être résolu pour pointer sur le master, il faudra redefinir l’instruction master dans le fichier de configuration du minion, typiquement /etc/salt/minion, comme suit:
- #master: salt
+ master: 192.168.0.25
Après avoir réactualiser le fichier de configuration, il faut redémarrer le Salt master
Démarrer Salt¶
Démarrer le master en arrière plan (pour daemonizer le processus, ajouter l’option -d):
salt-master
Démarrer le minion en arrière plan (pour daemonizer le processus, ajouter l’option -d):
salt-minion
Quelques soucis ?¶
La manière la plus simple pour dépanner Salt est des lancer le master et le minion en arrière plan avec un niveau de log fixé à debug:
salt-master --log-level=debug
Au premier lancement du minion, un message d’erreur apparait:
[ERROR ] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate
Il faut donc lancer la commande suivante sur le serveur:
salt-key -a <nom_DNS_minion>
nom_DNS_minion est le nom du minion
Gestion des clés¶
Salt utilise un cryptage AES pour toutes les communications entre le Master et le Minion. Ce qui permet de s’assurer que les commandes envoyées aux Minion ne peuvent être falsifiées, et la communication entre le Master et le Minion est authentifiée avec une clé de confiance et accéptée.
Avant que les commandes puissent être envoyées au Minion, sa clé doit être accépté par le Master. Lancer la commande salt-key pour lister les clés connus sur le Master:
[root@master ~]# salt-key -L
Unaccepted Keys:alpha
bravo
charlie
delta
Accepted Keys:
Cet exemple montre que le Master est conscient qu’il y a 4 Minion, mais aucunes des clé n’a été accépté. Pour accépter les clés et permettre aux Minion d’être controllé par le Master, on va utiliser encore une fois la commande salt-key:
[root@master ~]# salt-key -A
[root@master ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:alpha
bravo
charlie
delta
La commande salt-key permet de signer les clés individuellement ou en lot. L’exemple ci-dessus, qui utilise l’option -A permet d’accepter toutes les clés en attente. Pour accepter chaque clé individuellement, il faudra utiliser la même option mais en minuscule, -a.