Website-Suche

Fabric - Ausführen von Shell-Befehlen remote über SSH unter Linux


In der sich ständig verändernden Welt der Softwareentwicklung ist ein effizientes Remote-Server-Management von entscheidender Bedeutung. Unabhängig davon, ob Sie ein Systemadministrator, ein Softwareentwickler oder ein Softwareentwickler sind, ist das Ausführen von Linux-Befehlen auf Remote-Servern eine häufige Aufgabe.

Hier ist Fabric, eine High-Level-Python-Bibliothek, die für die Remote-Ausführung von Linux-Befehlen über SSH entwickelt wurde, ein unverzichtbares Werkzeug für alle, die Remote-Systeme verwalten und gleichzeitig die Leistungsfähigkeit von Python nutzen müssen.

Was ist Stoff?

Fabric ist eine vielseitige Python-Bibliothek, die das Ausführen von Shell-Befehlen auf Remote-Servern über SSH-Verbindungen vereinfacht. Es wurde ursprünglich von Jeff Forcier entwickelt und später zu einem Open-Source-Projekt.

Es bietet eine hochrangige, pythonische Schnittstelle für die Arbeit mit Remote-Systemen, mit der Sie mühelos Aufgaben automatisieren, Code bereitstellen und Konfigurationen auf mehreren Servern verwalten können.

Warum Stoff verwenden?

Es gibt mehrere überzeugende Gründe, sich für Fabric für Ihre Anforderungen an die Ausführung von Remotebefehlen zu entscheiden:

  • Pythonischer Ansatz – Fabric hält sich an die 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 Paramiko-Bibliothek, um SSH-Verbindungen zu verarbeiten, die eine sichere und zuverlässige Möglichkeit bietet, Befehle aus der Ferne auszuführen.
  • Aufgabenbasierter Workflow – Fabric fördert einen aufgabenorientierten Ansatz für die Ausführung von Remotebefehlen. Sie definieren Aufgaben, bei denen es sich im Wesentlichen um Python-Funktionen handelt, und Fabric kümmert sich um deren Ausführung auf Remote-Servern.
  • Anwendungsfälle – Fabric ist ein vielseitiges Tool, das sich für eine Vielzahl von Anwendungsfällen eignet, einschließlich der Bereitstellung von Anwendungen, der Verwaltung von Serverkonfigurationen und der Ausführung von Systemwartungsaufgaben.

In diesem Leitfaden werden die Schritte zur Einführung und zu den ersten Schritten mit der Verwendung von Fabric zur Verbesserung der Serververwaltung für Servergruppen behandelt.

So installieren Sie das Fabric Automation Tool unter Linux

Ein wichtiges Merkmal von Fabric ist, dass auf den Remote-Rechnern, die Sie verwalten müssen, nur der Standard-OpenSSH-Server installiert sein muss.

Sie müssen nur bestimmte Anforderungen auf dem Server installieren, von dem aus Sie die Remoteserver verwalten, bevor Sie beginnen können.

Anforderungen:

  • Python 2.5+ mit den Entwicklungsheadern
  • Python-setuptools und pip (optional, aber bevorzugt) gcc

Fabric lässt sich einfach mit dem pip-Paketmanager installieren, aber Sie können es auch vorziehen, Ihren Standard-Paketmanager yum, dnf oder apt/apt-get zu wählen, um das Fabric-Paket zu installieren, das normalerweise fabric oder python-fabric genannt wird.

Installieren von Fabric in RHEL-Systemen

Bei RHEL-basierten Distributionen wie CentOS Stream, Rocky Linux und AlmaLinux muss das EPEL-Repository auf dem System installiert und aktiviert sein, um das Fabric-Paket zu installieren.

sudo dnf install epel-release
sudo dnf install fabric

Installieren von Fabric auf Debian-Systemen

Auf Debian-basierten Distributionen wie Ubuntu und Linux Mint können Benutzer einfach apt ausführen, um das Fabric-Paket wie gezeigt zu installieren:

sudo apt install fabric

Installieren von Fabric mit PiP

Wenn Fabric nicht in den Repositories Ihres Systems verfügbar ist, können Sie pip verwenden, um es wie gezeigt 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]

Nachdem pip erfolgreich installiert wurde, können Sie pip verwenden, um die neueste Version von fabric abzurufen, wie gezeigt:

pip3 install fabric

Verwenden von Fabric zum Automatisieren von Linux-Verwaltungsaufgaben

Beginnen wir mit der Verwendung von Fabric. Als Teil des Installationsprozesses wurde ein Python-Skript mit dem Namen 'fab' zu einem Verzeichnis im PATH Ihres Systems hinzugefügt. Das Skript "fab" verarbeitet alle Aufgaben bei der Verwendung von Fabric.

Linux-Befehle lokal ausführen

Gemäß der Konvention müssen Sie damit beginnen, eine Python-Datei mit dem Namen fabfile.py mit Ihrem bevorzugten Texteditor zu erstellen. Denken Sie daran, dass Sie dieser Datei einen anderen Namen geben können, wie Sie möchten, aber Sie müssen den Dateipfad wie folgt angeben:

fab --fabfile /path/to/the/file.py

Fabric verwendet 'fabfile.py' zum Ausführen von Aufgaben, die 'fabfile' sollte sich im selben Verzeichnis befinden, in dem Sie das Fabric-Tool ausführen.

Beispiel 1: Lassen Sie uns zuerst ein einfaches Hello World erstellen.

# vi fabfile.py

Fügen Sie der Datei diese Codezeilen 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 eine fabfile.py an, um den Uptime-Befehl auf dem lokalen Computer auszuführen.

Beispiel 2: Öffnen Sie eine neue fabfile.py Datei wie folgt:

# vi fabfile.py

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 remote über SSH ausführen

Die Fabric-API verwendet ein Konfigurationswörterbuch, das Pythons Äquivalent zu einem assoziativen Array namens env ist, das Werte speichert, die steuern, was Fabric tut.

env.hosts ist eine Liste von Servern, auf denen Sie Fabric-Aufgaben ausführen möchten. Wenn Ihr Netzwerk 192.168.0.0 ist und die Hosts 192.168.0.2 und 192.168.0.6 mit Ihrer Fabfile verwalten möchten, können Sie die 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 gibt nur die Hosts an, auf denen Sie Fabric-Aufgaben ausführen, aber keine weiteren Aktionen ausführen. Daher können Sie einige Aufgaben definieren, Fabric bietet eine Reihe von Funktionen, die Sie zur Interaktion mit Ihren Remotecomputern verwenden können.

Obwohl es viele Funktionen gibt, sind die am häufigsten verwendeten:

  • run – führt einen Shell-Befehl auf einem Remote-Computer aus.
  • local – wodurch der Befehl auf dem lokalen Computer ausgeführt wird.
  • sudo – führt einen Shell-Befehl auf einem Remote-Computer mit Root-Rechten aus.
  • Get – lädt eine oder mehrere Dateien von einem Remote-Computer herunter.
  • Put – das eine oder mehrere Dateien auf einen Remote-Computer hochlädt.

Beispiel 3: Um eine Nachricht auf mehreren Computern wiederzugeben, erstellen Sie eine fabfile.py wie die untenstehende.

#!/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 ' ")

Führen Sie den folgenden Befehl aus, um die Aufgaben auszuführen:

# fab echo

Beispiel 4: Sie können die fabfile.py, die Sie zuvor erstellt haben, um den Befehl "uptime" auf dem lokalen Computer auszuführen, so verbessern, dass der Befehl "uptime" ausgeführt wird und auch die Festplattenauslastung mit dem Befehl df auf mehreren Computern überprüft wird, wie folgt:

#!/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

Automatisches Installieren des LAMP-Stacks auf dem Remote-Linux-Server

Beispiel 4: Schauen wir uns ein Beispiel für die Bereitstellung eines LAMP-Servers (Linux, Apache, MySQL/MariaDB und PHP) auf einem Remote-Linux-Server an.

Wir werden eine Funktion schreiben, die es ermöglicht, LAMP mit Root-Rechten aus der Ferne zu installieren.

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 keinen Screencast (animiertes GIF) erstellen.

Jetzt können Sie Linux-Serververwaltungsaufgaben mit Fabric und seinen oben angegebenen Funktionen und Beispielen automatisieren.

Nützliche Optionen für den Stoff

  • Sie können fab --help ausführen, um hilfreiche Informationen und eine lange Liste verfügbarer Befehlszeilenoptionen anzuzeigen.
  • Eine wichtige Option --fabfile=PATH, die Ihnen hilft, eine andere zu importierende Python-Moduldatei als fabfile.py anzugeben.
  • Um einen Benutzernamen anzugeben, der bei der Verbindung mit entfernten Hosts verwendet werden soll, verwenden Sie die Option --user=USER.
  • Um ein Passwort für die Authentifizierung und/oder sudo zu verwenden, verwenden Sie die Option --password=PASSWORD.
  • Um detaillierte Informationen über den Befehl NAME zu drucken, verwenden Sie die Option --display=NAME.
  • Um Formate anzuzeigen, verwenden Sie die Option --list, Auswahlmöglichkeiten: kurz, normal, verschachtelt, verwenden Sie die Option --list-format=FORMAT.
  • Um eine Liste der möglichen Befehle zu drucken und den Vorgang zu beenden, fügen Sie die Option --list ein.
  • Sie können den Speicherort der zu verwendenden Konfigurationsdatei mit der Option --config=PATH angeben.
  • Um eine farbige Fehlerausgabe anzuzeigen, verwenden Sie --colorize-errors.
  • Um die Versionsnummer des Programms anzuzeigen und das Programm zu beenden, verwenden Sie die Option --version.
Zusammenfassung

Fabric ist eine leistungsstarke Python-Bibliothek, die die Ausführung von Remote-Befehlen über SSH optimiert und einen benutzerfreundlichen Python-Ansatz bietet. Seine Fähigkeit, komplexe Aufgaben zu vereinfachen und das Systemmanagement zu automatisieren, macht es zu einem wertvollen Werkzeug für Systemadministratoren, Entwickler und DevOps-Profis.

Ganz gleich, ob Sie einen einzelnen Server verwalten oder eine groß angelegte Bereitstellung orchestrieren, Fabric kann Ihnen helfen, Ihre Aufgaben effizient und effektiv zu erledigen.

Verwandte Artikel: