Automatisierung mit Rundeck

Bei meinen letzten Spielerein im Heimnetz ging es um ESXi auf dem Pi4 und Ansible, was dann darin aufging virtuelle Maschinen automatisch zu installieren. Bislang lief dies über die Kommandozeile, weshalb ich ursprünglich den Plan hatte AWX zu installieren, um diesen und andere Prozesse bequem über eine grafische (Web)Oberfläche starten zu können. Nach einigen Hürden mit AWX, welche sich auf dem Pi wegen der Architektur ergaben (welcome to the dependency hell), habe ich ein anderes Frontend zur Automatisierung entdeckt. Rundeck...

Manchmal hat es ja doch sein Gutes wenn Software nicht so möchte wie man will. Man trifft je nachdem durchaus auf Alternativen, welche im Idealfall sogar für den ein oder anderen Anwendungsfalls besser sein können. Für den Heimgebrauch, um die ein oder andere simple Automation zu verwalten, dürfte Rundeck vielleicht sogar besser geeignet sein als AWX. Für komplexere Umgebungen würde ich natürlich dennoch auf AWX zurückgreifen wollen.

Rundeck ist allerdings deutlich schmaler und übersichtlicher. Wer wie in meinem Fall in seinem Heimnetzwerk zentral das ein oder andere starten möchte, sollte sich Rundeck anschauen. Um kurz und knapp Wikipedia zu zitieren:

Rundeck ist ein Open-Source Automatisierungstool für den Einsatz in Rechenzentren oder Cloud-Umgebungen. Rundeck wurde unter der Apache Software Lizenz 2.0 veröffentlicht und basiert auf Java und Grails 3.

Zwar würde ich jetzt nicht so weit gehen mein Heimnetz als Rechenzentrum oder Cloud-Umgebung zu bezeichnen, aber hey - alles eine Frage der Auslegung :)

Rundeck ist bei weitem nicht auf Ansible limitiert, sondern bietet eine sehr große Anzahl an Plugins.

Installation

Die Installation von Rundeck ist sehr einfach und hat als einizigen Knackpunkt nur die erforderliche Java Version. Rundeck benötigt Version 1.8. Unter Debian lässt sich mit

update-alternatives --config java

prüfen und ändern, welche Version installiert und aktiv ist.

Das deb-Package kann man direkt auf der Webseite von Rundeck beziehen und mit

dpkg -i rundeck_3.3.10.20210301-1_all.deb

installieren. Gegebenenfalls muss vorab das Paket uuid-runtime installiert werden. Nach der Installation steht der Server mit

service rundeckd start

zur Verfügung und läuft auf Port 4440.

Projekte

Ähnlich wie bei Jenkins, kann man in Rundeck Projekte erstellen und diese mit Jobs versehen. Diese Jobs bestehen wiederum aus einzelnen Workflows, die mehrfach und abhängig voneinander hinzugefügt werden können.

Die Möglichkeiten, welche sich hier ergeben, sind nicht zu unterschätzen. Ich habe Rundeck gerade erst angekratzt. Für meinen ersten Test habe ich tatsächlich auch gar nicht das Ansible Plugin verwendet, sondern ganz simpel ein Kommandozeilen-Schritt als Aktion im Job verwendet.

Da Ansible nicht mit einem Returncode 0 antwortet, sondern in diesem Fall mit 4, habe ich einfach einen Error-Handler hinzugefügt, welcher bei jedem Schritt zur Verfügung steht.

Mehr gibt es fast nicht zu tun. Rundeck startet (über diesen Umweg) dann ganz simpel ein lokales Playbook.

Sogar die Benachrichtigung per Mail funktioniert sofort und bedarf keiner weiteren Konfiguration. Diese Art und Weise Rundeck mit Ansible zu verwenden entspricht natürlich nicht der eigentlichen Methode mittels Plugin, wo auch die SSH Konfigurationen vorgenommen werden können. Dies werde ich mir aber später bei weiterführenden Ausflügen mit Ansible ebenfalls genauer anschauen.

Rundeck benötigt für solch kleinere Aufgaben auch nicht sonderlich viel Speicher. Im Leerlauf begnügt sich die Anwendung mit 549MB.

Auf Rundeck sollte man nochmal ein genaueres Auge werfen, das Potential erscheint auf den ersten Blick riesig. Um seine kleine Raspberry Pi Armada Zuhause mit den ein oder anderen Aufgaben zentral zu verwalten, erscheint mir diese Software jedenfalls im Augenblick genau richtig.

Anregungen und Diskussionen zum Beitrag findet ihr auf Mastodon.