Outils personnels

Fabric : installation sur Debian : Différence entre versions

De wikiGite

(Page créée avec « = Facile ! = apt-get install fabric = Utilisation = création d'un fichier test vi fabtest.py from fabric.api import run,env env.hosts = ['server.domain.net'] def up... »)
 
 
(9 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
= Facile ! =
+
= Installation =
 +
== Facile ? ==
 
  apt-get install fabric
 
  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 =
 
= Utilisation =
Ligne 13 : Ligne 47 :
  
 
Echange des clés SSH avec le client, puis :
 
Echange des clés SSH avec le client, puis :
  vi fabtest.py
+
  fab -f fabtest.py uptime
  
 
= TIPS =
 
= TIPS =
 +
== APIs ==
 
Les fichiers se trouvent dans /usr/share/pyshared/fabric.
 
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 :
 
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
 
  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]]

Version actuelle datée du 27 avril 2012 à 08:38

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