Automatisierung mit Rundeck

Stapellauf

Die Automatisierung der IT-Landschaften geht weiter, und es entstehen immer neue Tools, die bei dieser Aufgabe helfen. Rundeck bietet dafür eine webbasierte GUI und erlaubt es, Jobs zu delegieren. Wir beschreiben, wie Sie das Programm in Betrieb nehmen.
Trotz des Siegeszugs der Cloud ist die Infrastruktur eines Unternehmensnetzwerks noch immer physisch. Und auch das Rechenzentrum mit viel Blech und Kabeln ... (mehr)

Ansible und Co. sind bei Admins beliebt, aber gelegentlich gibt es Jobs auf Servern auszuführen, die andere Kollegen übernehmen, und nicht jeder ist ein Commandline-Freund. Die Software Rundeck [1] eignet sich für solche Aufgaben, denn mit ihr kann der Admin Tasks konfigurieren, die andere ausführen dürfen. Das können beispielsweise Build-Prozesse sein oder auch ganz einfache Dinge wie der Neustart eines Servers. Dabei lassen sich in Rundeck dank einer fein abgestuften Zugriffskontrolle für Gruppen und Anwender die passenden Rechte konfigurieren und auch komplexe Workflows mit Abhängigkeiten abbilden.

Dank einer Reihe von Plug-ins kann Rundeck auch mit den gängigen Tools wie Puppet, Saltstack und Ansible verbunden werden. Die Rundeck-Integration für Foreman erlaubt es, verwaltete Hosts von Foreman für Rundeck zu exportieren. Selbst Cloud-Umgebungen sind für Rundeck kein unbekanntes Land, denn es gibt zumindest für Amazon Web Services (AWS) ein Plug-in. Wer Hochverfügbarkeit, Multi-Node Cluster und zentrales Logging braucht, kann einen Blick auf Rundeck Pro werfen. Zusätzlich bieten die Rundeck-Entwickler der Firma SimplifyOps auch Support und Beratung rund um Rundeck an.

Java vorausgesetzt

Rundeck ist ein Java-Programm, also muss auf dem Rechner eine Java-Runtime-Umgebung (JRE) oder ein Java Development Kit (JDK) vorhanden sein. Wir haben auf dem Ubuntu-16.04-Server die Runtime-Umgebung des freien OpenJDK installiert:

$ sudo apt-get install openjdk-8-jre

Rundeck lässt sich von der Homepage als Jar-File, aber auch als Debian- und RPM-Paket herunterladen und anschließend installieren:

$ wget http://dl.bintray.com/rundeck/rundeck-deb/rundeck-2.6.7-1-GA.deb
$ sudo dpkg -i rundeck-2.6.7-1-GA.deb

Die Installation als Paket ist insofern praktisch, als sie Rundeck so ins System integriert, dass es auch als Dienst gestartet wird. Das entsprechende Skript (SysV-Init) ist in "/etc/init.d" zu finden, eine Config-Datei für das Init-System Upstart ist "/etc/init/rundeckd.conf". Ubuntu 16.04 verwendet aber Systemd als Init-System, für das keine Startup-Datei beiliegt. Listing 1 zeigt eine Unit-Datei für Systemd, die den Rundeck-Dienst startet. Weil Systemd zwar das Setzen von Umgebungsvariablen, aber dabei nicht das Ausführen eines Skripts unterstützt, muss das im Rahmen des Start-Aufrufs ( »ExecStart« ) erledigt werden.

Listing 1: Systemd-Unit-Datei für Rundeck



[Unit]
Description=Rundeck service
[Service]
Type=simple
ExecStart=/bin/sh -c '. /etc/rundeck/profile ; $JAVA_HOME/bin/java $RDECK_JVM -cp $BOOTSTRAP_CP com.dtolabs.rundeck.RunServer /var/lib/rundeck $RDECK_HTTP_PORT > /var/log/rundeck/service.log 2>&1'
[Install]
WantedBy=multi-user.target

Läuft der Rundeck-Server, können Sie sich mit der URL "http:// »Rundeck-Server« :4440" einloggen. Die Standard-Credentials lauten "admin/admin". Um sie zu ändern, müssen Sie auf dem Rundeck-Server einen Texteditor bemühen und die Datei "/etc/rundeck/realm.properties" bearbeiten. Erstaunlicherweise erlaubt die Software sogar Klartextpasswörter. Alternativ ist beispielsweise ein MD5-Hash möglich. Das genaue Format ist in den Kommentaren in der Datei dokumentiert. Alternativ zur lokalen Benutzerverwaltung ermöglicht Rundeck auch die Anbindung an LDAP oder Active Directory über den Java Authentication and Authorization Service (JAAS).

Bild 1: Ein Rundeck-Server kann mit der Web-GUI oder -API gesteuert werden. Neben den lokalen lassen sich auch externe Ressourcen einbinden.

Die verwalteten Nodes werden typischerweise über Textdateien im XML-, JSON- oder YAML-Format konfiguriert. Alternativ sind andere Provider dafür möglich, auch hier gibt sich Rundeck flexibel und offen. Wer Instanzen in den Amazon Web Services verwaltet, kann das EC2 Nodes Plug-in verwenden, das die laufenden Rechner direkt bei Amazon abfragt. Im Rundeck-Wiki auf Github sind einige Tipps zu finden, die beispielsweise beschreiben, wie man mit Nmap ein Netz scannt und mit einem Skript daraus eine Nodes-Liste erzeugt.

Neben der Speicherung der Konfiguration im Dateisystem ist auch die Verwendung von SQL-Datenbanken möglich. Dabei ist Rundeck ebenfalls flexibel, denn es verwendet dafür die JDBC-Schnittstelle. MySQL, PostgreSQL und so weiter sollten damit also problemlos funktionieren.

Projekte und Jobs

Die Arbeit organisiert Rundeck innerhalb von Projekten und Jobs. Legen Sie ein neues Projekt an, erfragt das Programm einige Basisparameter wie etwa den "Default Node Executor", der in den meisten Fällen wohl die Secure Shell SSH sein wird. Dort ist auch der SSH Key Storage Path zu finden, den Sie mit Variablen so einstellen können, dass er für alle im Projekt beteiligten Nodes verwendet werden kann. Dazu bietet Rundeck die sogenannten Context Variables, die für jede Job-Ausführung automatisch belegt werden, etwa mit dem Projekt-, Job- oder Benutzernamen. Damit können Sie den SSH Key Storage Path etwa so belegen:

/keys/projects/webserver/nodes/${node.name}/${node.username}.pem

Alternativ zum Management übers Webinterface können Sie ein Projekt auf dem Rundeck-Server auch so anlegen:

$ rd-project -p meinprojekt --action create

So oder so findet sich nach dem Anlegen des Projekts ein neues Verzeichnis namens "/var/run/projects/meinprojekt" auf der Festplatte, das im Unterverzeichnis "etc" die Datei "projekt.properties" mit den Projekteinstellungen enthält.

Nun müssen Sie die Keys zur Authentifizierung auf den gesteuerten Rechnern in Rundeck speichern. Das entsprechende Menü finden Sie auf der Konfigurationsseite des Projekts, die Sie über das Zahnrad-Icon rechts oben erreichen. Auf der folgenden Seite erscheint links das Projekt-Menü, in dem unter anderem der Eintrag "Key Storage" zu finden ist. Im Hauptbereich navigieren Sie nun so durch den Keystore, dass die Hierarchie der oben als SSH Key Storage Path gespeicherten entspricht. So wie er vorher eingerichtet wurde, speichern Sie jeden Private Key unter dem Namen "root.pem".

Per Default speichert Rundeck die Keys unverschlüsselt im Dateisystem (unter "/var/lib/rundeck/var/storage/") oder in der Datenbank, aber mit einem Plug-in kann der Key Storage auch verschlüsselt werden (Bild 2). Besitzt der SSH Key einen Passphrase, fragt Rundeck ihn bei der Jobausführung ab. Alternativ zur Authentifizierung mit Private/Public Key sind auch SSH-Passwörter möglich.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023