Salt 🧂

Salt ist ein leistungsstarkes Tool für Konfigurationsmanagement und Automatisierung. Es ermöglicht die Verwaltung von Servern durch das Ausführen von Befehlen auf verschiedenen Betriebssystemen, darunter fast alle gängigen Linux-Distributionen, die BSD-Familie und Windows.

Ein einfaches Beispiel für die Nutzung von Salt wäre:

salt <Minion Name> pkg.upgrade

Dieser Befehl aktualisiert alle installierten Pakete auf den verwalteten Systemen, unabhängig davon, ob sie mit apt, yum, pacman oder zypper arbeiten. Neben Befehlen können auch benutzerdefinierte Konfigurationen in einer YAML-Syntax beschrieben werden, um den Zustand eines Systems festzulegen.

Um Salt effektiv nutzen zu können, ist es hilfreich, einige der wichtigsten Begriffe zu kennen. Salt arbeitet im klassischen Master-Minion-Modell. Der Master fungiert als zentrale Instanz, die weiß, wo es langgeht. Er hält die Konfigurationen, die in sogenannten States abgelegt sind. Der Minion ist das verwaltete System, das die Anweisungen des Masters ausführt.

Es gibt zwei grundlegende Interaktionsmodelle:

  • Pull-Prinzip: Der Minion holt sich Befehle aktiv vom Master.
  • Push-Prinzip: Der Master schickt Befehle aktiv an die Minions.

Salt Master

Der Master gibt die Richtung vor und verwaltet die Anweisungen der Minions.Standardmäßig liegen diese Konfigurationen unter /srv/salt/. Alternativ lässt sich auch eine Git-Anbindung einrichten, wobei darauf zu achten ist, GitPython als gitfs Provider zu verwenden, nicht pygit2.

Installation (Beispiel Debian 10): Unter Salt Repo lässt einsehen, wie man Salt Master auf all den verschiedenen Systemen installiert.

Hier nur kurz gezeigt, wie das unter Debian 10 geht (als root ausführen):

  1. GPG-Schlüssel herunterladen und hinzufügen:

    wget -O - https://repo.saltstack.com/py3/debian/10/amd64/latest/SALTSTACK-GPG-KEY.pub | apt-key add -

  2. Saltstack-Repository hinzufügen:

    deb http://repo.saltstack.com/py3/debian/10/amd64/latest buster main

  3. Paketlisten aktualisieren:

    apt-get update

  4. Salt Master installieren:

    apt-get install salt-master

Salt Minion

Der Minion ist das verwaltete System, auf dem die Befehle ausgeführt werden. Die zentrale Konfigurationsdatei befindet sich unter /etc/salt/minion, wo der Master-Server festgelegt wird. Standardmäßig lautet dieser einfach salt, kann aber je nach Netzwerkumgebung angepasst werden.

Installation (Beispiel Debian 10):

Ähnlich wie beim Master lässt sich die Instalation unter Salt Repo einsehen. Dieser lässt sich natürlich auf verschiedenen Systemen installieren.

  1. GPG-Schlüssel herunterladen und hinzufügen:

    wget -O - https://repo.saltstack.com/py3/debian/10/amd64/latest/SALTSTACK-GPG-KEY.pub | apt-key add -

  2. Saltstack-Repository hinzufügen:

    deb http://repo.saltstack.com/py3/debian/10/amd64/latest buster main

  3. Paketlisten aktualisieren:

    apt-get update

  4. Salt Minion installieren:

    apt-get install salt-minion

  5. Konfiguration anpassen, falls nötig.

  6. Den Dienst neustarten:

    systemctl restart salt-minion

Salt States

Salt States sind wie Bauanleitungen für ein System. Sie beschreiben den gewünschten Zustand eines Rechners – welche Programme installiert sein sollen, welche Konfigurationen gelten, etc. Diese Anweisungen werden in YAML verfasst. Der Minion lädt diese “Bauanleitung” vom Master herunter und führt sie aus.

Salt Grains

Grains sind systemeigene Eigenschaften der Minions, wie das Betriebssystem (os) oder der Virtualisierungstyp (virtual). Um eine Liste aller Grains eines Hosts abzurufen, kann folgender Befehl verwendet werden:

salt '*' grains.ls

Um die Werte der Grains einzusehen:

salt '*' grains.items

Salt Pillar

Pillars dienen als ein Key-Value-Speicher, der vor allem für sensible Informationen wie Passwörter oder API-Schlüssel verwendet wird. Im Gegensatz zu Grains werden Pillars nicht direkt auf den Minions ausgeführt, sondern nur vom Master bereitgestellt.

Fazit 🎉

Salt bietet eine mächtige Plattform für das Management unterschiedlichster Systeme. Mit seiner Push- und Pull-Architektur, der Möglichkeit, einfache oder komplexe Konfigurationen zu erstellen, und der breiten Betriebssystemunterstützung ist es ein unverzichtbares Tool für die Automatisierung in modernen IT-Umgebungen.

Weitere gute Quellen

  • Ein Blog von Thorsten Kramm der den Einstieg in Salt erleichtert.
  • Die offizielle Salt Dokumentation.
  • Ein Vortrag zu Salt Stack von Thorsten Kramm. (Leider schon sehr alt.)

Falls Sie Anmerkungen, Vorschläge oder Fragen haben, können Sie sich gerne per E-Mail, LinkedIn oder GitHub bei mir melden.