In der sich ständig verändernden Welt der Softwareentwicklung ist effizientes Remote-Server-Management entscheidend. Egal, ob Sie ein Systemadministrator, ein Software-Ingenieur oder ein Software-Entwickler sind, die Möglichkeit, Linux-Befehle auszuführen auf entfernten Servern ist eine häufige Aufgabe.
Hier kommt Fabric ins Spiel, eine High-Level-Python-Bibliothek, die entwickelt wurde, um Linux-Befehle remote über SSH auszuführen, was es zu einem unverzichtbaren Werkzeug für jeden macht, der entfernte Systeme verwalten muss und dabei die Leistung von Python nutzt.
Was ist Fabric?
Fabric ist eine vielseitige Python-Bibliothek, die den Prozess des Ausführens von Shell-Befehlen auf entfernten Servern über SSH-Verbindungen vereinfacht. Ursprünglich wurde sie von Jeff Forcier entwickelt und später zu einem Open-Source-Projekt.
Sie bietet eine High-Level, Pythonische Schnittstelle für die Arbeit mit entfernten Systemen, die es Ihnen ermöglicht, Aufgaben zu automatisieren, Code bereitzustellen und Konfigurationen über mehrere Server hinweg mühelos zu verwalten.
Warum Fabric verwenden?
Es gibt mehrere überzeugende Gründe, sich für Fabric für Ihre Bedürfnisse bei der Ausführung von Remote-Befehlen zu entscheiden:
- Pythonischer Ansatz – Fabric folgt der Philosophie von Python und macht es Entwicklern und Systemadministratoren leicht, Skripte in einer Sprache zu schreiben, mit der sie bereits vertraut sind.
- SSH und Paramiko – Fabric verlässt sich auf die Bibliothek Paramiko, um SSH-Verbindungen zu handhaben, was eine sichere und zuverlässige Möglichkeit bietet, Befehle remote auszuführen.
- Aufgabenorientierter Workflow – Fabric fördert einen aufgabenorientierten Ansatz zur Ausführung von Befehlen auf entfernten Systemen. Sie definieren Aufgaben, die im Wesentlichen Python-Funktionen sind, und Fabric kümmert sich um die Ausführung auf den entfernten Servern.
- Anwendungsfälle – Fabric ist ein vielseitiges Werkzeug, das für eine Vielzahl von Anwendungsfällen geeignet ist, darunter die Bereitstellung von Anwendungen, die Verwaltung von Serverkonfigurationen und die Ausführung von Wartungsaufgaben im System.
In diesem Leitfaden werden die Schritte behandelt, um Fabric einzuführen und damit zu beginnen, die Serververwaltung für Gruppen von Servern zu verbessern.
So installieren Sie das Fabric-Automatisierungstool unter Linux
Eine wichtige Eigenschaft von Fabric ist, dass die entfernten Maschinen, die Sie administrieren möchten, nur den Standard OpenSSH-Server installiert haben müssen.
Sie benötigen nur bestimmte Anforderungen auf dem Server installiert, von dem aus Sie die Remoteserver verwalten, bevor Sie beginnen können.
Anforderungen:
- Python 2.5+ mit den Entwicklungsköpfen
- Python-setuptools und pip (optional, aber bevorzugt) gcc
Fabric wird leicht mit dem pip-Paketmanager installiert, aber Sie können auch Ihren Standard-Paketmanager yum, dnf oder apt/apt-get zum Installieren des fabric-Pakets bevorzugen, das normalerweise als fabric oder python-fabric bezeichnet wird.
Fabric in RHEL-Systemen installieren
Auf RHEL-basierten Distributionen wie CentOS Stream, Rocky Linux, und AlmaLinux müssen Sie das EPEL-Repository auf dem System installiert und aktiviert haben, um das Fabric-Paket zu installieren.
sudo dnf install epel-release sudo dnf install fabric
Fabric-Installation in Debian-Systemen
Auf Debian-basierten Distributionen wie Ubuntu und Linux Mint können Benutzer einfach apt ausführen, um das Fabric-Paket wie folgt zu installieren:
sudo apt install fabric
Fabric-Installation mit PiP
Wenn Fabric in den Repositorys Ihres Systems nicht verfügbar ist, können Sie pip verwenden, um es wie folgt zu installieren.
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]
Sobald pip erfolgreich installiert wurde, können Sie pip verwenden, um die neueste Version von Fabric wie folgt zu erhalten:
pip3 install fabric
Verwendung von Fabric zur Automatisierung von Linux-Verwaltungsaufgaben
Beginnen wir mit der Verwendung von Fabric. Im Rahmen des Installationsprozesses wurde ein Python-Skript namens 'fab'
zu einem Verzeichnis in Ihrem Systempfad hinzugefügt. Das 'fab'
-Skript übernimmt alle Aufgaben bei der Verwendung von Fabric.
Führen Sie Linux-Befehle lokal aus
Nach Konvention müssen Sie zunächst eine Python-Datei namens fabfile.py
mit Ihrem bevorzugten Texteditor erstellen. Denken Sie daran, Sie können dieser Datei einen anderen Namen geben, müssen Sie jedoch den Dateipfad wie folgt angeben:
fab --fabfile /path/to/the/file.py
Fabric verwendet 'fabfile.py'
zum Ausführen von Aufgaben, das 'fabfile'
sollte sich im selben Verzeichnis befinden, in dem Sie das Fabric-Tool ausführen.
Beispiel 1: Erstellen wir zunächst ein einfaches Hallo Welt
.
# vi fabfile.py
Fügen Sie diese Codezeilen zur Datei hinzu.
def hello(): print('Hello world, Tecmint community')
Speichern Sie die Datei und führen Sie den folgenden Befehl aus.
# fab hello

Schauen wir uns nun ein Beispiel für ein fabfile.py an, um den uptime-Befehl auf dem lokalen Rechner auszuführen.
Beispiel 2: Öffnen Sie eine neue fabfile.py-Datei wie folgt:
# vi fabfile.py
Und fügen Sie die folgenden Codezeilen in die Datei ein.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
Speichern Sie dann die Datei und führen Sie den folgenden Befehl aus:
# fab uptime

Linux-Befehle über SSH remote ausführen
Die Fabric API verwendet ein Konfigurations-Dictionary, das Python’s Äquivalent eines assoziativen Arrays ist und als env
bezeichnet wird, welches Werte speichert, die steuern, was Fabric tut.
Der env.hosts
ist eine Liste von Servern, auf denen Sie Fabric-Aufgaben ausführen möchten. Wenn Ihre Netzwerkadresse 192.168.0.0 ist und Sie die Hosts 192.168.0.2 und 192.168.0.6 mit Ihrer fabfile verwalten möchten, könnten Sie env.hosts wie folgt konfigurieren:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
Die obige Codezeile spezifiziert nur die Hosts, auf denen Sie Fabric-Aufgaben ausführen werden, und tut nichts weiter. Daher können Sie einige Aufgaben definieren, Fabric stellt eine Reihe von Funktionen zur Verfügung, die Sie zum Interagieren mit Ihren Remote-Maschinen verwenden können.
Obwohl es viele Funktionen gibt, werden die am häufigsten verwendeten sein:
- run – welches einen Shell-Befehl auf einer Remote-Maschine ausführt.
- local – welches den Befehl auf der lokalen Maschine ausführt.
- sudo – welches einen Shell-Befehl auf einer Remote-Maschine mit Administratorrechten ausführt.
- Get – welches ein oder mehrere Dateien von einer Remote-Maschine herunterlädt.
- Put – welches ein oder mehrere Dateien auf eine Remote-Maschine hochlädt.
Beispiel 3: Um eine Nachricht auf mehreren Maschinen zu echoen, erstellen Sie eine fabfile.py
wie unten.
#!/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 ' ")
Um die Aufgaben auszuführen, führen Sie den folgenden Befehl aus:
# fab echo

Beispiel 4: Sie können die fabfile.py
, die Sie zuvor erstellt haben, so verbessern, dass sie den uptime-Befehl auf dem lokalen Computer ausführt, sodass sie den uptime-Befehl ausführt und auch die Festplattennutzung mithilfe des df-Befehls auf mehreren Computern wie folgt überprüft:
#!/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')
Speichern Sie die Datei und führen Sie den folgenden Befehl aus:
# fab uptime # fab disk_space

Automatische Installation von LAMP-Stapel auf entferntem Linux-Server
Beispiel 4: Schauen wir uns ein Beispiel für die Bereitstellung eines LAMP (Linux, Apache, MySQL/MariaDB und PHP) Servers auf einem entfernten Linux-Server an.
Wir werden eine Funktion schreiben, die die Installation von LAMP mit Administratorrechten auf einem entfernten Server ermöglicht.
Für RHEL/CentOS und 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")
Für Debian/Ubuntu und 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")
Speichern Sie die Datei und führen Sie den folgenden Befehl aus:
# fab deploy_lamp
Hinweis: Aufgrund der großen Ausgabe können wir für dieses Beispiel kein Screencast (animiertes GIF) erstellen.
Jetzt können Sie Linux-Server-Verwaltungsaufgaben mit Fabric und den oben genannten Funktionen und Beispielen automatisieren…
Nützliche Optionen für Fabric
- Sie können
fab --help
ausführen, um hilfreiche Informationen und eine lange Liste der verfügbaren Befehlszeilenoptionen anzuzeigen. - Eine wichtige Option
--fabfile=PATH
, die Ihnen dabei hilft, eine andere Python-Moduldatei alsfabfile.py
zu importieren. - Um einen Benutzernamen anzugeben, der beim Herstellen einer Verbindung zu entfernten Hosts verwendet werden soll, verwenden Sie die
--user=USER
Option. - Um ein Passwort für die Authentifizierung und/oder sudo zu verwenden, verwenden Sie die
--password=PASSWORD
Option. - Um detaillierte Informationen über den Befehl NAME anzuzeigen, verwenden Sie die
--display=NAME
Option. - Um Formate anzuzeigen, verwenden Sie die
--list
Option, Auswahlmöglichkeiten: kurz, normal, verschachtelt, verwenden Sie die--list-format=FORMAT
Option. - Um eine Liste möglicher Befehle anzuzeigen und das Programm zu beenden, fügen Sie die
--list
Option hinzu. - Sie können den Speicherort der Konfigurationsdatei angeben, indem Sie die
--config=PATH
Option verwenden. - Um einen farbigen Fehlerausdruck anzuzeigen, verwenden Sie
--colorize-errors
. - Um die Versionsnummer des Programms anzuzeigen und das Programm zu beenden, verwenden Sie die
--version
Option.
Zusammenfassung
Fabric ist eine leistungsfähige Python-Bibliothek, die die Remote-Befehlsausführung über SSH vereinfacht und eine benutzerfreundliche Python-basierte Herangehensweise bietet. Seine Fähigkeit, komplexe Aufgaben zu vereinfachen und Systemverwaltung zu automatisieren, macht es zu einem wertvollen Werkzeug für Systemadministratoren, Entwickler und DevOps-Profis.
Ob Sie ein einzelnes Server-Management betreiben oder eine umfangreiche Bereitstellung koordinieren, kann Fabric Ihnen dabei helfen, die Arbeit effizient und effektiv zu erledigen.
Fabric ist ein leistungsfähiges Tool, das speziell für die Automatisierung von Systemadministrationsaufgaben entwickelt wurde. Es ermöglicht es Benutzern, komplexe Aufgaben wie das Installieren von Software, das Konfigurieren von Netzwerken und das Verwalten von Benutzerkonten mithilfe von Skripts und Befehlen auszuführen.
Ein Hauptvorteil von Fabric ist seine Fähigkeit, auf verschiedenen Betriebssystemen und Plattformen zu arbeiten. Dies bedeutet, dass es für die Verwaltung von Servern, die unterschiedliche Betriebssysteme wie Linux, Windows oder macOS verwenden, geeignet ist.
Fabric bietet auch eine einfache und intuitive Benutzeroberfläche, die es Benutzern ermöglicht, schnell und einfach Aufgaben auszuführen. Es unterstützt auch die Verwendung von Python-Skripts, was bedeutet, dass Benutzer ihre eigene Logik und Funktionalität in ihre Automatisierungsaufgaben einbinden können.
Insgesamt ist Fabric ein leistungsfähiges und vielseitiges Tool, das für eine breite Palette von Systemadministrationsaufgaben geeignet ist. Es ist ein wertvolles Werkzeug für jeden, der in der IT-Branche tätig ist und ein effektives Verwaltungstool für Server und Netzwerke benötigt.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/