Definitionen durchsuchen :
Definition

SaltStack

Mitarbeiter: Matthew Haughn

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 vorzunehmen und Software in IT-Umgebungen zu installieren, einschließlich physischer und virtueller Server sowie in der Cloud.

SaltStack automatisiert wiederkehrende Aufgaben der Systemadministration und des Code-Deployments und eliminiert manuelle Prozesse, um Fehler bei der Systemkonfiguration in IT-Organisationen zu reduzieren.

Salt wird oft 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 die 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, erstellt ein sicheres, bidirektionales Hochgeschwindigkeits-Kommunikationsnetzwerk. Bei einem laufenden Master versucht ein gestarteter Minion, kryptografische Hashes zu erzeugen und sich mit dem Master zu verbinden, um das Netzwerk zu bilden. Nach der Public-Key-Authentifizierung können die Minions Befehle von einem Master annehmen. Salt kann auch in einem masterlosen Minion-Modus ausgeführt werden.

Salt unterscheidet sich von anderen Konfigurationsmanagement- und Automatisierungstools durch seine Geschwindigkeit. Sein Multithreading-Design ermöglicht das Ausführen von Hunderten oder sogar Tausenden von Aufgaben gleichzeitig. Es verwendet das entkoppelte ZeroMQ Messaging. Das bedeutet, dass keine persistente Verbindung erforderlich ist.

Salt verwendet ein Slave-Master-Setup, das Push- und Pull-Ausführungen ermöglicht. Der Benutzer kann Updates und neuen Code massenweise ausliefern oder einen Zeitplan festlegen, nach dem die Server den Salt-Master auf Updates überprüfen und diese entsprechend ziehen. Die Konfigurationsmanagement-Architektur von Salt ist somit ereignisgesteuert und selbstheilend, da das System gleichzeitig Updates herausgeben und auf Probleme reagieren kann. Salt kann auch im agentenbasierten oder agentenlosen Modus arbeiten.

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

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

  • Salt-Reaktoren horchen auf Ereignisse, während Agenten eine sichere Shell verwenden, um Befehle auf einem Zielsystem auszuführen.
  • Der Minion, ist ein Agent, der optional auf dem Ziel installiert werden kann, 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 unter anderem bedingte Anweisungen einzufügen und andere Einstellungen in Salt-State- und Pillar-Dateien zu erreichen.

SaltStack Enterprise und Salt Open-Source-Software-Versionen

Die Open-Source-Software Salt ist kostenlos und wird, wie der Name schon sagt, über eine Kommandozeilen (Command Line Interface, CLI) ausgeführt. Die kostenpflichtige Enterprise-Edition, SaltStack Enterprise, bietet zusätzliche Funktionen, darunter eine GUI (Graphic User Interface, Grafische Benutzeroberfläche) und Unterstützung für Windows, macOS und Solaris. Außerdem bietet sie eine auf dem Lightweight Directory Access Protocol (LDAP) basierende – also zentralisierte – Zugriffskontrolle.

SaltStack bietet professionelle Dienstleistungen an, um Kunden bei der Kompatibilität von SaltStack mit Systemen von Drittanbietern zu unterstützen. Anwender können Integrationen auch selbst über eine API programmieren. Die SaltStack-Enterprise-API hat viel mehr Funktionen als die kostenlose Version. SaltStack Enterprise verbessert zum Beispiel die Compliance, indem es Ereignisse in einer Datenbank speichert, um eine nachprüfbare 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 abhängen, aber auch von der Art der Bereitstellung.

Salt ist ereignisgesteuert und modular und stellt sicher, dass die IT-Komponenten unter seiner Kontrolle ihren Zielzustand beibehalten. Es bietet eine Frontend-Analyse-Engine und damit zusätzliche Intelligenz, um auf Ereignisse zu reagieren, auch auf solche aus Drittanbietersoftware. Das System kann in einer mehrstufigen Konfiguration eingerichtet werden, bei der ein Minion andere kontrolliert, um die Redundanz und Load Balancing zu verbessern.

Salt ist in Python geschrieben und verwendet Python, das praktisch auf allen Linux-Systemen bereits installiert ist. Allerdings ist die GUI von SaltStack Enterprise nicht sehr funktionsreich, so dass die meisten Benutzer ihre Aufgaben über die Befehlszeile erledigen.

Außerdem lässt sich keine Reihenfolge festlegen, in der die Zielsysteme überprüft werden sollen. Diese Einschränkung vermindert die Möglichkeit, Abhängigkeiten zwischen Systemen zu programmieren.

Salt versus Ansible, Puppet und Chef

Konkurrierende Konfigurationsmanagement-Produkte nutzen verschiedene Mechanismen, um Konfigurationen und Abhängigkeiten zu spezifizieren. Salt und Red Hat Ansible sind neuer – 2011 beziehungsweise 2012 veröffentlicht – als Puppet, das 2005 auf den Markt kam, und Chef, das 2009 sein Debüt feierte.

Dass Salt ein neueres Tool ist, kann durchaus als Vorteil betrachtet werden, da bei der Entwicklung bereits Probleme aufgenommen wurden, die in den Jahren seit dem Aufkommen von Konfigurationsmanagement-Technologien entstanden sind.

Salt verwendet Python, eine Sprache, die Programmierer wahrscheinlich eher beherrschen als zum Beispiel Ruby, das in vielen anderen vergleichbaren Automatisierungslösungen zum Einsatz kommt. SaltStack kann Skripte verwenden, die direkt in Python geschrieben wurden, und zusätzlich Skripte, die in anderen Sprachen wie YAML oder JSON geschrieben wurden, über den Salt-Renderer PyDSL abbilden. Salt verwendet zwar eine Master-Slave-Architektur mit Agenten, kann aber auch im agentenlosen Modus arbeiten. Puppet und Chef verwenden Agenten.

Salt und Ansible unterstützen beide die Konfiguration von YAML-Code, der leicht zu verstehen ist, weil er von Menschen lesbar ist. Chef verwendet JSON-Konfiguration und die Programmiersprache Ruby. Puppet hat seine eigene deklarative domänenspezifische Sprache für die Konfiguration, die vom Nagios-Konfigurationsdateiformat inspiriert ist. Einige Benutzer berichten, dass Salt und Chef kompliziert zu erlernen sind, ebenso wie Puppet. Dies ist ein Bereich, in dem Ansible versucht, die Benutzer zu überzeugen, da es die einfachste Option für das Konfigurationsmanagement sein will. Ansible erfordert keine Installation von Agenten, was die Komplexität weiter reduziert.

Diese Definition wurde zuletzt im Dezember 2020 aktualisiert

ComputerWeekly.de

Close