SaltStack (kurz Salt) ist eine quelloffene, in Python geschriebene Plattform für Konfigurationsmanagement, Remote-Ausführung und Orchestrierung. Salt wurde 2011 von Thomas Hatch entwickelt und ist für seine hohe Geschwindigkeit bekannt: Über eine eigene Message-Bus-Architektur lassen sich Befehle an tausende Systeme gleichzeitig verteilen.
Master und Minions
Salt nutzt eine klassische Client-Server-Architektur: Ein zentraler Salt Master steuert die verwalteten Systeme, auf denen ein Salt Minion (Agent) läuft. Die Minions verbinden sich aktiv zum Master und halten eine dauerhafte Verbindung über ZeroMQ (einen schnellen Message-Bus) aufrecht. Dadurch kann der Master jederzeit Befehle an alle Minions pushen — etwa salt '*' test.ping, um die Erreichbarkeit zu prüfen. Der Stern steht für ein Ziel-Muster, das einzelne Systeme, Gruppen oder alle Minions selektiert.
States, Pillars und Grains
Die gewünschten Zustände beschreibt Salt in States (SLS-Dateien) aus YAML mit optionalem Jinja-Templating. Pillars liefern zentrale Daten (Passwörter, Konfigurationswerte) sicher an die Minions, Grains sind statische Informationen über ein System (Betriebssystem, CPU, Speicher), die bei der Zielauswahl helfen. Ein State-Lauf heißt state.apply: Salt gleicht den Ist-Zustand mit dem Soll ab und korrigiert Abweichungen — idempotent und wiederholbar.
Event-getrieben und orchestrierbar
Besonderes Merkmal ist die Event-Architektur: Der Reactor kann auf Ereignisse der Minions reagieren (etwa einen Dienstausfall) und automatisch Gegenmaßnahmen auslösen. Salt kann so nicht nur Konfiguration verteilen, sondern ganze Workflows orchestrieren — vom Bootstrapping neuer Systeme bis zur koordinierten Aktualisierung großer Server-Farmen.
Abgrenzung
Während Ansible agentenlos per SSH arbeitet, ist Salt agentenbasiert und dadurch bei sehr großen Umgebungen oft schneller. Wie Puppet und Chef gehört Salt zu den klassischen Konfigurationsmanagement-Werkzeugen; die Provisionierung neuer Systeme übernimmt es nur am Rand — dafür sind Werkzeuge wie Terraform zuständig.
Verwandte Grundlagen: Konfigurationsmanagement, Provisionierung, Ansible, Infrastructure as Code.