Website-Suche

Fabric – Führen Sie Shell-Befehle remote über SSH unter Linux aus


In der sich ständig verändernden Welt der Softwareentwicklung ist eine effiziente Remote-Serververwaltung von entscheidender Bedeutung. Unabhängig davon, ob Sie Systemadministrator, Softwareentwickler oder Softwareentwickler sind, ist die Ausführung von Linux-Befehlen auf Remoteservern eine häufige Aufgabe.

Hier macht Fabric, eine High-Level-Python-Bibliothek, die darauf ausgelegt ist, Linux-Befehle remote über SSH auszuführen, sie zu einem unverzichtbaren Werkzeug für jeden, der gleichzeitig Remote-Systeme verwalten muss Nutzung der Leistungsfähigkeit von Python.

Was ist Stoff?

Fabric ist eine vielseitige Python-Bibliothek, die die Ausführung 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 übergeordnete Pythonic-Schnittstelle für die Arbeit mit Remote-Systemen, mit der Sie Aufgaben mühelos 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 Remote-Befehlsausführungsanforderungen zu entscheiden:

  • Pythonischer Ansatz – Fabric folgt der Python-Philosophie 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 bei der Verarbeitung von SSH-Verbindungen auf die Paramiko-Bibliothek, die eine sichere und zuverlässige Möglichkeit bietet, Befehle aus der Ferne auszuführen.
  • Aufgabenbasierter Workflow – Fabric fördert einen aufgabenorientierten Ansatz zur Remote-Befehlsausführung. 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 für eine Vielzahl von Anwendungsfällen geeignet ist, darunter die Bereitstellung von Anwendungen, die Verwaltung von Serverkonfigurationen und die Ausführung von Systemwartungsaufgaben.

In diesem Leitfaden behandeln wir die Schritte zur Einführung und zum Einstieg in die Verwendung von Fabric zur Verbesserung der Serververwaltung für Servergruppen.

So installieren Sie das Fabric Automation Tool unter Linux

Ein wichtiges Merkmal von Fabric besteht darin, dass auf den Remote-Maschinen, die Sie verwalten müssen, lediglich der Standard-OpenSSH-Server installiert sein muss.

Sie müssen lediglich bestimmte Voraussetzungen auf dem Server installieren, von dem aus Sie die Remote-Server 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 ganz einfach mit dem Pip-Paketmanager installieren. Möglicherweise möchten Sie aber auch Ihren Standardpaketmanager yum, dnf oder apt/apt-get wählen, um das Fabric-Paket zu installieren , normalerweise fabric oder python-fabric genannt.

Installieren Sie Fabric in RHEL-Systemen

Auf RHEL-basierten Distributionen wie CentOS Stream, Rocky Linux und AlmaLinux muss das EPEL-Repository auf dem System installiert und aktiviert sein Installieren Sie das Fabric-Paket.

sudo dnf install epel-release
sudo dnf install fabric

Installieren Sie Fabric in Debian-Systemen

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

sudo apt install fabric

Installieren Sie Fabric mit PiP

Wenn Fabric nicht in den Repositorys Ihres Systems verfügbar ist, können Sie es wie gezeigt mit pip 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 mit pip die neueste Version von fabric abrufen, wie gezeigt:

pip3 install fabric

So verwenden Sie 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 im PATH Ihres Systems hinzugefügt. Das 'fab'-Skript übernimmt alle Aufgaben bei der Verwendung von Fabric.

Führen Sie Linux-Befehle lokal aus

Konventionell müssen Sie zunächst mit Ihrem bevorzugten Texteditor eine Python-Datei namens fabfile.py erstellen. Denken Sie daran, dass Sie dieser Datei nach Belieben einen anderen Namen geben können, Sie müssen jedoch den Dateipfad wie folgt angeben:

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

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

Beispiel 1: Erstellen wir zunächst einen einfachen Hello World.

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 eine fabfile.py an, um den Befehl uptime auf dem lokalen Computer 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

Führen Sie Linux-Befehle remote über SSH aus

Die Fabric API verwendet ein Konfigurationswörterbuch, das Pythons Äquivalent eines assoziativen Arrays namens env ist, das 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 Ihr Netzwerk 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ö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 nichts weiter tun. Daher können Sie einige Aufgaben definieren. Fabric bietet eine Reihe von Funktionen, die Sie für die Interaktion mit Ihren Remote-Maschinen verwenden können.

Obwohl es viele Funktionen gibt, werden am häufigsten folgende verwendet:

  • run – führt einen Shell-Befehl auf einem Remote-Computer aus.
  • local – führt den Befehl auf dem lokalen Computer aus.
  • 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 – lädt eine oder mehrere Dateien auf einen Remote-Computer hoch.

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

#!/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 Datei fabfile.py, die Sie zuvor erstellt haben, so verbessern, dass sie den Uptime-Befehl auf dem lokalen Computer ausführt führt den Befehl uptime aus und überprüft außerdem die Festplattennutzung mithilfe des Befehls df auf mehreren Computern 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

Installieren Sie den LAMP-Stack automatisch auf dem Remote-Linux-Server

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

Wir werden eine Funktion schreiben, die es ermöglicht, LAMP aus der Ferne mit Root-Rechten 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 mithilfe von Fabric und seinen oben aufgeführten Funktionen und Beispielen automatisieren …

Nützliche Stoffoptionen

  • 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 Python-Moduldatei als fabfile.py zum Importieren anzugeben.
  • Um einen Benutzernamen anzugeben, der beim Herstellen einer Verbindung zu Remote-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 zum Befehl NAME auszudrucken, 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 möglicher Befehle auszudrucken und zu beenden, schließen Sie die Option --list ein.
  • Sie können den Speicherort der zu verwendenden Konfigurationsdatei angeben, indem Sie die Option --config=PATH verwenden.
  • Um eine farbige Fehlerausgabe anzuzeigen, verwenden Sie --colorize-errors.
  • Um die Versionsnummer des Programms anzuzeigen und zu beenden, verwenden Sie die Option --version.
Zusammenfassung

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

Unabhängig davon, ob Sie einen einzelnen Server verwalten oder eine groß angelegte Bereitstellung orchestrieren, kann Fabric Ihnen dabei helfen, Ihre Arbeit effizient und effektiv zu erledigen.