Introduction
- Fabric : http://docs.fabfile.org/
C'est un outil permettant d'exécuter et de faire des opérations à distance sur plusieurs machines en utilisant ssh. C'est un canevas reposant sur ssh pour faire des opérations sur des groupes de machines rassemblées par exemple par rôles.
Utilisation personnelle
Exploration des machines à ajouter au fichier known_hosts
de ssh
Voir la solution de la page Accepter automatiquement les certificats ssh des machines. La meilleure solution est de parcourir l'ensemble de machines en utilisant l'utilitaire d'openssh : ssh-keyscan.
...
Code Block |
---|
# exemple avec un fichier de hosts à la *ansible* time grep -v '^#\|^[[:space:]]*$\|^\[[^]]*\]$' ~/ansible/hosts-def/hosts | ssh-keyscan -H -f - > ~/.ssh/known_hosts |
Définir les groupes de machines
Il arrive qu'un ensemble logique de machines (ayant le même rôle) soit sur un même VLAN et donc dans une plage d'adresses IP contiguës. Pour avoir une liste de machines, voici le type de recherche qui peut être faite :
...
Code Block | ||||
---|---|---|---|---|
| ||||
#!/usr/bin/env python # -*- coding: utf-8 -*- from fabric.api import * def ls_al(): """Liste le contenu du répertoire.""" run("ls -al") def host_type(): """Détermine le type et le numéro de version du noyau de la machine distante""" run("uname -s -r -m -p -o) |
Utiliser un fichier de configuration pour fabric plutôt que des options sur la ligne de commande
Pour cela, définir un fichier ~/.fabricrc
comme suit :
Code Block | ||||
---|---|---|---|---|
| ||||
user=monlogin connection_attempts=3 #ssh_config_path=~/fabric/.ssh_config.exploration-hosts # on fait les traitement en parralèle #parallel=True # combien de machines en parallèle ? #pool_size=3 # pas de terminaison en cas d'erreur warn_only=True fabfile=~/fabric/fabfile.py # ne pas avoir stdout et stderr fusionnés sur stdout #combine_stderr=False # le fichier avec la clé privée key_filename=~/.ssh/id_rsa # pour utiliser un fichier de config ssh de l'utilisateur use_ssh_config=True # pour avoir un buffer par ligne (ne permet pas l'usage du prompt) #linewise=True #reject_unknown_hosts=True #disable_known_hosts=True |
Références
- Le site de fabric : http://fabfile.org/
- Le wiki de fabric : http://wiki.fabfile.org/
Pages utiles
- Un ensemble de recettes à utiliser pour fabric : http://wiki.fabfile.org/Recipes
- Les fichiers fabfile utilisés pour la gestion du site de fabric :https://github.com/fabric/fabric/tree/master/fabfile
- Quelques exemples d'utilisation avancée de fabric par son créateur : http://tav.espians.com/fabric-python-with-cleaner-api-and-parallel-deployment-support.html
Voir aussi
- http://ansible.github.com/ – Un outil qui semble bien plus adapté et intéressant que fabric.
- http://rexify.org/ – Un équivalent à fabric en perl.