Erste Schritte mit der Fabric Python Library

Fabric ist ein Python-Bibliotheks- und Befehlszeilentool zur Rationalisierung der Verwendung von SSH für die Anwendungsbereitstellung oder Systemadministrationsaufgaben. Fabric ist sehr einfach und leistungsstark und kann dazu beitragen, sich wiederholende Befehlszeilenaufgaben zu automatisieren. Dieser Ansatz kann Zeit sparen, indem der gesamte Workflow automatisiert wird. 

In diesem Lernprogramm wird beschrieben, wie Sie mithilfe von Fabric SSH integrieren und Aufgaben automatisieren können.

Installation

Stoff wird am besten per Pip installiert:

$ pip install Fabric 

Erste Schritte mit Fabric

Verwendungszweck

Nachfolgend finden Sie eine einfache Funktion, die die Verwendung von Fabric veranschaulicht.

def welcome (): print ("Willkommen beim Einstieg in Stoff!")

Das Programm oben wird dann als gespeichert fabfile.py in Ihrem aktuellen Arbeitsverzeichnis. Die Willkommensfunktion kann mit der ausgeführt werden fab Werkzeug wie folgt:

$ fab welcome Willkommen bei den ersten Schritten mit Fabric

Fabric stellt den Befehl fab bereit, der seine Konfiguration aus einer Datei liest, fabfile.py. Die Datei sollte sich in dem Verzeichnis befinden, von dem aus der Befehl ausgeführt wird. Eine Standarddatei enthält die Funktionen, die auf einem Remote-Host oder einer Gruppe von Remote-Hosts ausgeführt werden sollen.

Eigenschaften

Fabric implementiert Funktionen, die zur Kommunikation mit Remote-Hosts verwendet werden können:

fabric.operations.run ()

Diese Operation wird verwendet, um einen Shell-Befehl auf einem Remote-Host auszuführen.

Beispiele

run ("ls / var / www /") run ("ls / home / userx", shell = False) output = run ('ls / var / www / mysites')

fabric.operations.get ()

Diese Funktion wird zum Herunterladen von Dateien von einem Remote-Host verwendet. Das folgende Beispiel zeigt, wie Sie ein Backup von einem Remote-Server herunterladen.

# Herunterladen eines Backup-Get ("/ backup / db.bak", "./db.bak") 

fabric.operations.put ()

Diese Funktion lädt Datei (en) auf einen Remote-Host hoch. Zum Beispiel:

mit cd ('/ tmp'): set ('/ pfad / nach / local / test.txt', 'files')

fabric.operations.reboot ()

Wie der Name vermuten lässt, startet diese Funktion einen Systemserver neu.

# Neustart des Remote-Systems () 

fabric.operations.sudo ()

Diese Funktion wird verwendet, um Befehle auf einem Remote-Host mit Superuser-Berechtigungen auszuführen. Außerdem können Sie ein zusätzliches Benutzerargument übergeben, mit dem Sie Befehle als einen anderen Benutzer als root ausführen können.

Beispiel

# Erstellen Sie ein Verzeichnis sudo ("mkdir / var / www")

fabric.operations.local ()

Diese Funktion wird verwendet, um einen Befehl auf dem lokalen System auszuführen. Ein Beispiel ist:

# Extrahieren Sie den Inhalt eines tar-Archivs local ("tar xzvf /tmp/trunk/app.tar.gz"). # Entfernen Sie eine lokale Datei ("rm /tmp/trunk/app.tar.gz").

fabric.operations.prompt ()

Die Funktion fordert den Benutzer mit Text auf und gibt die Eingabe zurück.

Beispiele

# Einfachste Form: Umgebung = Eingabeaufforderung ('Bitte Zielumgebung angeben:') # Geben Sie den Host an. Env_host = Eingabeaufforderung ('Bitte geben Sie den Host an:') 

fabric.operations.require ()

Diese Funktion wird verwendet, um nach bestimmten Schlüsseln in einem gemeinsam genutzten Umgebungsdikt zu suchen. Wenn nicht gefunden, wird der Vorgang abgebrochen.

SSH-Integration

Neben FTP-Clients können Entwickler mit Remote-Servern auch über SSH kommunizieren. SSH wird verwendet, um eine Verbindung zu Remote-Servern herzustellen und von der grundlegenden Konfiguration bis zum Ausführen von Git oder zum Initiieren eines Webservers alles zu tun.

Mit Fabric können Sie SSH-Aktivitäten von Ihrem lokalen Computer aus durchführen.

Das folgende Beispiel definiert Funktionen, die zeigen, wie der freie Speicherplatz und der Hosttyp geprüft werden. Es definiert auch, auf welchem ​​Host der Befehl ausgeführt wird:

# Import Fabric-API-Modul aus fabric.api import run env.hosts = '159.89.39.54' # Setzen Sie den Benutzernamen env.user = "root" def host_type (): run ('uname -s') def diskspace (): run ('df') def check (): # check Hosttyp host_type () # Plattenplatz überprüfen diskspace () 

Um diesen Code auszuführen, müssen Sie den folgenden Befehl auf dem Terminal ausführen:

fab überprüfen

Ausgabe

fab check [159.89.39.54] Task 'check' ausführen [159.89.39.54] run: uname -s [159.89.39.54] Login-Passwort für 'root': [159.89.39.54] out: Linux [159.89.39.54] out: [ 159.89.39.54] run: df [159.89.39.54] out: Dateisystem 1K-Blöcke Verwendet Verwendbar% Mounten auf [159.89.39.54] out: udev 242936 0 242936 0% / dev [159.89.39.54] out: tmpfs 50004 6020 43984 13% / Durchlauf [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 / benutzer / 0 [159.89.39.54] aout: keine % / var / lib / docker / container / 036b6bcd5344f13fdb1fc738752a0850219c7364b1a3386182fead0dd8b7460b / shm [159.89.39 .54] out: keine 20.145.768 4.398.716 15.730.668 22% / var / lib / Andockfensters / AUF / mnt / 17934c0fe3ba83e54291c1aebb267a2762ce9de9f70303a65b12f808444dee80 [159.89.39.54] out: shm 65536 0 65536 0% / var / lib / Andockfensters / Behälter / fd90146ad4bcc0407fced5e5fbcede5cdd3cff3e96ae951a88f0779ec9c2e42d / shm [159.89 .39.54] out: keine 20.145.768 4.398.716 15.730.668 22% / var / lib / Andockfensters / AUF / mnt / ba628f525b9f959664980a73d94826907b7df31d54c69554992b3758f4ea2473 [159.89.39.54] out: shm 65536 0 65536 0% / var / lib / Andockfensters / Behälter / dbf34128cafb1a1ee975f56eb7637b1da0bfd3648e64973e8187ec1838e0ea44 / shm [159.89 .39.54] out: Fertig. Trennen von 159.89.39.54… fertig. 

Aufgaben automatisieren

Mit Fabric können Sie Befehle auf einem Remote-Server ausführen, ohne sich beim Remote-Server anmelden zu müssen.

Die Remote-Ausführung mit Fabric kann zu Sicherheitsbedrohungen führen, da vor allem auf Linux-Computern ein offener SSH-Port erforderlich ist.

Nehmen wir beispielsweise an, Sie möchten die Systembibliotheken auf Ihrem Remote-Server aktualisieren. Sie müssen die Aufgaben nicht unbedingt jedes Mal ausführen. Sie können einfach eine einfache Fab-Datei schreiben, die Sie jedes Mal ausführen, wenn Sie die Aufgaben ausführen möchten.

In diesem Fall importieren Sie zuerst das Modul der Fabric-API:

von fabric.api import *

Definieren Sie den Remote-Host, den Sie aktualisieren möchten:

env.hosts = '159.89.39.54'

Legen Sie den Benutzernamen des Remote-Hosts fest:

env.user = "root"

Obwohl dies nicht empfohlen wird, müssen Sie möglicherweise das Kennwort für den Remote-Host angeben.

Definieren Sie schließlich die Funktion, mit der die Bibliotheken in Ihrem Remote-Host aktualisiert werden.

def update_libs (): "" "Aktualisieren Sie die grundlegenden Standardtools der Standardbetriebssysteminstallation." "" "run (" apt-get update ").

Nun, da Ihre Fab-Datei fertig ist, müssen Sie sie nur noch wie folgt ausführen:

$ fab Update

Sie sollten folgendes Ergebnis sehen:

$ fab update [159.89.39.54] Task 'Update' ausführen [159.89.39.54] run: apt-get update [159.89.39.54] Login-Passwort für 'root':

Wenn Sie das Kennwort nicht definiert haben, werden Sie dazu aufgefordert.

Nachdem das Programm die definierten Befehle ausgeführt hat, erhalten Sie die folgende Antwort, wenn keine Fehler auftreten:

$ fab update… Verbindung von 159.89.39.54 getrennt… fertig. 

Fazit

In diesem Lernprogramm wurde beschrieben, was erforderlich ist, um mit Fabric lokal und auf Remote-Hosts zu beginnen. Sie können jetzt mit dem Schreiben Ihrer eigenen Skripts beginnen, um Remote-Server zu erstellen, zu überwachen oder zu warten.