Mr. Roboto – Fabric und Python für automatisierte Aufgaben

Mr. Roboto – Fabric und Python für automatisierte Aufgaben

fabric
Quelle

Möchtest Du lästige und wiederkehrende Aufgaben automatisieren? Hast Du genug von unbequemen und händischen Deployments? Willst Du Deine Zeit nicht lieber in schöne Dinge wie das Programmieren investieren? Möchtest Du fehleranfällige händische Rollouts minimieren und auch mal einen ungeübten Kollegen dieses Zepter überlassen? Dann werfe einen Blick auf fabric!

Fabric ist eine Python Bibliothek und gleichzeitig ein Kommandozeilen Werkzeug. Damit ist es möglich sehr simple Befehle auf entfernten Maschinen auszuführen. Dabei können diese entfernten Server wahlweise sequentiell oder parallel angesprochen werden.

Fabric kann dazu genutzt werden z.B. administrative Aufgaben zu definieren und diese auf eine selbst bestimmte Anzahl von Rechnern auszuführen. Der Benefit davon ist, dass Aufgaben, die normalerweise per Hand wiederholt ausgeführt werden müssen, nur einmal definiert und automatisiert abgearbeitet werden. Dies kann einen Entwickler oder Administrator sehr viel Zeit einsparen, da immer wiederkehrende Tasks mit einem einfachen Befehl auf einer oder hunderten Maschinen ausgeführt werden.

Bei meiner täglichen Arbeit als Entwickler muss ich regelmäßig Unit Tests auf entfernten Maschinen ausführen und sicherstellen, dass bei Änderungen an der Code Basis alles noch funktioniert. Der normale Ansatz wäre sich per SSH dort hin zu verbinden, ins richtige Verzeichnis zu wechseln und bestimmte Befehle für die Ausführung der Unittests auszuführen. Dabei wird der Verbindungsauf- und abbau von fabric und paramiko – worauf fabric basiert – gemanagt. Dabei bekommt man auf der Konsole Feedback darüber, wie der momentane Status ist, so als befände man sich direkt auf dem Remote Server.

Das Deployment wird normalerweise von IT Operatoren bzw. Admins durchgeführt, manchmal wird das aber auch durch den Entwickler selbst oder durch eine Kombination aus beiden Teilen der IT durchgeführt. Mittels fabric lassen sich einzelne Schritte durchführen, um Software vorzubereiten und letzendlich zu verteilen. Wenn Software reif für ein Deployment ist und alle möglichen Tests durchgeführt worden sind, um hohe Qualität abliefern zu können, müssen neue Features zum Kunden. Um das zu erreichen benötigt die auszurollende Software Server auf die sie laufen kann. Dabei kann die Dimension groß oder klein sein, kein Problem für fabric, wenn es darum geht diese zu verteilen.

Die einzelnen Schritte zur Verteilung werden programmatisch beschrieben und die Schritte auf so vielen Maschinen wie nötig wiederholt. Die Verteilung kann von einem Entwicklerrechner oder natürlich noch besser automatisch auf einer Jenkins Umgebung stattfinden.

Mit Hilfe von Kollegen haben wir in gemeinsamer Arbeit Deployments, die nur von wenigen durchgeführt werden konnten und mehrere Stunden gedauert haben vereinfacht. Und zwar soweit automatisiert, dass nur noch ca. eine halbe Stunde nötig war und jeder der Entwickler ohne fremde Hilfe und mittels einer einfachen Anleitung ein Rollout durchführen konnte. Und der Spaß bei der Entwicklung eines solchen Tools mittels fabric und Python muss hier nochmal betont werden.

Danke fabric 😉

Using fabric to standardize the development process

So kann man z.B. remote die Paketliste auf einem remote Ubuntu Server aktualisieren


from fabric.api import sudo, env
env.sudo_user = "admin"
env.password = "secure"

def update():
„““
Updates the package list
„““
sudo(‚apt-get update -qq‘)

Hast Du Erfahrungen mit Fabric oder hast weitere Fragen zum Thema, dann hinterlasse ein Kommentar.

Vielen Dank!

 

Quellen

fabric
Linux Magazin über fabric
Fabric for beginners
Admin tools and fabric

1 Comment

  • Das kann ich so nur bestätigen. Fabric kann für viele Dienge, nicht nur für Software-Deployments verwendet werden. Mann kann Fabric auch für Administrative Tasks auf Servern einsetzten. Beispielsweise das leeren eines Server Caches oder das überprüfen von Konfigurationen und File-Premessions sowei das fixen dieser, fals ein Entwickler diese wieder verstellt 😉


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.