saltstack

saltstack : remonter le master

0

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

Saltstack : Création d’un minion

1

On part sur une installation toute fraiche et basic d’une Ubuntu 14.04 LTS Server.
Seule l’option « OpenSSH server » a été choisie lors de létape Tasksel.

Une fois logger sur la nouvelle machine.

Ajout du repository et installation du paquet

sudo add-apt-repository ppa:saltstack/salt
sudo apt-get install -y salt-minion

Qui c’est ton papa ?

sudo -i
echo "192.168.10.10\t gru.lepesant.com gru" >> /etc/hosts
sed -i 's/^#master: salt/master: gru/' /etc/salt/minion

Va voir papa !

/etc/init.d/salt-minion restart

Et pour que le service démarre sur un reboot :

sudo update-rc.d salt-minion defaults

Sur Gru (Salt Master)

root@gru:/srv/salt# salt-key -L
Accepted Keys:
web-01.lepesant.com
sql-01.lepesant.com
Unaccepted Keys:
xen-01.lepesant.com
Rejected Keys:

root@gru:/srv/salt# salt-key -y -a xen-01.lepesant.com

The following keys are going to be accepted:
Unaccepted Keys:
xen-01.lepesant.com
Key for minion xen-01.lepesant.com accepted.

Et voilà.

Saltstack

0

Logo SaltStack

En tant que « devops« , je suis amené à installer et surtout configurer un nombre important de serveurs / machines virtuelles. Bien souvent les systèmes installés sont identiques. Un serveur LAMP ressemble très souvent à son voisin. Surtout si celui-ci fait partie de la même ferme de serveur Web.

La gestion des fichiers de configuration peut s’avérer fastidieuse.

Sur un projet professionel récent, j’ai été amené à gérer une dizaine de serveur Docker (Wikipedia : Docker).
Tous configurés de la même manière au nom et à l’IP prêts.

Rapidement j’ai cherché un outils me facilitant le boulot.

Il existe différents outils qui permettent une gestion centralisée des fichiers de configuration d’un serveur.
Les plus connus sont :

  • Puppet,
  • Chef,
  • Cfengine.

Un petit (pas si) nouveau pointe le bout de son nez depuis 2011: SaltStack.

C’est ce dernier que j’ai décidé d’utiliser car j’ai eu un très bon retour de ma Grotte à Barbus francophones préférées, dont l’un des gourous acteurs et ami, avait écrit un article dans Linux Magazine.

De plus il est écrit en python ce qui ne gache rien, et la learning curve est compatible avec mes enjeux de mise en production ;-).

Vous trouverez ici quelques articles faisant écho de mon retour d’expérience sur SaltStack.

  1. Création d’un Minion
  2. Renommer un minion
Haut de page