Definition

SaltStack

SaltStack, auch bekannt als Salt, ist ein Konfigurationsmanagement- und Orchestrierungswerkzeug. Es nutzt ein zentrales Repository, um neue Server und andere IT-Infrastrukturen bereitzustellen, Änderungen an bestehenden Infrastrukturen vorzunehmen und Software in IT-Umgebungen zu installieren, einschließlich physischer und virtueller Server sowie der Cloud.

SaltStack automatisiert wiederkehrende Aufgaben der Systemadministration und der Codebereitstellung und eliminiert so manuelle Prozesse, was Fehler bei der Systemkonfiguration in IT-Organisationen reduziert.

Salt wird in DevOps-Organisationen eingesetzt, da es Entwicklercode und Konfigurationsinformationen aus einem zentralen Code-Repository wie GitHub oder Subversion abruft und diese Inhalte per Fernzugriff auf Server überträgt. Salt-Benutzer können ihre eigenen Skripte und Programme schreiben und vorgefertigte Konfigurationen herunterladen, die andere Benutzer zu einem öffentlichen Repository beigetragen haben.

Salt Minions, Grains, Pillars und andere wichtige Funktionen

Die Hauptkomponente von Salt, die Remote-Execution-Engine, schafft ein sicheres, bidirektionales Hochgeschwindigkeits-Kommunikationsnetz. Bei einem laufenden Controller versucht ein gestarteter Minion, kryptografische Hashes zu erzeugen und eine Verbindung zum Controller herzustellen, um das Netzwerk zu bilden. Nach der Authentifizierung mit dem öffentlichen Schlüssel können die Minions Befehle vom Controller annehmen. Salt kann auch in einem Controllerlosen Minion-Modus operieren.

Salt unterscheidet sich von anderen Konfigurationsmanagement- und Automatisierungs-Tools durch seine Geschwindigkeit. Sein Multithreading-Design ermöglicht das Ausführen von Hunderten oder sogar Tausenden gleichzeitiger Aufgaben. Es verwendet ZeroMQ Messaging, das entkoppelt ist, was bedeutet, dass keine dauerhafte Verbindung erforderlich ist.

Salt verwendet ein Controller-Responder-Setup, das eine Push- und Pull-Ausführung ermöglicht. Der Benutzer kann Aktualisierungen und neuen Code massenweise ausliefern oder einen Zeitplan festlegen, nach dem die Server den Salt-Controller auf Aktualisierungen überprüfen und diese entsprechend ziehen. Die Konfigurationsmanagementarchitektur von Salt ist somit ereignisgesteuert und selbstheilend, da das System gleichzeitig Aktualisierungen herausgeben und auf Probleme reagieren kann. Salt bietet sowohl einen agentenbasierten als auch einen agentenlosen Modus.

Die Abstraktion von Salt erleichtert komplexe Systemverwaltungsaufgaben. Wenn Salt zum ersten Mal eine Verbindung zu einem Zielsystem herstellt, überprüft ein Bootstrap-Skript das Zielbetriebssystem und die Version und installiert dann die für das Setup spezifischen Binärdateien. Das Tool führt sowohl vorgefertigte als auch benutzerdefinierte Module per Fernzugriff aus.

In Anspielung auf den Namen Salt funktioniert die Software über Salt-Reaktoren, Minions, Grains und Pillars.

  • Salt-Reaktoren warten auf Ereignisse, während Agenten über eine sichere Shell Befehle auf einem Zielsystem ausführen.
  • Der Minion, der ein Agent ist, kann optional auf dem Zielsystem installiert werden, um Befehle in Python auszuführen.
  • Grains stellen den Minions Informationen über das Zielsystem zur Verfügung, zum Beispiel die Version des Betriebssystems.
  • Die Konfigurationsdateien werden Pillars genannt.

Salt verwendet die Jinja2-Templating-Engine, um bedingte Anweisungen einzufügen und andere Setups in Salt-State- und Pillar-Dateien zu erreichen, unter anderem.

SaltStack Enterprise und Salt Open Source Software Versionen

Die Open-Source-Software Salt ist kostenlos und wird, wie der Name schon sagt, über eine Befehlszeilenschnittstelle (CLI) bedient. Die kostenpflichtige Enterprise-Edition, SaltStack Enterprise, bietet zusätzliche Funktionen, darunter eine grafische Benutzeroberfläche und Unterstützung für Windows, macOS und Solaris. Außerdem bietet sie eine auf dem Lightweight Directory Access Protocol basierende, das heißt zentralisierte Zugriffskontrolle.

SaltStack bietet professionelle Dienstleistungen an, um Kunden bei der Integration mit Systemen von Drittanbietern zu unterstützen, oder Benutzer können Integrationen über eine API programmieren. Die SaltStack-Enterprise-API verfügt über viel mehr Funktionen als die kostenlose Version. SaltStack Enterprise verbessert die Compliance, indem es Ereignisse in einer Datenbank speichert, um eine nachvollziehbare Historie zu erstellen.

Vor- und Nachteile von Salt

Die Technologie, die Salt und SaltStack Enterprise zugrunde liegt, hat Stärken und Schwächen, die von den Fähigkeiten des Anwenders und dem Einsatzgebiet abhängen, in dem es angewendet wird.

Salt ist ereignisgesteuert und modular und stellt sicher, dass die IT-Komponenten unter seiner Kontrolle ihren Zielzustand beibehalten. Es bietet eine Front-End-Analytik-Engine und damit zusätzliche Intelligenz, um auf Ereignisse zu reagieren, auch auf solche von Dritten. Das System kann in einer mehrstufigen Konfiguration eingerichtet werden, bei der ein Untergebener andere kontrolliert, um die Redundanz und den Lastausgleich zu verbessern.

Salt ist in Python geschrieben und verwendet Python, das praktisch auf allen Linux-Systemen bereits installiert ist. Die grafische Benutzeroberfläche von SaltStack Enterprise ist jedoch nicht sehr funktionsreich, so dass die meisten Benutzer ihre Aufgaben über das Befehlszeilen-Tool erledigen.

Außerdem können die Zielzustände nicht in einer bestimmten Reihenfolge überprüft werden. Das reduziert die Möglichkeiten, Abhängigkeiten zwischen Systemen zu programmieren.

Salt versus Ansible, Puppet und Chef

Die konkurrierenden Konfigurationsmanagementprodukte haben alle unterschiedliche Methoden zur Spezifikation von Konfigurationen und Abhängigkeiten. Salt und Red Hat Ansible sind neuer – 2011 bzw. 2012 veröffentlicht – als Puppet, das 2005 auf den Markt kam, und Chef, das 2009 sein Debüt feierte. Die relative Jugend von Salt könnte als Vorteil dieses Tools angesehen werden, da es Probleme umgeht, die in den Jahren seit dem Aufkommen von Konfigurationsmanagementtechnologien aufgetreten sind.

Salt verwendet Python, eine Sprache, die Programmierer wahrscheinlich besser beherrschen als Ruby. SaltStack kann Skripte verwenden, die direkt in Python geschrieben wurden, und stellt Skripte, die in anderen Sprachen wie YAML oder JSON geschrieben wurden, über den PyDSL Salt Renderer dar. Salt verwendet zwar eine Controller-Reactor-Architektur mit Agenten, kann aber auch im agentenlosen Modus arbeiten. Puppet und Chef verwenden Agenten. Alle diese weit verbreiteten Konfigurationsmanagement-Tools arbeiten mit Public-Cloud-Plattformen wie Amazon Web Services zusammen.

Salt und Ansible unterstützen beide die YAML-Code-Konfiguration, die einfach zu verstehen ist, da sie von Menschen gelesen werden kann. Chef verwendet JSON-Konfiguration und die Programmiersprache Ruby. Puppet verfügt über eine eigene deklarative, domänenspezifische Sprache für die Konfiguration, die sich an das Nagios-Konfigurationsdateiformat anlehnt. Einige Benutzer berichten, dass Salt und Chef kompliziert zu erlernen sind, ebenso wie Puppet. Ansible erfordert keine Installation von Agenten, was die Komplexität weiter reduziert.

Diese Definition wurde zuletzt im Mai 2022 aktualisiert

Erfahren Sie mehr über Identity and Access Management (IAM)