Fabric est une bibliothèque Python et un outil de ligne de commande permettant de rationaliser l'utilisation de SSH pour le déploiement d'applications ou les tâches d'administration de systèmes. Fabric est très simple et puissant et peut aider à automatiser des tâches répétitives en ligne de commande. Cette approche permet de gagner du temps en automatisant l'intégralité de votre flux de travail..
Ce didacticiel explique comment utiliser Fabric pour s’intégrer à SSH et automatiser des tâches..
Le tissu est mieux installé via pip:
$ pip install fabric
Vous trouverez ci-dessous une fonction simple expliquant comment utiliser Fabric..
def welcome (): print ("Bienvenue à l'utilisation de Fabric!")
Le programme ci-dessus est alors enregistré en tant que fabfile.py
dans votre répertoire de travail actuel. La fonction de bienvenue peut être exécutée avec le fab
outil comme suit:
$ fab welcome Bienvenue pour commencer à utiliser Fabric
Fabric fournit la commande fab qui lit sa configuration à partir d'un fichier, fabfile.py
. Le fichier doit être dans le répertoire à partir duquel la commande est exécutée. Une fabfile standard contient les fonctions à exécuter sur un hôte distant ou un groupe d’hôtes distants..
Fabric implémente des fonctions qui peuvent être utilisées pour communiquer avec des hôtes distants:
Cette opération est utilisée pour exécuter une commande shell sur un hôte distant..
Exemples
run ("ls / var / www /") run ("ls / home / userx", shell = False) output = run ('ls / var / www / mysites'
Cette fonction permet de télécharger des fichiers d’un hôte distant. L'exemple ci-dessous montre comment télécharger une sauvegarde à partir d'un serveur distant..
# Téléchargement d'une copie de sauvegarde ("/ backup / db.bak", "./db.bak")
Cette fonction télécharge un ou plusieurs fichiers sur un hôte distant. Par exemple:
avec cd ('/ tmp'): put ('/ chemin / vers / local / test.txt', 'fichiers')
Comme son nom l'indique, cette fonction redémarre un serveur système..
# Redémarrez le redémarrage du système distant ()
Cette fonction est utilisée pour exécuter des commandes sur un hôte distant avec les privilèges de superutilisateur. De plus, vous pouvez également passer un argument utilisateur supplémentaire vous permettant d’exécuter des commandes en tant qu’utilisateur autre que root..
Exemple
# Créer un répertoire sudo ("mkdir / var / www")
Cette fonction est utilisée pour exécuter une commande sur le système local. Un exemple est:
# Extraire le contenu d'une archive tar locale ("tar xzvf /tmp/trunk/app.tar.gz") # Supprimer un fichier local ("rm /tmp/trunk/app.tar.gz")
La fonction invite l'utilisateur avec du texte et renvoie l'entrée.
Exemples
# Forme la plus simple: environment = prompt ('Merci de spécifier l'environnement cible:') # spécifiez l'hôte env_host = prompt ('Merci de spécifier l'hôte:')
Cette fonction est utilisée pour vérifier la présence de clés dans un dict d'environnement partagé. Si non trouvé, l'opération est abandonnée.
SSH est l’un des moyens utilisés par les développeurs pour interagir avec des serveurs distants autres que les clients FTP. SSH est utilisé pour se connecter à des serveurs distants et tout faire, de la configuration de base à l’exécution de Git ou à l’installation d’un serveur Web..
Avec Fabric, vous pouvez effectuer des activités SSH à partir de votre ordinateur local..
L'exemple ci-dessous définit des fonctions indiquant comment vérifier l'espace disque disponible et le type d'hôte. Il définit également quel hôte exécutera la commande:
# Importe le module API de Fabric à partir de fabric.api. Run run env.hosts = '159.89.39.54' # Définissez le nom d'utilisateur env.user = "root" def host_type (): run ('uname -s') def diskspace (): run ('df') def check (): # vérifie le type d'hôte host_type () # vérifie l'espace disque l'espace disque ()
Pour exécuter ce code, vous devez exécuter la commande suivante sur le terminal:
fabuleux chèque
fab check [159.89.39.54] Exécution de la tâche 'check' [159.89.39.54] run: uname -s [159.89.39.54] Mot de passe de connexion pour 'root': [159.89.39.54] out: Linux [159.89.39.54] out: [ 159.89.39.54] run: df [159.89.39.54] out: Système de fichiers 1K-blocks Utilisé Disponible Usage% Monté sur [159.89.39.54] out: udev 242936 0 242936 0% / dev [159.89.39.54] out: tmpfs 4 604 6020 43984 13% / run [159.89.39.54] out: / dev / vda1 20145768 4398716 15730668 22% / [159.89.39.54] out: tmpfs 250012 1004 249008 1% / dev / shm [159.89.39.54] out: tmpfs 5120 0 5120 0 % / run / lock [159.89.39.54] out: tmpfs 250012 0 250012 0% / sys / fs / cgroup [159.89.39.54] out: / dev / vda15 106858 3426 103433 4% / boot / efi [159.89.39.54] out : tmpfs 50004 0 50004 0% / run / user / 0 [159.89.39.54] out: néant 20145768 4398716 15730668 22% / var / lib / docker / auf / mnt / 781d1ce gardien de la sécurité de la mémoire % / var / lib / docker / containers / 036b6bcd5344f13fdb1fc738752a0850219c7364b1a3386182fead0dd8b7460b / shm [159.89.39 0,54]: Néant 20145768 4398716 15730668 22% / var / lib / docker / aufs / mnt / 17934c0fe3ba83e54291c1aebb267a2762ce9de9f70303a65b12f808444dee80 [159.89.39.54] out: SHM 65536 0 65536 0% / var / lib / docker / conteneurs / fd90146ad4bcc0407fced5e5fbcede5cdd3cff3e96ae951a88f0779ec9c2e42d / SHM [159,89 .39.54]: Néant 20145768 4398716 15730668 22% / var / lib / docker / aufs / mnt / ba628f525b9f959664980a73d94826907b7df31d54c69554992b3758f4ea2473 [159.89.39.54] out: SHM 65536 0 65536 0% / var / lib / docker / conteneurs / dbf34128cafb1a1ee975f56eb7637b1da0bfd3648e64973e8187ec1838e0ea44 / SHM [159,89 .39.54] out: Fait. Déconnexion de 159.89.39.54… fait.
Fabric vous permet d'exécuter des commandes sur un serveur distant sans avoir à vous connecter au serveur distant.
L'exécution à distance avec Fabric peut entraîner des menaces pour la sécurité, car elle nécessite un port SSH ouvert, en particulier sur les machines Linux..
Par exemple, supposons que vous souhaitiez mettre à jour les bibliothèques système sur votre serveur distant. Vous n'avez pas nécessairement besoin d'exécuter les tâches une fois sur deux. Vous pouvez simplement écrire un simple fichier fab que vous exécuterez chaque fois que vous souhaitez exécuter les tâches..
Dans ce cas, vous allez d'abord importer le module de l'API Fabric:
de fabric.api import *
Définissez l'hôte distant que vous souhaitez mettre à jour:
env.hosts = '159.89.39.54'
Définissez le nom d'utilisateur de l'hôte distant:
env.user = "root"
Bien que cela ne soit pas recommandé, vous devrez peut-être spécifier le mot de passe de l'hôte distant..
Enfin, définissez la fonction qui met à jour les bibliothèques de votre hôte distant.
def update_libs (): "" "Met à jour les outils de base par défaut de l'installation du système d'exploitation par défaut." "" run ("apt-get update")
Maintenant que votre fichier fab est prêt, tout ce que vous avez à faire est de l'exécuter comme suit:
$ fab mise à jour
Vous devriez voir le résultat suivant:
$ fab update [159.89.39.54] Exécution de la tâche 'update' [159.89.39.54] run: apt-get update [159.89.39.54] Mot de passe pour la connexion 'root':
Si vous n'avez pas défini le mot de passe, vous serez invité à le saisir..
Une fois que le programme a fini d’exécuter les commandes définies, vous obtiendrez la réponse suivante si aucune erreur ne se produit:
$ fab update… Déconnexion de 159.89.39.54… terminé.
Ce didacticiel couvre les éléments nécessaires pour se familiariser avec Fabric au niveau local et sur des hôtes distants. Vous pouvez maintenant commencer à écrire vos propres scripts en toute confiance pour la construction, la surveillance ou la maintenance de serveurs distants..