SaltStack - Übersicht
In diesem Kapitel lernen wir die Grundlagen von SaltStack kennen. Mit den Remote-Ausführungsfunktionen von SaltStack können Administratoren Befehle auf verschiedenen Computern parallel zu einem flexiblen Zielsystem ausführen. Das Salt-Konfigurationsmanagement erstellt ein Master-Minion-Modell, mit dem Infrastrukturkomponenten schnell, sehr einfach, flexibel und sicher an eine bestimmte Richtlinie angepasst werden können.
Was ist SaltStack?
Salt ist ein sehr leistungsfähiges Automatisierungsframework. Die Salt-Architektur basiert auf der Idee, Befehle remote auszuführen. Alle Netzwerke basieren auf bestimmten Aspekten der Remote-Ausführung. Dies könnte so einfach sein wie das Fragen aRemote Web ServerAnzeigen einer statischen Webseite oder so komplex wie die Verwendung einer Shell-Sitzung zum interaktiven Ausgeben von Befehlen für einen Remoteserver. Salt ist ein Beispiel für eine der komplexeren Arten der Remote-Ausführung.
Salt wurde entwickelt, um Benutzern das explizite Targeting und direkte Ausgeben von Befehlen an mehrere Computer zu ermöglichen. Salz basiert auf der Idee eines Meisters, der einen oder mehrere kontrolliertMinions. Befehle werden normalerweise vom Master an eine Zielgruppe von Minions ausgegeben, die dann die in den Befehlen angegebenen Aufgaben ausführen und die resultierenden Daten an den Master zurückgeben. Die Kommunikation zwischen einem Meister und Schergen erfolgt über dieZeroMQ message bus.
SaltStack-Module kommunizieren mit den unterstützten Minion-Betriebssystemen. DasSalt MasterLäuft standardmäßig unter Linux, aber jedes Betriebssystem kann ein Minion sein, und derzeit werden Windows-, VMware vSphere- und BSD Unix-Varianten gut unterstützt. Der Salzmeister und die Schergen benutzen Schlüssel, um zu kommunizieren. Wenn ein Diener zum ersten Mal eine Verbindung zu einem Master herstellt, speichert er automatisch Schlüssel auf dem Master. SaltStack bietet auchSalt SSH, die ein Systemmanagement ohne Agenten bietet.
Notwendigkeit für SaltStack
SaltStack ist auf Geschwindigkeit und Skalierbarkeit ausgelegt. Aus diesem Grund werden damit große Infrastrukturen mit Zehntausenden von Servern bei LinkedIn, WikiMedia und Google verwaltet.
Stellen Sie sich vor, Sie haben mehrere Server und möchten diesen Servern etwas antun. Sie müssten sich bei jedem anmelden und diese Dinge einzeln ausführen, und dann möchten Sie möglicherweise komplizierte Dinge tun, z. B. Software installieren und diese Software dann anhand bestimmter Kriterien konfigurieren.
Nehmen wir an, Sie haben zehn oder vielleicht sogar 100 Server. Stellen Sie sich vor, Sie melden sich einzeln bei jedem Server einzeln an, geben dieselben Befehle auf diesen 100 Computern aus und bearbeiten dann die Konfigurationsdateien auf allen 100 Computern. Dies wird zu einer sehr mühsamen Aufgabe. Um diese Probleme zu lösen, würden Sie gerne alle Ihre Server gleichzeitig aktualisieren, indem Sie nur einen einzigen Befehl eingeben. SaltStack bietet Ihnen genau die Lösung für all diese Probleme.
Funktionen von SaltStack
SaltStack ist eine Open-Source-Konfigurationsverwaltungssoftware und eine Remote-Ausführungs-Engine. Salt ist ein Befehlszeilenprogramm. Das in Python geschriebene SaltStack-Konfigurationsmanagement ist sprachunabhängig und einfach. Die Salt-Plattform verwendet das Push-Modell zum Ausführen von Befehlen über das SSH-Protokoll. Das Standardkonfigurationssystem istYAML und Jinja templates. Salz konkurriert hauptsächlich mitPuppet, Chef und Ansible.
Salt bietet im Vergleich zu anderen konkurrierenden Tools viele Funktionen. Einige dieser wichtigen Funktionen sind unten aufgeführt.
Fault tolerance- Salt Minions können gleichzeitig eine Verbindung zu mehreren Mastern herstellen, indem sie den Master-Konfigurationsparameter als YAML-Liste aller verfügbaren Master konfigurieren. Jeder Master kann Befehle an die Salt-Infrastruktur weiterleiten.
Flexible- Der gesamte Managementansatz von Salt ist sehr flexibel. Es kann implementiert werden, um den gängigsten Systemverwaltungsmodellen wie Agent und Server, Nur Agent, Nur Server oder allen oben genannten in derselben Umgebung zu folgen.
Scalable Configuration Management - SaltStack ist für zehntausend Schergen pro Meister ausgelegt.
Parallel Execution model - Salt kann es Befehlen ermöglichen, entfernte Systeme parallel auszuführen.
Python API - Salt bietet eine einfache Programmierschnittstelle und wurde modular und leicht erweiterbar konzipiert, um das Formen an verschiedene Anwendungen zu erleichtern.
Easy to Setup - Salt ist einfach einzurichten und bietet eine einzige Remote-Ausführungsarchitektur, die die unterschiedlichen Anforderungen einer beliebigen Anzahl von Servern verwalten kann.
Language Agnostic - Salt-State-Konfigurationsdateien, Template-Engine oder Dateityp unterstützen jede Art von Sprache.
Vorteile von SaltStack
Salt ist sowohl einfach als auch ein funktionsreiches System. Es bietet viele Vorteile und kann wie folgt zusammengefasst werden:
Robust - Salt ist ein leistungsstarkes und robustes Konfigurationsmanagement-Framework und funktioniert mit Zehntausenden von Systemen.
Authentication - Salt verwaltet einfache SSH-Schlüsselpaare zur Authentifizierung.
Secure - Salt verwaltet sichere Daten mithilfe eines verschlüsselten Protokolls.
Fast - Salt ist ein sehr schneller und leichter Kommunikationsbus, der die Grundlage für eine Remote Execution Engine bildet.
Virtual Machine Automation - Die Salt Virt Cloud Controller-Funktion wird für die Automatisierung verwendet.
Infrastructure as data, not code - Salt bietet eine einfache Bereitstellung, ein modellgesteuertes Konfigurationsmanagement und ein Framework für die Befehlsausführung.
Einführung in ZeroMQ
Salt basiert auf dem ZeroMQBibliothek und es ist eine einbettbare Netzwerkbibliothek. Es ist leicht und eine schnelle Messaging-Bibliothek. Die grundlegende Implementierung ist inC/C++ und native Implementierungen für mehrere Sprachen, einschließlich Java und .Net ist verfügbar.
ZeroMQ ist eine maklerlose Peer-Peer-Nachrichtenverarbeitung. Mit ZeroMQ können Sie ganz einfach ein komplexes Kommunikationssystem entwerfen.
ZeroMQ enthält die folgenden fünf Grundmuster:
Synchronous Request/Response - Wird zum Senden einer Anfrage und zum Empfangen nachfolgender Antworten für jede gesendete Anfrage verwendet.
Asynchronous Request/Response- Der Anforderer initiiert die Konversation durch Senden einer Anforderungsnachricht und wartet auf eine Antwortnachricht. Der Anbieter wartet auf die eingehenden Anforderungsnachrichten und antwortet mit den Antwortnachrichten.
Publish/Subscribe - Wird zum Verteilen von Daten von einem einzelnen Prozess (z. B. Herausgeber) an mehrere Empfänger (z. B. Abonnenten) verwendet.
Push/Pull - Wird zum Verteilen von Daten an verbundene Knoten verwendet.
Exclusive Pair - Wird verwendet, um zwei Peers miteinander zu verbinden und ein Paar zu bilden.
ZeroMQ ist ein hochflexibles Netzwerkwerkzeug für den Austausch von Nachrichten zwischen Clustern, Clouds und anderen Umgebungen mit mehreren Systemen. ZeroMQ ist dasdefault transport library präsentiert in SaltStack.