Mon process Saltstack master fonctionne dans un container Docker.
Quand j’ai commencé à jouer utiliser Saltstack, je ne maîtrisais pas Docker (non plus, NDLR).
J’avais donc mon répertoire « file_roots: » (par défaut /srv/salt) dans mon container.
Et puis un jour j’ai voulu construire ma propre image Docker à partir d’un Dockerfile (docker build) pour Saltstack.
J’ai donc fait une copie dans ma HOME du répertoire « srv/salt » à partir du système AUFS.
mkdir -p srv/salt sudo cp -a /var/lib/docker/aufs/mnt/ce45266348553e0e240e86dbb2cdbd27c50965f2f2d9707ec7a37a766e11cdbe/srv/salt/* srv/salt/ sudo chown -R hugues:hugues srv/salt
Puis j’ai buildé mon image, et je l’ai lancé.
docker run -i -t -p 4505:4505 -p 4506:4506 -v /home/hugues/srv:/srv hlepesant/saltstack:latest /bin/bash
Puis je rentre dedans avec docker-enter
docker ps CONTAINER ID IMAGE [...] 74601a54cf89 hugues/saltstack:latest [...] docker-enter 74601a54cf89 root@74601a54cf89:/#
Là les minions sont tous revenus voir papa.
root@74601a54cf89:/# salt-key -L Accepted Keys: Unaccepted Keys: minion-01 minion-02 minion-03 Rejected Keys: root@74601a54cf89:/#
Le problème c’est que les commandes salt échouent lamentablement.
Pour débugger : https://salt.readthedocs.org/en/v2014.1.0rc1/topics/troubleshooting/minion.html
A grand coup de « # salt-call -l debug state.highstate » exécuté à partir d’un des minions, l’erreur devient plus flagrante.
La clef publique échangée entre le minion et le master n’est plus la même.
Pour y remédier :
1. Sur le master :
salt-key -d <minion_id>
2. Sur le minion
sudo rm /etc/salt/pki/minion/minion_master.pub sudo /etc/init.d/salt-minion restart
3. Retour sur le master
salt-key -a <minion_id>
Et voilà.