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 : | ||
− | + | 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
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