Dans le monde en constante évolution du développement de logiciels, la gestion efficace des serveurs à distance est cruciale. Que vous soyez administrateur système, ingénieur logiciel ou développeur de logiciels, être capable d’exécuter des commandes Linux sur des serveurs à distance est une tâche courante.
C’est là qu’intervient Fabric, une bibliothèque Python de haut niveau conçue pour exécuter des commandes Linux à distance via SSH, ce qui en fait un outil indispensable pour quiconque doit gérer des systèmes distants tout en exploitant la puissance de Python.
Qu’est-ce que Fabric?
Fabric est une bibliothèque Python polyvalente qui simplifie le processus d’exécution de commandes shell sur des serveurs distants via des connexions SSH. Il a été initialement développé par Jeff Forcier et est ensuite devenu un projet open source.
Il fournit une interface Pythonique de haut niveau pour travailler avec des systèmes distants, vous permettant d’automatiser des tâches, de déployer du code et de gérer des configurations sur plusieurs serveurs sans effort.
Pourquoi utiliser Fabric?
Il existe plusieurs raisons convaincantes de choisir Fabric pour vos besoins d’exécution de commandes à distance:
- Approche Pythonique – Fabric est conforme à la philosophie de Python, ce qui permet aux développeurs et aux administrateurs systèmes deécrire des scripts dans une langue qu’ils sont déjà familiarisés avec.
- SSH et Paramiko – Fabric repose sur la bibliothèque Paramiko pour gérer les connexions SSH, ce qui offre une manière sécurisée et fiable pour exécuter des commandes à distance.
- Flux de travail basé sur les tâches – Fabric encourage une approche axée sur les tâches pour l’exécution de commandes à distance. Vous définissez des tâches, qui sont essentiellement des fonctions Python, et Fabric s’occupe de les exécuter sur les serveurs distants.
- Cas d’utilisation – Fabric est une tool versatile adaptable à un large éventail d’utilisations, y compris le déploiement d’applications, la gestion des configurations de serveurs et l’exécution de tâches de maintenance système.
Dans ce guide, nous couvrirons les étapes pour présenter et démarrer l’utilisation de Fabric pour améliorer l’administration des serveurs pour des groupes de serveurs.
Comment installer l’outil d’automatisation Fabric sous Linux
Une caractéristique importante de fabric est que les machines distantes que vous devez administrer ne doivent avoir installé que le serveur OpenSSH standard.
Vous n’avez besoin que de certaines exigences installées sur le serveur à partir duquel vous gérez les serveurs distants avant de pouvoir commencer.
Exigences:
- Python 2.5+ avec les en-têtes de développement
- Python-setuptools et pip (optionnel, mais préféré) gcc
Fabric est facilement installé à l’aide du gestionnaire de paquets pip, mais vous pouvez également préférer choisir votre gestionnaire de paquets par défaut yum, dnf, ou apt/apt-get pour installer le paquet fabric, généralement appelé fabric ou python-fabric.
Installer Fabric sur les systèmes RHEL
Sur les distributions basées sur RHEL, telles que CentOS Stream, Rocky Linux et AlmaLinux, vous devez avoir le dépôt EPEL installé et activé sur votre système pour installer le package fabric.
sudo dnf install epel-release sudo dnf install fabric
Installation de Fabric sur les systèmes Debian
Sur les distributions basées sur Debian, telles que Ubuntu et Linux Mint, les utilisateurs peuvent simplement utiliser apt pour installer le package fabric comme indiqué:
sudo apt install fabric
Installation de Fabric avec PiP
Si le package fabric n’est pas disponible dans les référentiels de votre système, vous pouvez utiliser pip pour l’installer comme indiqué.
sudo yum install python3-pip [On RedHat based systems] sudo dnf install python3-pip [On Fedora 22+ versions] sudo apt install python3-pip [On Debian based systems]
Une fois pip installé avec succès, vous pouvez utiliser pip pour obtenir la dernière version de fabric comme indiqué:
pip3 install fabric
Comment utiliser Fabric pour automatiser les tâches d’administration Linux
Commençons par apprendre à utiliser Fabric. Dans le processus d’installation, un script Python appelé ‘fab’ a été ajouté à un répertoire dans le PATH de votre système. Le script ‘fab’ gère toutes les tâches lors de l’utilisation de Fabric.
Exécuter des commandes Linux localement
Par convention, vous devez commencer par créer un fichier Python appelé fabfile.py
à l’aide de votre éditeur de texte préféré. N’oubliez pas que vous pouvez donner un nom différent à ce fichier, mais vous devrez spécifier le chemin d’accès au fichier comme suit:
fab --fabfile /path/to/the/file.py
Fabric utilise 'fabfile.py'
pour exécuter des tâches, le 'fabfile'
doit se trouver dans le même répertoire où vous exécutez l’outil Fabric.
Exemple 1: Créons d’abord un Hello World
de base.
# vi fabfile.py
Ajoutez ces lignes de code dans le fichier.
def hello(): print('Hello world, Tecmint community')
Enregistrez le fichier et exécutez la commande ci-dessous.
# fab hello

Examinons maintenant un exemple de fabfile.py pour exécuter la commande uptime sur la machine locale.
Exemple 2: Ouvrez un nouveau fichier fabfile.py comme suit:
# vi fabfile.py
Et collez les lignes de code suivantes dans le fichier.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
Ensuite, enregistrez le fichier et exécutez la commande suivante:
# fab uptime

Exécuter des commandes Linux à distance via SSH
L’API Fabric utilise un dictionnaire de configuration qui est l’équivalent Python d’un tableau associatif connu sous le nom de env
, qui stocke des valeurs qui contrôlent ce que Fabric fait.
Le env.hosts
est une liste des serveurs sur lesquels vous souhaitez exécuter des tâches Fabric. Si votre réseau est 192.168.0.0 et que vous souhaitez gérer les hôtes 192.168.0.2 et 192.168.0.6 avec votre fabfile, vous pourriez configurer le env.hosts comme suit :
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
La ligne de code ci-dessus spécifie uniquement les hôtes sur lesquels vous allez exécuter des tâches Fabric mais ne fait rien de plus. Par conséquent, vous pouvez définir certaines tâches, Fabric fournit un ensemble de fonctions que vous pouvez utiliser pour interagir avec vos machines distantes.
Bien qu’il existe de nombreuses fonctions, les plus couramment utilisées sont :
- run – qui exécute une commande shell sur une machine distante.
- local – qui exécute la commande sur la machine locale.
- sudo – qui exécute une commande shell sur une machine distante, avec des privilèges root.
- Get – qui télécharge un ou plusieurs fichiers à partir d’une machine distante.
- Put – qui télécharge un ou plusieurs fichiers vers une machine distante.
Example 3: Pour écho un message sur plusieurs machines, créez un fabfile.py
tel que celui ci-dessous.
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def echo(): run("echo -n 'Hello, you are tuned to Tecmint ' ")
Pour exécuter les tâches, exécutez la commande suivante :
# fab echo

Exemple 4: Vous pouvez améliorer le fabfile.py
que vous avez créé plus tôt pour exécuter la commande uptime sur la machine locale afin qu’elle exécute la commande uptime et vérifie également l’utilisation du disque à l’aide de la commande df sur plusieurs machines comme suit :
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def uptime(): run('uptime') def disk_space(): run('df -h')
Enregistrez le fichier et exécutez la commande suivante :
# fab uptime # fab disk_space

Installation automatique de la pile LAMP sur un serveur Linux distant
Exemple 4: Examinons un exemple de déploiement d’un LAMP (Linux, Apache, MySQL/MariaDB et PHP) sur un serveur Linux distant.
Nous allons écrire une fonction qui permettra d’installer LAMP à distance en utilisant les privilèges root.
Pour RHEL/CentOS et Fedora
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): run ("yum install -y httpd mariadb-server php php-mysql")
Pour Debian/Ubuntu et Linux Mint
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")
Enregistrez le fichier et exécutez la commande suivante :
# fab deploy_lamp
Remarque: En raison de la grande quantité de sortie, nous ne pouvons pas créer une capture d’écran animée (gif animé) pour cet exemple.
Vous pouvez maintenant automatiser les tâches de gestion de serveur Linux à l’aide de Fabric et de ses fonctionnalités et exemples ci-dessus…
Options utiles de Fabric
- Vous pouvez exécuter
fab --help
pour consulter des informations utiles et une longue liste d’options de ligne de commande disponibles. - Une option importante
--fabfile=PATH
qui vous aide à spécifier un fichier de module Python différent à importer plutôt quefabfile.py
. - Pour spécifier un nom d’utilisateur à utiliser lors de la connexion à des hôtes distants, utilisez l’option
--user=USER
. - Pour utiliser un mot de passe pour l’authentification et/ou sudo, utilisez l’option
--password=PASSWORD
. - Pour imprimer des informations détaillées sur la commande NOM, utilisez l’option
--display=NAME
. - Pour consulter les formats, utilisez l’option
--list
, choix : court, normal, imbriqué, utilisez l’option--list-format=FORMAT
. - Pour imprimer une liste de commandes possibles et quitter, incluez l’option
--list
. - Vous pouvez spécifier l’emplacement du fichier de configuration à utiliser en utilisant l’option
--config=PATH
. - Pour afficher une sortie d’erreur colorée, utilisez
--colorize-errors
. - Pour consulter le numéro de version du programme et quitter, utilisez l’option
--version
.
Résumé
Fabric est une puissante bibliothèque Python qui rationalise l’exécution de commandes à distance via SSH, offrant une approche Pythonique conviviale. Sa capacité à simplifier les tâches complexes et à automatiser la gestion des systèmes en fait un outil précieux pour les administrateurs système, les développeurs et les professionnels DevOps.
Que vous gériez un seul serveur ou orchestrant un déploiement à grande échelle, Fabric peut vous aider à accomplir le travail de manière efficace et efficace.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/