Überblick
Ansible und Puppet sind auf Open Source basierende IT-Automatisierungstools der Community. Mit beiden Tools können Sie den IT-Betrieb und die Arbeit Ihrer DevOps-Teams durch die Automatisierung von Routineaufgaben vereinfachen, beispielsweise die Konfiguration und Provisionierung von Systemen, Software-Deployments sowie die Verwaltung von Updates für eine große Zahl von Servern oder Endgeräten.
Ansible ist für seine Nutzerfreundlichkeit bekannt, die sich durch den flexibleren agentenlosen Ansatz ergibt, bei dem die Installation von zusätzlicher Software auf den zu automatisierenden Zielen entfällt. Im Vergleich dazu favorisieren Puppet und Puppet Enterprise, die auf Open Source basieren, traditionell einen agentenbasierten Ansatz, bei dem zusätzliche Software auf den einzelnen Maschinen installiert werden muss. Ansible und Puppet verwenden unterschiedliche Automatisierungsansätze. Ansible nutzt eine für Menschen lesbare Sprache für Konfigurationsdateien und die prozedurale Automatisierung, bei der die einzelnen auszuführenden Schritte definiert werden. Puppet dagegen nutzt eine domainspezifische Sprache, was Kenntnisse in der Programmiersprache Ruby erforderlich macht. Außerdem wird deklarative Automatisierung eingesetzt, d. h. der gewünschte Zustand wird definiert.
In diesem Artikel werden die Ähnlichkeiten und Unterschiede von Ansible und Puppet im Detail erklärt.
Unterstützte Versionen gängiger IT-Automatisierungstools
Wie fügen sich Ansible und Puppet in die Bandbreite der IT-Automatisierungstools ein? Ansible, Puppet, Salt und Chef gehören zu den meistgenutzten Open-Source-IT-Automatisierungstools. Alle vier sind jeweils als Enterprise-Version verfügbar, die von verschiedenen Unternehmen verkauft werden:
- Red Hat® Ansible® Automation Platform wird von Red Hat unterstützt.
- Puppet Enterprise, Puppet Bolt und andere Produkte werden von Perforce unterstützt.
- VMware Aria Automation (Salt) wird von VMware unterstützt.
- Chef Enterprise Automation Stack wird von Progress unterstützt.
Red Hat Ressourcen
Unterschiede im IT-Automatisierungsansatz von Ansible und Puppet
Ansible
Ansible ist eine auf Open Source basierende, in Python geschriebene Befehlszeilen-Software für die IT-Automatisierung. Damit können Sie Systeme konfigurieren, Software bereitstellen und fortschrittliche Workflows orchestrieren, wodurch Aufgaben wie Anwendungs-Deployments und Systemupdates unterstützt werden. Red Hat Ansible Automation Platform ist ein Subskriptionsprodukt, das auf Ansible aufbaut und zahlreiche Features für Unternehmen umfasst.
Die Stärke von Ansible liegt in seiner Community. Sein zentrales GitHub-Repository zieht Tausende von Mitwirkenden an, und Zehntausende von Repositories beruhen darauf (Stand: Herbst 2022). Mit AnsibleFest findet jährlich eine beliebte Konferenz für Nutzende statt, und auf der ganzen Welt werden regelmäßig Ansible Meetups organisiert. In dieser engagierten Community findet sich ein enormes Fachwissen zu Ansible, und die Mitwirkenden sorgen dafür, dass Ansible dauerhaft in andere beliebte Softwareprojekte integriert bleibt. Nutzerinnen und Nutzer von Ansible können auf Hunderte von Modulen und Plugins zugreifen und so die Möglichkeiten dieser Lösung erweitern.
Ansible wurde mit Fokus auf Einfachheit und Nutzungsfreundlichkeit konzipiert. Da Sicherheit und Zuverlässigkeit im Vordergrund stehen, gibt es nur eine minimale Anzahl an beweglichen Teilen. Der Transport findet über OpenSSH statt, wobei andere Transport- und Abrufalternativen verfügbar sind. Außerdem wird die für Menschen lesbare Sprache YAML in Ansible Playbooks verwendet, die den Einstieg auch ohne umfassendes Training erleichtert.
Ansible nutzt einen Kontrollknoten, von dem aus Ansible ausgeführt wird, sowie gemanagte Knoten, also die zu automatisierenden Endpunkte. Letztere können Linux®-Server, Windows-Server, Netzwerkgeräte und viele andere Bare Metal-, virtuelle, Public Cloud- und containerisierte Plattformen umfassen. Da Ansible agentenlos ist, kann es mit einer Vielzahl an Endgeräten kommunizieren, ohne dass eine Anwendung oder ein Service auf dem gemanagten Knoten installiert werden muss. Beispielsweise sind viele Netzwerk-Switches und Router geschlossene Systeme, bei denen die Installation von Software-Agents oft nicht möglich ist.
Ansible hingegen verwendet einen prozeduralen (oder imperativen) Programmieransatz. Dabei wird versucht, die Konfiguration einer IT-Infrastruktur beizubehalten, indem die Schritte zum Erreichen eines gewünschten Zustands definiert werden.
Puppet
Puppet ist eine auf Open Source basierende IT-Automatisierungsanwendung, die in Ruby geschrieben ist und im Rahmen eines größeren Produktportfolios angeboten wird, darunter Puppet Enterprise. Der Hauptvorteil von Puppet ist seine Skalierbarkeit. Puppet wendet einen modellgesteuerten Ansatz mit imperativer Aufgabenausführung an und ist darauf ausgelegt, Hybrid-Infrastrukturen in großem Umfang zu automatisieren.
Puppet verfügt über eine aktive Open Source Community, aber mit weniger Mitwirkenden und weniger darauf basierenden Projekten als Ansible (laut GitHub-Insights von Herbst 2022). Die Beiträge zu seinem Haupt-Repository sind deutlich zurückgegangen.
Puppet ist außerdem für eine andere Funktionsweise als Ansible konzipiert. Das Tool wird üblicherweise als agentenbasierte Lösung ausgeführt, weswegen auf den von ihm gemanagten Geräten Software erforderlich ist. Es verfügt aber auch über agentenlose Funktionen.
Puppet folgt einem deklarativen Programmieransatz, bei dem der gewünschte Zustand der gemanagten Maschinen von den Nutzenden definiert wird. Für die Definition dieser Konfigurationen wird eine domainspezifische Sprache (Domain-Specific Language, DSL) verwendet. Anschließend automatisiert Puppet die Schritte, die erforderlich sind, damit die Systeme die jeweils für sie definierten Zustände erreichen. Für die Automatisierung nutzt Puppet einen primären Server, in dem die definierten Zustände gespeichert werden, sowie einen Puppet-Agent, der auf den von Ihnen festgelegten System ausgeführt wird.
Wichtige Automatisierungsbegriffe
Agentenbasierte Architektur bezeichnet ein Infrastruktur- und Automatisierungsmodell, bei dem bestimmte Softwarekomponenten, sogenannte Agents, auf dem gemanagten Inventory ausgeführt werden müssen. Der Agent und seine Abhängigkeiten müssen dabei auf den einzelnen Zielknoten installiert sein, wodurch zusätzliche Sicherheitsprüfungen und -regeln erforderlich werden. Dies kann zu einem Problem werden, wenn Objekte automatisiert werden müssen, auf denen der Agent nicht verfügbar ist oder nicht ausgeführt werden darf. Außerdem erfordert dieser Ansatz, dass Agents im Rahmen des Support-Lifecycles für Organisationen mitgewartet werden müssen.
Die von Ansible verwendete agentenlose Architektur ist eine Methode zur Automatisierung und Verwaltung von IT-Geräten, bei der keine Agent-Software in den gemanagten Umgebungen installiert werden muss. Die Kontrollsoftware stellt über Standard- und sichere SSH-Verbindungen eine Verbindung zu Remote-Maschinen her und kann diese anschließend sofort managen – ohne einen langwierigen Einrichtungsprozess. Bei dieser Architektur wird das Deployment-System von Agents überflüssig, sobald Provisionierung und Konfiguration abgeschlossen sind.
Die deklarative Programmierung bezeichnet eine Methode zum Schreiben von Code, bei der das gewünschte Ergebnis des Programms definiert wird, anstatt im Detail zu beschreiben, wie dieses erreicht werden soll. Sie konzentriert sich auf den in einer deklarativen Sprache definierten Endstatus statt auf die konkreten Befehle und Schritte, die erforderlich sind, um dorthin zu gelangen.
Die prozedurale oder imperative Programmierung bezeichnet eine Methode zum Schreiben von Code, bei der ein Computer zum Ausführen einer Aufgabe eine Liste mit Anweisungen erhält – eine Schritt-für-Schritt-Anleitung. Diese Methode konzentriert sich auf den Prozess anstatt auf den Endzustand. Ansible verwendet für die Automatisierung YAML, eine für Menschen lesbare Sprache zur Datenserialisierung. Die YAML-Syntax wird prozedural interpretiert und ausgeführt, d. h. der Automatisierungsworkflow wird in der Reihenfolge ausgeführt, in der er geschrieben wurde.
Welche Automatisierungslösung ist die bessere?
Bei der Wahl einer Automatisierungslösung sollten Sie nicht nur die in einer aktuellen Softwareversion verfügbaren Features berücksichtigen, sondern die langfristige Ausrichtung der Plattform. Ansible zeichnet sich durch seine sehr aktive Open Source Community und die kommerzielle Unterstützung von Red Hat aus.
Es ist auch nicht ungewöhnlich, dass Organisationen mehrere Automatisierungslösungen einsetzen. Ansible ist mit einem großen IT-Ökosystem von Integrationen verbunden und kann zusammen mit vielen anderen Managementtools für Automatisierungen und Konfigurationen verwendet werden – als Orchestrator der Automatisierungstools. Mit Ansible lassen sich Systeme in Public Cloud-Hyperscaler wie Amazon Web Services (AWS), Microsoft Azureund Google Cloud Platform automatisieren – um nur einige zu nennen.
Im Vergleich zu Puppet wird Ansible von Nutzenden bevorzugt, die damit ihr vorhandenes Wissen und Know-how nutzen können und für die Nutzerfreundlichkeit und eine agentenlose Automatisierungslösung Priorität haben. Ansible profitiert außerdem von einer großen Community an Mitwirkenden, wird weit verbreitet eingesetzt und für seine Integrationsfähigkeit mit anderen Tools sehr geschätzt.
Red Hat macht den Unterschied
Red Hat Ansible Automation Platform ist ein sicherheitsgehärtetesund getestetes, kostenpflichtiges Subskriptionsprodukt, bei dem Open Source im Mittelpunkt steht und das Unternehmen umfassenden Lifecycle Support bietet. Sein Upstream-Projekt „Ansible“ profitiert von der Erfahrung und dem Fachwissen Tausender Mitwirkender weltweit.
Ansible Automation Platform umfasst zahlreiche Upstream-Komponenten, darunter mehr als 130 Red Hat Ansible Certified Content Collections von mehr als 60 Partnern und ROI-Tools (Return on Investment), die Unsicherheiten bei der Installation, Konfiguration und Unterstützung der Automatisierung in Ihrem Unternehmen beseitigen. Außerdem schafft es ein durchgängiges Automatisierungserlebnis für funktionsübergreifende Teams und bietet ein Plug-and-play-Erlebnis für Automatisierungsentwicklungs-, Engineering- und Operations-Teams.
Die Funktionen von Red Hat Ansible Automation Platform, wie Automation Analytics und Red Hat Insights, liefern leicht zugängliche Informationen über die Performance Ihrer Automatisierung. So können Sie die Auswirkungen der Automatisierung analysieren und Probleme mit größerer Präzision überwachen oder lösen. Mit Automatisierungs-Mesh können Sie die Steuerungs- und Ausführungskapazitäten unabhängig voneinander skalieren und die Automatisierung näher an denjenigen Endpunkten bereitstellen, die sie auch benötigen – und das mit geringen oder keinen Ausfallzeiten. Dadurch sorgen Sie für ein konsistentes Automatisierungserlebnis für Ihre Rechenzentren, Clouds und Edge-Standorte.
Als agentenlose, nutzungsfreundliche Wahl für die IT-Automatisierung steht Ansible an der Spitze des Wettbewerbs und besticht dabei durch Einfachheit und seine starke Community von Nutzerinnen und Nutzern.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.