Puppet, Salt, Chef & Ansible: Ein Vergleich

Lesezeit: 8 Minuten

Welches ist für Sie geeignet?

Inhaltsverzeichnis

I. Puppet II. SaltStack III. Chef IV. Ansible IV. Fazit

Einführung

Einen einzelnen Server mit der benötigten Software zu konfigurieren ist eine relativ einfache Aufgabe. Wenn jedoch auf zahlreichen Servern die gleiche oder ähnliche Software und Konfigurationen installiert werden müssen, würde dieser Prozess zahlreiche Arbeitsstunden in Anspruch nehmen, was Ihre ohnehin schon knappen Ressourcen aufzehren würde. Ohne eine Form der Automatisierung kann diese Aufgabe fast unüberwindbar werden. Mit Blick auf diese Aufgabe wurden neue Konfigurationsmanagement-Tools entwickelt, um neue Server mit vorgefertigten Konfigurationen und Updates bereitzustellen, die einen reibungsloseren und besser zu verwaltenden Automatisierungsprozess ermöglichen. Um diese Server synchron zu halten und Updates über eine große Anzahl von Hosts in einem Rechenzentrum oder einer Cloud-Umgebung zu verwalten, erfüllen Automatisierungstools wie Puppet, SaltStack, Chef und Ansible diese Anforderungen.

Die Auswahl der richtigen Management-Tools für Ihre Infrastruktur ist eine wichtige Entscheidung. Aus diesem Grund überprüfen wir die verfügbaren Optionen für diese Projekte. Diese Tools bieten sowohl für DevOps als auch für Sysadmins die meisten Vorteile. Wir hoffen, dass diese Informationen Ihnen den richtigen Weg weisen können. Es stimmt zwar, dass alle oben genannten Konfigurationstools diese Aufgaben höchstwahrscheinlich erfüllen werden, aber jedes bietet unterschiedliche Methoden und Rollen, um dieses Ziel zu erreichen. Dieser Artikel soll Ihnen einige der wesentlichen Unterschiede zwischen den einzelnen Softwaremanagement-Plattformen aufzeigen. So können Sie eine fundiertere Entscheidung treffen, da wir versuchen, auf jeden Softwaretitel und seine Vorteile einzugehen und am Ende einen Überblick zu geben

.

Puppet

Puppet ist eines der ältesten und bewährtesten Management-Tools in unserer Liste. Aus diesem Grund bietet es eine breitere Support-Basis innerhalb der Puppet-Community sowie durch das Puppet-Team. Puppet bietet auch eine Open-Source-Version seiner Software an, die auf einer Vielzahl von Betriebssystemen installiert werden kann. Die Unternehmensversion der Software ist jedoch in der Lage, auch größere Systeme wie IBMs AIX oder F5 Big-IP-Hardware zu unterstützen. Zu beachten ist, dass der Puppet-Masterserver nur auf Unix/Linux-Betriebssystemen installiert werden kann.

Eine Puppet-Installation besteht in der Regel aus einem Masterserver und mehreren Client-Rechnern (die als Agenten bezeichnet werden). Puppet ist eines der Tools in dieser Liste, das seine eigene, einzigartige Sprache verwendet, die auf Ruby basiert. Die Puppet DSL (oder Domain Specific Language) wird verwendet, um den gewünschten Zustand Ihres Systems in einer Datei zu beschreiben, die als Manifestdatei bezeichnet wird. Manifestdateien sind im Grunde eine Reihe von Konfigurationen oder Aufgaben, die festlegen, wie Ihre Netzwerk- und Betriebssystemressourcen (wie Dienste, Pakete und Dateien) konfiguriert werden. Puppet kompiliert dann die Manifestdateien zu Katalogen und schiebt jeden Katalog auf den entsprechenden Knoten, so dass der Knoten in den gewünschten Zustand der gesamten Infrastruktur umkonfiguriert wird.

Puppet bietet darüber hinaus eine intuitive und unkomplizierte webbasierte Benutzeroberfläche, mit der eine Vielzahl von Aufgaben, einschließlich der Knotenverwaltung in Echtzeit, erledigt werden kann. Da Puppet in Form einer Multi-Master-Architektur aufgesetzt ist, wird bei einem Ausfall des derzeit aktiven Masters ein anderer Master den vorherigen ersetzen, um eine verminderte Verfügbarkeit zu vermeiden.

Puppet aktualisiert die Konfiguration der Nodes, indem die Clients den Master auf aktualisierte Manifeste prüfen und dann die neuen Konfigurationen vom Master-Server abrufen. Aufgrund dieser Funktion ist Puppet mehr auf den Systemadministrator ausgerichtet als viele der anderen hier genannten Tools. Ein Nachteil von Puppet ist, dass es keine unmittelbare Remote-Ausführung für die Knoten gibt. Außerdem hat Puppet eine steilere Lernkurve aufgrund der erforderlichen Kenntnisse der Puppet-DSL und der Ruby-Programmiersprachen.

Top

SaltStack

SaltStack (auch als Salt bezeichnet) ist eines der neueren Tools in dieser Liste. Es ist jedoch im Bereich des Softwarekonfigurationsmanagements immer noch sehr relevant. Salt hat eine relativ aktive Community und einen effektiven Support. Salt ist so konzipiert, dass es eine Kommunikation mit geringer Latenz und hoher Geschwindigkeit sowie eine Datenübertragung zwischen den Knoten für die Remote-Ausführung ermöglicht. Salt ist für Unix/Linux- und Windows-Betriebssysteme ausgelegt, der Master-Salt-Server kann jedoch nur auf Unix/Linux-Betriebssystemen arbeiten.

SaltStack besteht aus einem Salt-Master, dem zentralen Salt-Server, und Clients, den so genannten Salt Minions, die als Agenten auf jedem der Knotenrechner laufen. Die Beherrschung der Sprache von Salt ist relativ einfach, da die für Menschen lesbaren Konfigurationen Python und YAML-Dateien verwenden, was eine der natürlicheren und einfacheren Datenstrukturen ist. Während Puppet so arbeitet, dass die Nodes die Aktualisierungen anfordern, arbeitet Salt entgegengesetzt dazu. Der Salt-Master überträgt alle Konfigurationen auf alle Client-Rechner. Außerdem dient Salt als asynchroner Dateiserver, was die Geschwindigkeit der Dateiübertragungen für die Salt Minions erhöht. Die Geschwindigkeit des Deployments ist eines der Hauptziele der Salt-Philosophie.

Salt kann auch in einer Multi-Master-Konfiguration laufen. Fällt ein Salt-Masterserver aus, verbinden sich die Agenten mit einem anderen in der Konfiguration aufgeführten Master. Diese Funktion erhöht die Gesamtverfügbarkeit und die Redundanz des Systems als Ganzes. Ein weiterer Vorteil von Salt ist, dass es die parallele Ausführung mehrerer Befehle auf einmal ermöglicht. Diese Befehle werden mit AES (Advanced Encryption Standard) verschlüsselt und über das SSH-Protokoll an die Client-Knoten weitergeleitet. Ein letzter Vorteil von Salt ist, dass es mehrere Master verwalten kann. Salt bietet auch eine Web-UI an, die jedoch nur über begrenzte Möglichkeiten und Funktionen verfügt.

Top

Chef

Chef begann als internes Server-zu-Server-Deployment-Tool, bevor es schließlich 2009 als Open-Source-Software veröffentlicht wurde. Ein wesentlicher Vorteil von Chef ist, dass es auch eine große Support-Community mit umfangreicher Dokumentation und Anleitung bietet. Die Chef Master- und Node-Software funktioniert sowohl auf Unix- als auch auf Linux-Systemen, aber nur die Client- und Workstation-Versionen können auf Windows-Servern eingesetzt werden.

Die Konfigurationsoptionen von Chef bestehen aus Kochbüchern und Rezepten. Die Rezepte sind die Definitionsdateien, die mit Attributen, Dateien, Bibliotheken und anderen Rezepten kombiniert werden können, um Kochbücher zu erstellen. Diese Cookbooks können dann für die Client-Bereitstellung verwendet werden.

Chef besteht aus 3 Hauptkomponenten:

  • Chef Workstation – Die Chef Workstation wird von Systemingenieuren zum Erstellen, Testen und Bereitstellen der Kochbücher auf den Chef Master Servern verwendet.
  • Chef Master Server – Chef Server sind im Wesentlichen die Zentrale, in der alle Chef Konfigurationsdaten gespeichert werden. Diese Informationen umfassen Kochbücher, Serverdaten und andere relevante Informationen.
  • Chef Client – Der Chef Client ist der Endknotenrechner, der von Chef Master Servern verwaltet wird. Diese Server rufen regelmäßig Kochbuchkonfigurationen vom Chef-Masterserver ab und führen sie aus.

Die Programmiersprache von Chef ähnelt der von Puppet, da sie eine DSL (Domain Specific Language) verwendet, die es nur bei Chef gibt, aber sie unterstützt auch in Ruby geschriebene Skripte.

Chef ist in erster Linie als Chef-Masterserver und als Backup-Server für den Fall eingerichtet, dass der zentrale Chef-Masterserver ausfällt. Im Falle eines Ausfalls ersetzt der Backup-Masterserver den zentralen Chef-Masterserver. Auf diese Weise wird Redundanz in die Chef-Umgebung eingebaut. Chef bietet außerdem zusätzliche Cloud- und Infrastruktur-Automatisierung sowie automatisierte Workflows, die für die kontinuierliche Bereitstellung auf den Client-Rechnern verwendet werden. Eine Bedingung, die beachtet werden sollte: Die primäre Sprache begünstigt Programmierer, da sie die Verwendung von DSL/Ruby-orientierten Skripten in den Kochbüchern erfordert. Chef und seine Infrastruktur sind sehr stabil und auf Zuverlässigkeit ausgelegt. Chef bietet außerdem eine sequenzielle Ausführungsreihenfolge, im Gegensatz zu beispielsweise Salt, das eine parallele Ausführung bietet.

Top

Ansible

Ansible ist eines der moderneren Tools, die als Konfigurationsmanagement-Lösung eingesetzt werden. Aufgrund seiner Einfachheit und unkomplizierten Konfiguration ist es wohl eine der beliebtesten Software. Wie die vorangegangenen Tools unterstützt Ansible sowohl Windows- als auch Unix/Linux-Client-Rechner, der Ansible-Masterserver erfordert jedoch einen Unix/Linux-basierten Server.

Im Gegensatz zu den vorherigen Tools ist nur ein Ansible-Master erforderlich, da Ansible die SSH-Protokolle (oder RDP für Windows) verwendet, um eine Verbindung zu den Client-Servern zu öffnen und die sequenziellen Befehle auszuführen. Ansible ähnelt Puppet insofern, als die Ansible-Konfigurationsdateien Python-basiert sind und YAML-Dateien für die strukturierten Daten verwenden. Diese Dateien werden Playbooks genannt. Ansible unterstützt auch eine Python-API, mit der auf bestimmte Ereignisse reagiert werden kann, um die Kontrolle über die Knoten selbst auszuüben. Ansible kann auch über eine Befehlszeilenschnittstelle verwendet werden. Die Verwendung einer CLI-Schnittstelle würde bei einer einfachen Aufgabe wie dem Neustart eines Servers die Verwendung einer Konfigurationsdatei nicht erfordern. Für komplexere Aufgaben ist ein Playbook erforderlich, da der Master-Server die Informationen an die Client-Knoten weitergibt. Ansible eignet sich auch für die Remote-Ausführung von Befehlen oder das Anwendungsmanagement in Echtzeit.

Im Hinblick auf die Redundanz wird Ansible in der Regel als ein einziger aktiver Master-Server (als primäre Instanz bezeichnet) konfiguriert, da keine Agenten erforderlich sind, um sich mit ihm zu verbinden. Ein sekundärer Master kann so konfiguriert werden, dass er übernimmt, wenn der Master-Server ausfällt. Da Ansible einen agentenlosen Ansatz verwendet, kann ein Techniker Änderungen oder Aktualisierungen relativ schnell auf allen Knoten bereitstellen. Ein Nachteil von Ansible ist, dass die Client-Computer nicht auf regelmäßige Konfigurationsänderungen auf dem primären Master-Server prüfen.

Top

Schlussfolgerung

Ein Konfigurationsmanager bietet, vereinfacht ausgedrückt, eine Abstraktionsschicht zwischen der bestehenden Konfiguration eines Servers und seinem gewünschten Zustand. Dieses Ziel wird erreicht, indem man sich mehr auf ein bestimmtes Ergebnis konzentriert als auf die langwierigen Aufgaben, die zu ihrer Erreichung nötig sind.

Bei der Betrachtung dieser vier Produkte ist Ansible der eindeutige Sieger, wenn man nur nach der Beliebtheit geht. Das liegt daran, dass eine viel größere Gruppe von Administratoren Ansible als ihr primäres Konfigurationsmanagement-Tool verwendet als die anderen Produkte in diesem Artikel. Ansible hat seine Vorteile, da es in Bezug auf seine Struktur und sein Paradigma eher auf eine SysOps-orientierte Rolle ausgerichtet ist. Salt ist in dieser Hinsicht ähnlich, unterscheidet sich aber von Puppet und Chef, da sie eher auf Entwickler ausgerichtet sind. Darüber hinaus ist Ansible eine der einfacheren Optionen in dieser Liste, um es einzurichten, zu konfigurieren und sofort zu verwenden.

Puppet hingegen ist diejenige, die vom Standpunkt der Benutzerfreundlichkeit am zugänglichsten und zuverlässigsten ist. Allerdings sind, wie bereits erwähnt, Ruby-Kenntnisse erforderlich, um die zahlreichen Funktionen, die Struktur und die Skalierbarkeit von Puppet voll nutzen zu können. Die Konfiguration von Puppet kann sehr granular und manchmal kompliziert werden, aber es ist die sicherste Lösung, wenn Sie eine nicht-heterogene Softwareumgebung suchen.

Wenn Sie ein Konfigurationswerkzeug suchen, das auf eine einheitlichere Infrastruktur ausgerichtet ist, sind Ansible und Salt für dieses Ziel besser geeignet. Salt ist an sich eines der zuverlässigeren und robusteren Tools auf dieser Liste, wird aber aufgrund der für Anfänger schwer verständlichen Web-UI und der tiefer gehenden Konfigurationsoptionen einen Punktabzug erhalten. Dies wird jedoch durch die fortschrittlichen Skalierungsoptionen und die aus Sicht von SysOps oder Administratoren leicht zugängliche Arbeitsumgebung wettgemacht. Es sind auch mehrere Addons verfügbar, die die Fähigkeiten der Benutzeroberfläche verbessern und erweitern, was die Benutzerfreundlichkeit und Funktionalität erhöht.

Chef ist an und für sich ein sehr einfaches und gut gestaltetes Tool. Es bietet einen verbesserten Ansatz für einen einfachen Zugang und ein höheres Maß an Praktikabilität als Puppet. Wie bereits erwähnt, kann Chef eine beachtliche Lernkurve für SysOps oder Systemadministratoren darstellen, denen es an entwicklungsorientierter Erfahrung mangelt, da es ein breiteres Verständnis von Programmiersprachen und Erfahrung erfordert.

Zusammenfassend lässt sich sagen, dass Ansible aufgrund der verfügbaren Dokumentation, der Struktur und der einfachen Zugänglichkeit eine unkomplizierte Wahl für den Einstieg in das Konfigurationsmanagement ist. Puppet ist ebenfalls ein solides Tool, aber ein Benutzer oder ein Team muss neue Kodierungsverfahren und Funktionen erlernen, um die steilere Lernkurve bei der Verwendung der DSL-Programmierung (Domain Specific Language) zu überwinden. Was die Benutzerfreundlichkeit, die Skalierbarkeit und die Optionen für mehrere Umgebungen angeht, wird Salt vor allem Systemadministratoren ansprechen, die die vielen Optionen und die sehr ansprechenden Skalierungsmöglichkeiten nutzen möchten. Chef hat ein gut durchdachtes Layout und eine gute Struktur und bietet ein hohes Maß an Stabilität. Die Lernkurve kann anfangs etwas schwierig sein, da sie eher auf die Fähigkeiten eines Programmierers ausgerichtet ist. Alle diese Tools erfüllen bestimmte Aufgaben bei der Konfiguration Ihrer Infrastruktur und ihrer gewünschten Zustände. Ihr Einsatz hängt ganz von Ihrem Konfigurationsbedarf, dem persönlichen Support und dem erforderlichen Komfort bei der Implementierung ab.

Top

Wir würden uns freuen, wenn Sie bei uns mitmachen!

Rufen Sie uns unter 800.580.4985 an, oder öffnen Sie einen Chat oder ein Ticket mit uns, um mit einem unserer sachkundigen Berater für Lösungen oder erfahrenes Hosting zu sprechen und zu erfahren, wie Sie diese Techniken noch heute nutzen können!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.