Initiation à Fabric – Administration à distance de serveurs

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

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.