saltstack : remonter le master

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à.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *