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.
1 2 3 | 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é.
1 | 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
1 2 3 4 5 | docker ps CONTAINER ID IMAGE [...] 74601a54cf89 hugues /saltstack :latest [...] docker-enter 74601a54cf89 root@74601a54cf89:/ # |
Là les minions sont tous revenus voir papa.
1 2 3 4 5 6 7 8 | 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 :
1 | salt-key -d <minion_id> |
2. Sur le minion
1 2 | sudo rm /etc/salt/pki/minion/minion_master .pub sudo /etc/init .d /salt-minion restart |
3. Retour sur le master
1 | salt-key -a <minion_id> |
Et voilà.