Server-Management mit Debops

Operation geglückt

Programme wie Ansible und Puppet werden immer häufiger zum Management der Konfiguration von Linux-Servern verwendet. Das Debops-Projekt sammelt Ansible-Rezepte für eine ganze Reihe von Anwendungen. Dieser Artikel verrät, wie Sie Debops für Debian- und Ubuntu-Rechner einsetzen.
Die Zusammenarbeit im Unternehmen wird immer dynamischer und flexibler. Aus diesem Grund wirft IT-Administrator in der April-Ausgabe einen Blick auf die ... (mehr)

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.

Installation mit Pip

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.

Bild 1: Beim Aufruf von debops-update lädt das Tool die verfügbaren Ansible-Playbooks herunter.

SSH konfigurieren

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
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