Fabric : installation sur Debian
De wikiGite
Sommaire
Installation
Facile ?
apt-get install fabric
Pas si facile !
Comme toujours, les paquets Debian sont âgés. Voire très âgés. La version de Fabric pour Squeeze est une 0.9, sachant que la version stable de Fabric à ce jour (février 2012) est 1.4 ! Entre ces 2 versions, des tas de paramètres bien utiles sont apparus !
Pip
Installer pip (plus récent que easy_install)
apt-get install python-pip
Auto-update :
pip install -U pip
Pour résoudre un bug éventuel de l'upgrade de pip par lui-même :
rm /usr/bin/pip ln -sv /usr/local/bin/pip-2.6 /usr/bin/pip
Obligatoire : installer gcc et les setuptools
apt-get install gcc python-setuptools
Sur Debian, installer python-dev :
apt-get install python2.6-dev
Installer Fabric
pip install fabric fab -V
Github
On peut installer une version plus récente (non stable) en allant la chercher sur Github.
apt-get purge fabric cd /root/install wget https://github.com/fabric/fabric/tarball/master mv master fabric.tgz tar -xvzf fabric.tgz cd fabric-fabric*
Ces sources ne sont pas obligatoirement celles qu'on va installer. Leur intérêt est de nous fournir le script setup.py, qui lui, va aller chercher la dernière version en ligne et l'installer.
python setup.py install fab -V
Si l'exécutable fab est introuvable dans la commande ci-dessus, créer un lien.
ln -s /usr/local/bin/fab /usr/bin/fab
Utilisation
création d'un fichier test
vi fabtest.py
from fabric.api import run,env env.hosts = ['server.domain.net'] def uptime(): run('uptime')
Echange des clés SSH avec le client, puis :
fab -f fabtest.py uptime
TIPS
APIs
Les fichiers se trouvent dans /usr/share/pyshared/fabric.
Pour charger des fonctions supplémentaires, par exemple "sed", il peut être nécessaire de charger d'autres APIs. En cherchant dans /usr/share/pyshared/fabric, on voit que la fonction sed se trouve dans contrib/files.py. On chargera donc cette API et cette focntion par :
from fabric.contrib.files import sed
Roles
Pour définir des rôles (exemple : des types d'OS), utiliser :
from fabric.api import run,env,roles env.roledefs = { 'debian' : ['server1','server2'] 'centos' : ['server3'] }
On pourra alors soit utiliser ces rôles dans le code des fonctions :
@roles('debian') def inst_mn_deb(): run('apt-get install munin-node') @roles('centos') def inst_mn_cent(): run('yum install munin-node')
Variables
On peut assigner et utiliser une variable simplement :
opsys = run('uname -s') if opsys == 'Linux': .....
Ou l'assigner à l'exécution. Le code :
def upgrade(do_upgrade=no): if do_upgrade='yes': run('apt-get upgrade')
exécute un upgrade si on le lance par
fab -f fabtest.py upgrade:do_upgrade=yes
Cuisine
Extension à Fabric : Cuisine : installation