Software wie Ansible, die Installation und Konfiguration von Servern und Diensten reproduzierbar macht, wird zusehens populärer. Die Lernkurve für solche Tools ist aber steil, denn sie sind meistens historisch gewachsen und bieten eine Vielzahl von Konzepten wie Playbooks, Tasks, Rollen und Modulen, um die Konfiguration zu strukturieren. Hilfreich ist da eine Anlaufstelle wie Ansible Galaxy, die fertige Module bietet, um etwa eine Datenbank zu installieren.
Noch spezifischer ausgerichtet ist eine Sammlung von Playbooks unter dem Namen "Debops" [1], dem "Debian-based Data Center in a box". Debops bietet mehr als 60 Playbooks [2], die für den produktiven Einsatz gedacht sind, etwa mit Datenbanken wie PostgreSQL und MariaDB, dem Webserver Nginx, Ruby on Rails, den Monitoring-Systemen LibreNMS und Monit, Samba, Postfix, NFS und den Virtualisierungstools LXC, Docker, OpenVZ und KVM.
Wie der Namen andeutet, ist Debops auf Debian-Systeme ausgerichtet, was aber auch die Ubuntu-Distribution einschließt. Ursprünglich wurde Debops von Maciej Delmanowski entwickelt, mittlerweile beteiligen sich an dem Open Source-Projekt auch andere Entwickler.
Installieren lässt sich Debops leicht über den Python-Paketmanager Pip mit dem Aufruf »pip install debops
«
. Per Default landen die Python-Dateien in "/usr/local/lib/python2.7/dist-packages/debops" und die installierten Debops-Befehle sind in "/usr/local/bin" zu finden:
$ ls -1 /usr/local/bin/debops*/usr/local/bin/debops /usr/local/bin/debops-defaults /usr/local/bin/debops-init /usr/local/bin/debops-padlock /usr/local/bin/debops-task /usr/local/bin/debops-update
Im Prinzip können Sie nach der Installation als regulärer Benutzer weitermachen, aber dann installiert Debops die Playbooks nur in Ihrem Home-Verzeichnis, worauf andere User keinen Zugriff haben. Um die Debops-Dateien global zu installieren, weil Sie im Team administrieren, editieren Sie die Datei "/etc/debops.cfg" und fügen folgende Zeilen hinzu:
[paths]data-home: /opt/debops
Wenn Sie nun »debops-update
«
als Root-User aufrufen, werden die Playbooks unterhalb von "/opt/debops" installiert (Bild 1). Führen Sie es als gewöhnlicher User aus, finden sich die Dateien danach in "$HOME/.local/share/debops/debops-playbooks". Im Folgenden gehen wir von einer Installation in "/opt" aus.
Sind die Playbooks installiert, legen Sie mit "debops-init" eine neue Verzeichnisstruktur an, in der Sie die Konfiguration eines oder mehrerer Server speichern (Bild 2). Dabei erwartet das Tool den Verzeichnisnamen als Parameter. Wenn Sie danach einen Blick in das Verzeichnis werfen, finden Sie ein neues Directory "ansible" und die beiden Dot-Files ".debops.cfg" und ".gitignore":
$ debops-init server-config$ ls -A1 server-config/ ansible .debops.cfg .gitignore
Im Verzeichnis "ansible" finden Sie die bei Ansible üblichen Verzeichnisse "inventory", "playbooks" und "roles", um das verfügbare Server-Inventar, die Playbooks und die Rollen zu speichern. Alle Änderungen an der Ansible-Konfiguration nehmen Sie über die Datei ".debops.cfg" vor – sofern Sie sie nicht ohnehin global in "/etc/debops.cfg" einrichten. Wenn Sie irgendwann den Befehl debops aufrufen, der die Playbooks auf die Server anwendet, erzeugt er aus der Debops-Konfiguration die Datei "ansible.cfg" im selben Verzeichnis. Editieren Sie sie nicht, denn alle Änderungen werden vom Debops-Tool überschrieben.
Das Setup der zu verwaltenden Rechner entspricht dem bei der Verwendung von Ansible. Am einfachsten ist es, auf ihnen einen Benutzer einzurichten, der mit "sudo" ohne Passwort Root-Rechte erlangen kann. In dessen SSH-Konfiguration, konkret der Datei ".ssh/authorized_keys", kopieren Sie einen oder mehrere SSH Public Keys des Management-Rechners, zum Beispiel mit "ssh-copy-id", um sich ohne Passwort einloggen zu können.
Die Hosts fügen Sie gemäß den Ansible-Konventionen der Datei "~/server-config/ansible/inventory/hosts" hinzu. Sie können die gemanagten Hosts also einfach in der Liste aufführen oder mit Hilfe der Ini-File-Syntax auch Gruppen anlegen, denen Sie Hosts hinzufügen:
node1.cloud.net [webservers] node2.cloud.net node3.cloud.net
Die Dokumentation schlägt an dieser Stelle vor, mit »debops-task all -m setup
«
per Ansible die Konfiguration der eingetragenen Hosts zu überprüfen, aber das funktioniert nicht, weil die vorher angesprochene Datei "ansible.cfg" noch fehlt. Am besten rufen Sie, nachdem Sie in das Projektverzeichnis "server-config" gewechselt sind, kurz "debops" auf und brechen den Befehl gleich wieder mit Strg-C ab. Danach können Sie den obigen Aufruf von "debops-task" starten, mit dem sich anders als mit "debops" auch einzelne Playbooks anwenden lassen.
Um die Konfiguration zu vereinfachen, bietet Debops Gruppen, die den angebotenen Rollen entsprechen. So genügt es, im Host-Inventory die entsprechenden Rechner einer Debops-Gruppe hinzuzufügen, damit beim nächsten Durchlauf die passende Software installiert wird. Ein Beispiel dafür ist die MariaDB-Gruppe, die im Inventory so aussieht:
[debops_mariadb_server] node3.cloud.net