Aus Linux-Magazin 01/2024

Routinearbeiten mithilfe von Rundeck automatisieren

© goldenshark / 123RF.com

In komplexen IT-Infrastrukturen wie Cloud-Instanzen mit VMs und Containern kann das Abwickeln wiederkehrender administrativer Aufgaben arbeitsaufwendig ausfallen. Rundeck hilft, solche Prozesse zu automatisieren.

In Rechenzentren und Cloud-Infrastrukturen gleicht die Administration von Servern bei vielen wiederkehrenden Aufgaben einer Sisyphusarbeit. Da diese IT-Infrastrukturen oft sensible Daten enthalten und rund um die Uhr funktionieren müssen, fallen umfangreiche Monitoring-Aufgaben an. Mit dem auf Java basierenden und in einem Web-Frontend genutzten Automatisierungswerkzeug Rundeck [1] delegieren Sie zahlreiche der anfallenden Arbeiten. Das Spektrum reicht dabei vom Ausführen von Skripten, Befehlen oder Build-Prozessen bis hin zum Abarbeiten von Ansible-Playbooks.

Dementsprechend gibt es Rundeck in drei Varianten: Neben der Open-Source-Version findet sich eine Process-Automation-Variante für den Inhouse-Einsatz und eine Automation-Variante für die Nutzung in Cloud-Infrastrukturen [2]. Hinter der Cloud-Variante verbirgt sich eine SaaS, die alle Funktionen der Process-Automation-Version besitzt. Dazu gehören beispielsweise eine Single-Sign-on-Authentifizierung, ein integriertes ACL-Management und ein Cluster-Betrieb zur Gewährleistung der Hochverfügbarkeit. Die funktional abgespeckte Open-Source-Variante verfügt jedoch mit verschiedenen PAM-Mechanismen und der Implementation des LDAP-Protokolls ebenfalls über detaillierte Optionen zur Rechteverwaltung und Authentifizierung.

Die Software liegt in Form nativer DEB- und RPM-Pakete für unterschiedliche Linux-Distributionen zur Installation auf 64-Bit-Systemen vor [3]. Daneben bieten die Entwickler jeweils eine Variante für Java und eine für Container-Umgebungen mit Docker an. Für Microsoft-Betriebssysteme gibt es ebenfalls ein Installationspaket.

Voraussetzungen

Zunächst müssen Sie sicherstellen, dass die Hard- und Softwarevoraussetzungen erfüllt sind. Rundeck lässt sich mit mehreren professionellen unixoiden Server-Betriebssystemen nutzen, wobei die Entwickler eine Liste der unterstützten Linux-Derivate in ihrer Dokumentation aufführen. Der Rundeck-Server benötigt außerdem Java 8 oder 11 respektive ein entsprechendes OpenJDK. Bitte achten Sie darauf, unter Debian 12 die Repositories von Debian 11 zu integrieren, da die Softwarearchive von “Bookworm” nur OpenJDK 17 bereitstellen. Alternativ verwenden Sie die Java-Umgebung von Oracle.

Darüber setzt der produktive Einsatz des Systems eine Datenbank voraus, wobei sich alle gängigen DBMS eignen. Zu Testzwecken lässt sich Rundeck auch ohne zusätzliches Datenbanksystem aufsetzen, da es eine interne Datenbank namens H2 mitbringt. Allerdings raten die Entwickler davon ab, sie in produktiv genutzten Infrastrukturen einzusetzen. Im Fall von problematischen Systemzuständen, die einen unvorhergesehenen Neustart ohne vorheriges geordnetes Herunterfahren bedingen, kann H2 die Datenintegrität nicht gewährleisten. Als Hardwarevoraussetzungen nennen die Entwickler mindestens einen Zweikernprozessor sowie einen Arbeitsspeicher von wenigstens 4 GByte und 20 GByte freien Massenspeicher [4].

Installation

Überprüfen Sie bei einer direkten Installation auf einem Server vorab über den Befehl »java -version«, ob die korrekte Java-Version vorliegt (Listing 1, erste Zeile). Falls nicht, installieren Sie sie nach. Anschließend installieren und starten Sie Rundeck (Zeile 2 bis 4).

Listing 1

Rundeck installieren

$ sudo apt install openjdk-11-jre-headless
$ curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/  deb-setup.sh 2> /dev/null | sudo bash -s rundeck
$ sudo apt install rundeck
$ sudo service rundeckd start
$ tail -f /var/log/rundeck/service.log

Die korrekte Funktion der Anwendung überprüfen Sie mit einem Blick in die Log-Datei »service.log« (Zeile 5). Es kann etwa eine halbe Minute dauern, bis alle Rundeck-Prozesse initialisiert sind und die Applikation zum Betrieb bereitsteht. Signalisiert der Eintrag in der Log-Datei eine korrekte Funktion, können Sie die webbasierte Oberfläche unter der URL http://localhost:4440 aufrufen (Abbildung 1).

Abbildung 1: Beim Start von Rundeck gilt es, zahlreiche Prozesse zu initialisieren, sodass etwas Zeit vergeht.

Abbildung 1: Beim Start von Rundeck gilt es, zahlreiche Prozesse zu initialisieren, sodass etwas Zeit vergeht.

Nodes

Um die Funktionsweise von Rundeck zu verstehen, müssen Sie sich zunächst mit der Syntax vertraut machen. Die Anwendung unterteilt die Infrastruktur in Nodes, die sie mithilfe von Jobs steuert. Unterschiedliche Nutzer können Jobs definieren und aktivieren. Als Nodes bezeichnet man in Rundeck Zielsysteme, deren Verwaltung über die grafische Oberfläche funktioniert. Dazu gehören einzelne Server, aber auch virtuelle Maschinen, mit denen das Tool während der Bearbeitung von Jobs kommuniziert.

Die Nodes müssen dabei nicht physischer Natur sein, Cloud-Instanzen oder Container zählen ebenso dazu. Jobbeschreibungen sind daher stets mit einem oder mehreren Nodes verbunden. Als Node Sources klassifizieren die Entwickler übergeordnete Instanzen wie eine Amazon EC2-Infrastruktur, die mehrere virtuelle Maschinen bereitstellen kann. Diverse Parameter identifizieren die einzelnen Nodes. Dazu gehören Host-Namen, SSH-Schlüssel, Benutzernamen und IP-Adressen. Die Daten zu den einzelnen Nodes legen Sie dabei in Konfigurationsdateien ab.

Nutzer

Rundeck kennt mehrere Arten von Nutzern. Sie nehmen jeweils unterschiedliche Rollen mit spezifischen Rechten ein. Als Administrator definieren Sie für die Rollen einmalig beispielsweise Authentifizierungsmechanismen oder Zugriffsrechte anhand von Access Control Lists (ACLs). Sie enthalten Regeln sowohl im Projekt- als auch im Systemkontext.

Der Projektkontext bezieht sich auf Nodes und Jobs, während der Systemkontext allgemeine administrative Aufgaben umfasst. Die einzelnen Benutzerinformationen sowie die Rollendefinitionen speichern Sie lokal in der Datei »/etc/rundeck/realm.properties«. Hier hinterlegen Sie bei Bedarf außerdem Authentifizierungsdaten. Alternativ nehmen Sie die Authentifizierung der Benutzer über eine LDAP-Instanz oder Microsoft Active Directory vor.

Eine zentrale Rolle in der Nutzer- und Jobverwaltung von Rundeck kommt der Schlüsselverwaltung zu. Dazu dient ein zentrales Schlüssel-Repository, mit dessen Hilfe Sie die Schlüssel für verschiedenste Aufgaben verwalten. Zusätzlich beherrscht die Anwendung die Schlüsselverwaltung über externe Enterprise-Anwendungen, wobei sie verschiedene Anbieter und Technologien unterstützt.

Erste Schritte

Nach dem ersten Einloggen mit dem Nutzernamen admin und dem gleichlautenden Passwort gelangen Sie in eine etwas gewöhnungsbedürftige Oberfläche (Abbildung 2). Ein Eingabebereich, der die in Jobs und Projekten organisierten Aufgaben nach Erfassungsdatum tabellarisch auflistet, dominiert das Bild. Ein erstes Projekt legen Sie durch einen Klick auf die Schaltfläche Create New Project an.

Abbildung 2: Beim ersten Aufruf erscheint die Web-GUI optisch sehr leer.

Abbildung 2: Beim ersten Aufruf erscheint die Web-GUI optisch sehr leer.

Einsteiger finden hinter dem Schalter Learn Here ein Tutorial. In die Anwendung lassen sich mehrere Beispielprojekte integrieren, mit deren Hilfe Sie grundlegende Funktionen bei der Arbeit mit Rundeck erlernen. Dazu stellen die Entwickler eine Anleitung zur Verfügung, die allerdings auf einer Docker-Container-Umgebung basiert [5].

Bei späteren Aufrufen des Dashboards löst das Projektmenü diese Ansicht ab. In ihm führt Rundeck die bereits angelegten Projekte untereinander auf. Um die voreingestellten Authentifizierungsdaten für den Administrator zu ändern, editieren Sie die Datei »/etc/rundeck/realm.properties«. Dort vergeben Sie ein neues Passwort für den Administrator.

Navigation

Nachdem Sie ein neues Projekt angelegt haben, geleitet Sie die Software in einen Konfigurationsdialog, in dem Sie mithilfe mehrerer Reiter eine Grundtypisierung vornehmen. Rundeck übernimmt den Projektnamen in ein Auswahlfeld oben links im Fenster, aus dem Sie später die einzelnen Projekte auswählen.

Sobald Sie das erste Projekt gesichert haben, blendet die Anwendung links im Browserfenster eine Navigationsleiste ein. Darin finden Sie ganz oben das Dashboard, in dem sich neben der Projektbeschreibung einige statistische Angaben finden. Je nachdem, welche Funktionen das Projekt ausführt, variieren die Anzeigen. Unterhalb schließt sich die Jobliste an, in der Sie die einzelnen Jobs anlegen, editieren und ausführen.

Der Eintrag Nodes bezeichnet die den einzelnen Projektressourcen zugeordneten Knoten. Eine Filterfunktion gestattet das Auswählen der Knoten anhand vorgegebener Parameter. Im Dialog Commands führen Sie Kommandos in den per Filter ausgewählten Knoten aus. Die Option Activity informiert über laufende Aktivitäten und die Historie abgeschlossener Befehle. Diese Daten lassen sich ebenfalls mithilfe von Filtern eingrenzen. Der Starter Project Settings ganz unten erlaubt, individuelle, in einem Kontextmenü kategorisierte Einstellungen für das aktive Projekt festzulegen.

Der Gruppe admin angehörende Administratoren sehen oben rechts im Browserfenster zudem ein Zahnradsymbol, hinter dem sich das Menü System verbirgt. Dort stellen Sie zahlreiche Optionen ein, inklusive der Zugriffslisten. Mithilfe dieses Menüs werfen Sie außerdem einen Blick auf die Log-Dateien. Rechts daneben befindet sich das herkömmliche Nutzermenü, in dem sich Anwender abmelden oder ihr Profil editieren.

Neben der grafischen Möglichkeit zur Konfiguration von Ressourcen stehen Textdateien im XML- und YAML-Format zur Verfügung, mit deren Hilfe Sie Nodes, Jobs und andere Optionen manuell definieren.

Bei der Projekteingabe sollten Sie vor allem die Gruppen Default Node Executor und Default File Copier berücksichtigen. In diesen Dialogen legen Sie die SSH-Zugriffsdaten fest, um eine gesicherte Verbindung zu den Nodes zur Ausführung von Jobs sowie zum Kopieren entsprechenden Skripte auf die entfernten Rechner zu ermöglichen (Abbildung 3).

Abbildung 3: Mithilfe eines detaillierten SSH-Konfigurationsdialogs legen Sie fest, wie sich Server und Nodes verbinden.

Abbildung 3: Mithilfe eines detaillierten SSH-Konfigurationsdialogs legen Sie fest, wie sich Server und Nodes verbinden.

Anschließend speichern Sie die Schlüssel zur Authentifizierung auf den entfernten Nodes. Dazu klicken Sie oben rechts im Browserfenster auf das Zahnradsymbol und die Option Key Storage. In der eingeblendeten Tabelle legen Sie in einem Auswahlfeld das Projekt fest, für das Sie die Keys sichern wollen. Den Schlüssel laden Sie durch einen Klick auf die Schaltfläche Add or Upload a Key links. Im nachfolgenden Dialog bestimmen Sie den Schlüsseltyp oder gegebenenfalls ein Passwort. Passwörter lassen sich kryptografisch kodieren und somit absichern, indem Sie nach einem Klick auf das Zahnradsymbol die Option Password Utility auswählen.

Nodes und Jobs

Im nächsten Schritt definieren Sie zunächst die Nodes, auf denen die Jobs laufen sollen. Dazu öffnen Sie in der Projektübersicht links in der vertikalen Leiste die Gruppe Nodes. Dann wählen Sie im nun geöffneten Dialog in der Eingabezeile anhand von Parametern die gewünschten Nodes aus.

Um alle Nodes zu finden, geben Sie nur ein Sternchen ein und klicken auf Search. Rundeck sucht daraufhin nach Nodes und zeigt sie in einer Tabelle an. Rechts oberhalb davon erscheint das Auswahlfeld Actions. Sie können entweder über die Option Run a command on x Nodes ein Kommando auf allen gefundenen Nodes ausführen lassen oder einen Job für die Nodes einrichten, indem Sie die Option Create a job for x Nodes nutzen. Soll Rundeck lediglich bestimmte Nodes für einen Job berücksichtigen oder einen Befehl nur auf einigen Nodes ausführen, müssen Sie die Zielgeräte in der Tabelle erst durch einen Mausklick markieren.

Nach Eingabe eines Kommandos klicken Sie rechts auf die grüne Schaltfläche Run in x Nodes. Die Software führt danach den Befehl aus. Im unteren Bereich des Fensters gibt sie am Prompt Informationen zur Befehlsausführung aus (Abbildung 4). Die Ausgabe erscheint in der Gruppe Commands links in der vertikalen Steuerleiste.

Abbildung 4: Dank eines Ausgabebereichs behalten Sie den Überblick über ausgeführte Befehle.

Abbildung 4: Dank eines Ausgabebereichs behalten Sie den Überblick über ausgeführte Befehle.

Um einen automatisiert auszuführenden Job neu anzulegen, verwenden Sie den Dialog Create New Job aus der Gruppe Jobs. Darin bestimmen Sie in mehreren Gruppen nicht nur den Job selbst sowie die Nodes, auf denen er laufen soll, sondern im Reiter Schedule bei Bedarf auch die automatisierte Wiederholung. Liegt ein Job bereits in Form eines Skripts vor, können Sie ihn zudem in der Gruppe Workflow in Rundeck einbinden (Abbildung 5).

Abbildung 5: Aufgaben lassen sich mit Rundeck auch zeitgesteuert ausführen.

Abbildung 5: Aufgaben lassen sich mit Rundeck auch zeitgesteuert ausführen.

In den Reitern Notifications und Other legen Sie zusätzlich fest, bei welchen Aktionen das System Benachrichtigungen produziert und welches Log-Level während der Ausführung der Jobs gilt. Das Level Debug erzeugt dabei umfangreichere Protokollausgaben als das herkömmliche Level.

Eine Übersicht über die Systemaktivitäten erhalten Sie nach einem Klick auf die Gruppe Activity. In einem neuen Fenster zeigt Rundeck Aktivitäten tabellarisch strukturiert an. Neben den auslösenden Benutzern erscheinen die ausgeführten Befehle, der jeweilige Ausführungsstatus sowie Zeit, Datum und Dauer der Ausführung.

Rechtliches

Die Rechteverwaltung versteckt sich in Rundeck in der Gruppe Project Settings unten links in der Steuerleiste. Die Option Access Control hilft dabei, die ACL-Policies für das jeweils aktuelle Projekt einzurichten. Dazu nutzen Sie den Schalter Create ACL Policy und einen Dialog, in dem Sie die entsprechenden Daten hinterlegen. Außerdem lassen sich die Zugriffsrechte mithilfe von Dateien manuell definieren. Die im YAML-Format vorhandenen Dateien befinden sich im Verzeichnis »/etc/rundeck/« und tragen die Extension ».aclpolicy«.

Neben zwei entsprechenden Dateien für den Administrator und die Web-API liegen in diesem Verzeichnis mehrere Vorlagen, bei denen die Extension jeweils ».aclpolicy_template« lautet. Aus diesen Vorlagen generieren Sie entsprechende Regeldateien. Mithilfe der Policies passen Sie Zugriffs- und Ausführungsrechte sehr fein abgestuft an. Die Rechte beziehen sich nicht nur auf den Rundeck-Server und dessen Benutzerverwaltung, sondern auch auf Projekte und Jobs. Welche Möglichkeiten das System dabei bietet, erläutern die Entwickler in einer ausführlichen Dokumentation [6].

Plugins

Rundeck ist modular aufgebaut und kann daher Plugins integrieren, die den Funktionsumfang der Automatisierungslösung gezielt erweitern. Diverse Plugins implementieren die Projektentwickler auf Github selbst. Beachten Sie bitte, dass zahlreiche Plugins nur auf der kommerziellen Variante von Rundeck zur Verfügung stehen, während andere voreingestellt in allen Varianten eingebaut sind. Die Anwendungsdokumentation liefert dazu eine Übersicht der erhältlichen Plugins und erläutert deren Einbindung und Verwendung [7].

Fazit

Mit Rundeck erhalten Sie ein sehr effizientes Werkzeug an die Hand, mit dem Sie stetig wiederkehrende Aufgaben oder einzelne Kommandos und Befehle auf mehreren Endgeräten simultan automatisiert ausführen. Dabei haben Sie zudem die Möglichkeit, durch ein sehr fein abgestuftes Rechtesystem diese Aufgaben zu delegieren, sodass auch weniger versierte Anwender bestimmte Tätigkeiten im Intranet automatisiert ausführen können.

Die nach kurzer Einarbeitung eingängig zu bedienende Weboberfläche erleichtert den Umgang mit der Software. Allerdings müssen Sie als Administrator zunächst eine sehr steile Lernkurve bewältigen. Zum einen gibt es Rundeck in drei Varianten, die auf spezielle Anwendungsszenarien abzielen. Zum anderen treten mitunter aufgrund der zwar umfänglichen, aber teils veralteten und unvollständigen Dokumentation gelegentlich unerwartete Fehler auf. Insbesondere die Installationsbeschreibungen weisen einige Defizite auf. (csi)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben