Saltstack zum Konfigurationsmanagement von Servern

Gut gewürzt

Chef und vor allem Puppet haben lange Zeit das Feld der freien Software zum Konfigurationsmanagement dominiert. Jetzt gibt es aber in der Open Source-Welt immer mehr Konkurrenten, die Probleme der Pioniere umschiffen möchten. Das in Python geschriebene Saltstack ist eines der aktivsten Projekte dieser Gattung.
Die Verwaltung von IT-Landschaften wird immer komplexer - die explosionsartige Vermehrung mobiler Clients ist nur eine der vielen Erschwernisse. Zeit also für ... (mehr)

Auch wenn die Anzahl geschlossener Tickets und eingearbeiteter Patches kein Kennzeichen für die Qualität einer Software sein muss, kann sie immerhin als Indiz für die Aktivität und die Größe der Community dienen, die an einem freien Softwareprojekt arbeitet. Bei der Konfigurationsmanagement-Software Saltstack [1] sind diese Werte so hoch, dass sie es, wie schon im Vorjahr, in die Top Ten von Github geschafft hat (Bild 1). Damit hat sich Saltstack als Konkurrenz zu Systemen wie CFEngine, Ansible, Puppet und Chef etabliert, die alle den aktuellen Trend zur Automatisierung der Konfiguration von Serversystemen bedienen.

 Das Grundprinzip von Saltstack ist das gleiche wie bei seinen Konkurrenten: Der Administrator legt auf einem Server zentral die Konfiguration anderer Rechner fest, die die Management-Software dann auf den Clients umsetzt. Allerdings versucht Saltstack (kurz: Salt), sich von den anderen durch einige Features abzusetzen. So verwendet die Software zur Kommunikation zwischen Server und Clients (im Salt-Jargon: Master und Minions) den Message Broker 0MQ, der Daten mit möglichst wenig Overhead und damit entsprechend schnell übermittelt. Die Verschlüsselung der Daten mit AES soll für die sichere Übermittlung sensibler Daten sorgen.

Saltstack installieren

Je nach Aktualität der verwendeten Linux-Variante können Sie Saltstack aus dem distributionseigenen Repository installieren oder ein von den Saltstack-Entwicklern gepflegtes Repository verwenden. Für Ubuntu beispielsweise binden Sie es so ein:

sudo add-apt-repository ppa:salt­stack/salt

CentOS-Anwender finden eine recht neue Saltstack-Version im EPEL-Repository, das ohnehin für CentOS-User zum Pflichtprogramm gehört. Die Software lässt sich dann mit apt-get install salt-master respektive salt-minion installieren. Wie Sie Saltstack mit einem Provisioning-System wie Cobbler schon bei der Installation einspielen, verrät der Cobbler-Artikel ab Seite 60. Saltstack funktioniert übrigens nicht nur auf Linux-Distributionen wie Arch, Debian, Fedora, Gentoo, Cent­OS/Red Hat, Suse und Ubuntu, sondern auch auf FreeBSD, OS X, Solaris und sogar auf Windows. Im Test war es zum Beispiel problemlos möglich, mit Salt und dem Paketmanager Chocolatey auf einem Windows-Client Software zu installieren.

Zur Konfiguration verwendet Saltstack nur eine Handvoll von Dateien, die im Verzeichnis “/etc/salt” auf Client und Server liegen. Auf dem Master legt die Datei “master” die Konfiguration fest, die Schlüssel für die Absicherung der Kommunikation liegen im Unterverzeichnis “pki”. Auf dem Client genügt es normalerweise, den Hostnamen des Salt-Masters zu hinterlegen, und zwar mit der Einstellung »master« in der Datei »/etc/salt/minion« . Nützlich ist auch die Datei »minion_id« , über die sich der Name einstellen lässt, auf den der Client beim Management hört.

Ist die Software installiert, versucht der Minion eine Verbindung zum konfigurierten Master herzustellen. Das klappt aber nicht auf Anhieb, weil der Master erst noch den kryptografischen Schlüssel des Minions bestätigen muss. Auf dem Master-Rechner führen Sie (mit Root-Rechten) den Befehl »salt-key« aus, um die zu bestätigenden Schlüssel anzuzeigen. Mit »salt-key -a« akzeptieren Sie einen, mit »salt-key -A« alle Schlüssel, werden aber immer noch bei jedem Einzelnen zur Bestätigung aufgefordert (Bild 2).

Bild 1: Saltstack war im Jahr 2013 eines der aktivsten Projekte auf Github.

Befehle ausführen

Im einfachsten Fall lassen sich mit Salt beliebige Kommandos auf den verwalteten Rechnern ausführen. Das bringt gegenüber einer SSH-Session wenig Vorteile, ist aber eventuell sinnvoll, um auf vielen Hosts gleichzeitig einen bestimmten Befehl auszuführen. Dazu bringt Saltstack das Cmd-Modul mit, das der Administrator so verwendet:

salt ‘*’ cmd.run ‘ls -l /etc/salt’

Hiermit zeigen alle verwalteten Salt-Minions den Inhalt des Verzeichnisses “/etc/salt” an. Um auf einem bestimmten Host einen Befehl auszuführen, verwenden Sie statt des Sternchens einfach seinen Namen. Hier sind außerdem Platzhalter und eine Vielzahl von Filtern möglich, um ganze Gruppen von Rechnern zu spezifizieren.

Auf diese Art könnten Sie mit Salt beispielsweise auch Software installieren, aber das wäre wenig sinnvoll, denn dann müssten Sie die für jedes Betriebssystem spezifischen Paketmanagement-Befehle kennen und manuell eintippen. Um das zu vermeiden, bietet Saltstack zahlreiche Module, über die sich Aufgaben strukturierter und auf einer höheren Abstraktionsebene erledigen lassen [2]. So gibt es fürs Paketmanagement das Modul »pkg« , das es dem Admin erspart, sich mit »yum« , »apt« und Co. zu beschäftigen. Die Installation des Vim-Editors ist damit schnell erledigt:

salt ‘*’ pkg.install vim

Jedenfalls in der Theorie, denn in der Praxis machen einem die unterschiedlichen Paketnamen der diversen Linux-Varianten wieder einen Strich durch die Rechnung – willkommen im Dschungel der Linux-Distributionen.

Um zu sehen, welche eingebauten Module ein Minion mitbringt, führen Sie auf dem Master den Befehl »salt Minion sys.doc« aus. Die folgende Ausgabe ist etwas unübersichtlich, denn bei einem Standard-System geht die Anzahl der verfügbaren Befehle gleich in die Hunderte. Um aus dem Wust inklusive Dokumentation nur die Befehle auszufiltern, kombinieren Sie den Aufruf mit einem Grep-Filter:

salt ‘*’ sys.doc | grep -E “^\w”

Wie Bild 3 zeigt, stehen auf einem Cent­OS-System über Saltstack knapp 700 eingebaute Befehle zur Verfügung!

Bild 2: Der Administrator muss zuerst die kryptografischen Schlüssel der Minions bestätigen.
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