Bonjour à tous
Hier en fin d’après midi, un ami (informaticien) est passé prendre le café, moment d’échange et forcément on parle d’informatique.
Je lui dit qu’il faut absolument que je trouve un moyen de lancer des commandes en même temps sur une ferme de serveurs, dans un premier temps pour résoudre le problème récurrent des mises à jour à faire sur chaque machine.
Marre de me connecter sur toutes les machines dès qu’une mise à jour pointe le bout de son nez, et sur ce il me dit tout simplement « Ben utilise Fabric c’est la pour ça ».
En cette fin de samedi après midi je me penche donc ce jour sur la question, en relisant entre autre l’article de Emile « iMil » Heitor dans le numéro 135 de Linux Magazine / France de février de cette année.
Mon environnement de test est le suivant :
- Une VM avec une ubuntu server 10.04 à jour sans aucun paquet spécifiques servant de serveur Fabric (et également de client)
- Une seconde VM ubuntu server 10.04 servant de client à Fabric
- Un échange de clé ssh pour l’accès de la VM serveur à la VM cliente
L’installation de Fabric est nécessaire uniquement sur une seule machine du parc, tous le reste ce fait via ssh vers les autres machines ce qui est en soit déjà une bonne chose.
Une installation tout ce qu’il y a de plus classique :
aptitude install fabric |
L’installation via aptitude (et non apt-get) prend en compte les dépendances c’est à dire qu’au final trois paquets sont installés :
- fabric
- python-crypto
- python-paramiko
Ensuite rien de plus n’est nécessaire pour notre première utilisation de Fabric passons donc à la configuration :
Créons un fabfile, fichier de configuration pour fabric : fabtest.py
from fabric.api import run def uptime(): run('uptime') |
Lançons la première fois fabric pour avoir l’uptime de nos deux machines :
fab -f fabtest.py -H VM-Serveur,VM-Client uptime [VM-Serveur] run: uptime [VM-Serveur] out: 18:06:31 up 42 days, 23:42, 0 user, load average: 3.12, 2.80, 2.81 [VM-Client] run: uptime [VM-Client] out: 08:46:32 up 1:08, 1 user, load average: 0.00, 0.00, 0.00 Disconnecting from VM-Serveur... done. Disconnecting from VM-Client... done. |
Modifions notre fichier fabtest.py pour gérer le update / upgrade de nos machines :
from fabric.api import run def uptime(): run('uptime') def update(): run('apt-get update') def upgrade(): run('apt-get -y upgrade') |
Mettons à jour nos deux machines en une seule ligne :
fab -f fabtest.py -H VM-Serveur,VM-Client update upgrade |
Et oui il es possible de chainer les commandes.
Voici donc mes première utilisations de Fabric qui me donnent des résultat très concluants et je sens déjà les nombreuses possibilité d’utilisation.
A bientôt pour la suite des tests et de la mise en place de cet outil plus que prometteur.
Thor