Überblick
Ansible® und Hashicorp Terraform sind 2 Open Source-Tools, die einen IaC-Ansatz (Infrastructure as Code) zur Automatisierung von IT-Umgebungen verfolgen. Beide Tools sind für die Verwaltung der IT-Infrastruktur unerlässlich, erfüllen jedoch unterschiedliche, spezialisierte Aufgaben innerhalb des Automatisierungs-Lifecycles.
Terraform ist ein spezielles IaC-Tool, das entwickelt wurde, um Infrastruktur sicher und wiederholbar zu erstellen, zu ändern und zu verwalten. Ansible ist eine vielseitige IT-Automatisierungs-Engine für die Konfiguration von Systemen, die Bereitstellung von Software und die Orchestrierung komplexer Aufgaben über Server, Netzwerkgeräte, Sicherheitstools und hybride Umgebungen hinweg. Die effektivsten modernen Automatisierungsstrategien nutzen Terraform und Ansible gemeinsam für ein umfassendes Management des Infrastruktur-Lifecycles.
Große Unternehmen wechseln häufig von Open Source Ansible zu Red Hat® Ansible Automation Platform, um Automatisierungsmaßnahmen zu verwalten und zu skalieren. Ansible Automation Platform bietet zusätzliche Funktionen für Unternehmen, wie zentralisierte Governance, Automation Analytics und offiziellen Support. Durch das Verständnis der Rolle von Terraform bei der Provisionierung von Infrastruktur und der Konfigurationsfunktionen von Ansible – sowie von Ansible Automation Platform für die Skalierung der Automatisierung – können Teams eine umfassende Automatisierungsstrategie entwickeln.
Was ist IaC (Infrastructure as Code)?
Die Provisionierung neuer IT-Umgebungen war früher zeitaufwendig, teuer und erfolgte manuell. Da Virtualisierung, Container und Cloud Computing zu immer mehr und immer häufigeren Infrastrukturänderungen führten, wurde es unhaltbar, sich auf manuelle Prozesse zu verlassen.
An dieser Stelle kam IaC ins Spiel.
IaC ist der Prozess der Verwaltung und Provisionierung von IT-Infrastruktur durch maschinenlesbaren Code anstelle von manueller Konfiguration oder Hardware-Manipulation.
Die Einführung von IaC verändert die Beziehung zwischen Entwicklungs- und Operations-Teams grundlegend. Anstatt auf Schaltflächen in einer Cloud-Konsole zu klicken oder sich auf Ad-hoc-Skripte zu verlassen, erstellen Sie Konfigurationsdateien mit vollständigen Infrastrukturspezifikationen. So können Sie jedes Mal konsistent dieselbe Umgebung bereitstellen, unabhängig davon, ob das Deployment in der Entwicklungs-, Staging- oder Produktivumgebung erfolgt. Durch die Kodifizierung und Dokumentation Ihrer Infrastruktur in Dateien, die Sie bearbeiten, verteilen und unter Versionskontrolle stellen können, hilft IaC dabei, Fehler zu vermeiden, Deployments zu beschleunigen und undokumentierte Änderungen zu verhindern, die zu Konfigurationsdrift führen.
IaC ist die Basis moderner DevOps- und Cloud-Strategien. Da diese Methodik die Infrastruktur durch automatisch ausgeführten Code definiert, benötigen Sie spezielle Tools, um diese Dateien in eine funktionierende Infrastruktur zu übertragen. Ansible, Red Hat Ansible Automation Platform und Terraform helfen dabei, IaC zu beschleunigen und optimal zu nutzen: Terraform ist auf die Erstellung der Infrastruktur spezialisiert, während Ansible sich auf die Konfiguration der darin ausgeführten Prozesse konzentriert.
Red Hat Ressourcen
Welche Gemeinsamkeiten bestehen zwischen Ansible und Terraform?
Trotz ihrer Spezialisierung auf unterschiedliche Bereiche des Automatisierungs-Lifecycles weisen Terraform und Ansible wichtige Gemeinsamkeiten auf, die ihren Erfolg ausmachen.
Agentenloses Design
Ansible und Terraform verfügen beide über eine moderne, vereinfachte Architektur, die einfacher auszuführen ist als ältere Automatisierungssysteme. Da sie agentenlos sind, müssen Sie keine spezielle Software oder persistente Agenten auf Servern oder Ressourcen installieren, die sie verwalten. Dies erleichtert die Einrichtung erheblich. Terraform kommuniziert in erster Linie über APIs (Application Programming Interfaces) von Cloud-Anbietern, während Ansible Aufgaben mithilfe von Standardprotokollen wie SSH (Secure Shell) und APIs ausführt, um mit verwalteten Knoten zu kommunizieren.
Open Source und Community-Netzwerk
Sowohl Ansible als auch Terraform sind grundlegende Open Source-Projekte mit einer großen Anzahl aktiver Nutzender. Dieses Community-Netzwerk bietet umfangreiche Libraries mit gebrauchsfertigen Inhalten. Mit Tausenden von Anbietern kann Terraform mit nahezu jeder Public Cloud und Plattform verbunden werden. Außerdem bietet Ansible Module und Playbooks für fast jede Konfigurationsaufgabe. So können Teams, die eines der beiden Tools verwenden, schnell Lösungen finden und Peer-Support erhalten.
Ergänzende Automatisierungsphilosophie
Beide Tools verfolgen letztendlich das Ziel, Infrastruktur zu automatisieren. Obwohl sie spezialisiert sind, gibt es funktionale Überschneidungen: Ansible kann beispielsweise die Provisionierung übernehmen, während Terraform grundlegende Konfigurationsskripte ausführt. Das bedeutet, dass beide dasselbe Ziel haben: manuelle, fehleranfällige IT-Prozesse in wiederholbaren, konsistenten Code umzuwandeln. Dank dieses gemeinsamen Ziels können Sie Ansible und Terraform kombinieren, um Ihren gesamten Workflow zu automatisieren.
Automatisieren von Anwendungs-Deployments, Optimieren der Infrastruktur und Support kontinuierlicher Updates sowie Fehlerbehebung mit Ansible und Terraform. Dauer des Videos: 2:46.
Welche Unterschiede bestehen zwischen Ansible und Terraform?
Beide Tools sind IaC-Typen, aber zur Erfüllung ihrer Hauptaufgaben unterschiedlich aufgebaut. Die Kenntnis dieser Unterschiede hilft Ihnen dabei, die richtigen Tools für eine Aufgabe auszuwählen oder zu entscheiden, wie Sie diese integrieren.
Deklarativ im Vergleich zu prozedural
Der wichtigste Unterschied besteht darin, wie Sie dem jeweiligen Tool seine Aufgaben zuweisen:
- Terraform verwendet HashiCorp Configuration Language (HCL), eine deklarative Konfigurationssprache. Deklarativ bedeutet, dass Sie den gewünschten Endzustand definieren, also wie die Infrastruktur aussehen soll. Die Engine von Terraform ermittelt dann automatisch die erforderlichen Schritte, um diesen Zustand zu erreichen, und verwaltet alle Abhängigkeiten für Sie.
- Ansible verfolgt einen überwiegend prozeduralen (oder imperativen) Automatisierungsansatz. Es verwendet Playbooks, die für Menschen lesbar in YAML geschrieben sind. Der prozedurale Ansatz bedeutet, dass Sie explizite Schritt-für-Schritt-Anweisungen dafür definieren, wie das gewünschte Ergebnis erreicht werden soll. Mit dieser aufgabenbasierten Methode können Sie die Fehlerbehebung präzise steuern und vereinfachen, da die Reihenfolge der Ausführung klar ist. Viele zugrunde liegende Ansible-Module agieren jedoch auch deklarativ und nehmen nur dann Änderungen vor, wenn das Zielsystem noch nicht den gewünschten Konfigurationsstatus aufweist.
Zustandsbehaftet im Vergleich zu zustandslos
Dieser Unterschied wirkt sich darauf aus, wie das jeweilige Tool die Infrastruktur im Zeitverlauf anzeigt und nachverfolgt:
- Terraform ist zustandsbehaftet. Es verwaltet eine Statusdatei, die als Single Source of Truth dient und jede von ihm bereitgestellte Infrastrukturressource sowie deren aktuelle Konfiguration nachverfolgt. Die Statusdatei ist unverzichtbar, da sie Terraform die Verwaltung des gesamten Lebenszyklus einer Ressource ermöglicht, sodass Ressourcen zuverlässig bereitgestellt, skaliert oder stillgelegt werden können, wenn sie nicht mehr benötigt werden.
- Ansible ist weitgehend zustandslos. Es verwaltet keine permanente Statusdatei, die die gesamte Infrastruktur nachverfolgt. Stattdessen stützt es sich auf Idempotenz, also die Garantie, dass die mehrmalige Ausführung derselben Aufgabe ohne unnötige Änderungen zum gleichen Ergebnis führt. Ansible erreicht die gewünschte Konfiguration, indem es vor einer Änderung das Zielsystem direkt abfragt.
Unveränderlich im Vergleich zu veränderlich
Die Tools basieren auf unterschiedlichen Philosophien für die Handhabung von Infrastrukturaktualisierungen:
- Terraform bevorzugt unveränderliche – oder unveränderbare – Infrastruktur. Wenn Sie eine wesentliche Änderung oder Aktualisierung vornehmen müssen, empfiehlt Terraform häufig, die alte Ressource zu entfernen und durch eine neue, korrekt konfigurierte Ressource zu ersetzen. Diese Strategie reduziert das Risiko komplexer Konfigurationsfehler, die sich im Laufe der Zeit häufen können.
- Ansible wurde für veränderliche Infrastrukturen entwickelt, daher eignet es sich hervorragend für Änderungen an bestehenden, laufenden Systemen vor Ort. Dies ist für Day 1- und Day 2-Aufgaben erforderlich, wie das Anwenden von Sicherheits-Patches, das Ausführen von Betriebssystem-Updates oder das Anpassen von Firewall-Einstellungen auf einem Server, der nicht einfach ausgetauscht werden kann.
Konfigurationsdrift
Konfigurationsdrift liegt vor, wenn die in der Produktion ausgeführte Infrastruktur von den Vorgaben im Quellcode abweicht. Beide Tools gehen dieses Problem an, jedoch auf unterschiedliche Weise:
- Terraform nutzt seine persistente Statusdatei, um Drift aktiv zu erkennen. Es kann die aktuell ausgeführte Infrastruktur mit der Statusdatei vergleichen und Abweichungen sofort kennzeichnen.
- Ansible mindert Drift in der Regel, indem es kontinuierlich ausgeführt wird und sich auf idempotente Aufgaben stützt, um jederzeit die gewünschte Konfiguration sicherzustellen. So wird verhindert, dass das System zu weit vom erwarteten Zustand abweicht.
Gemeinsame Verwendung von Ansible und Terraform
Die wichtigste Erkenntnis aus dem Vergleich von Terraform und Ansible ist, dass sie am besten zusammen verwendet werden, anstatt sich nur für ein Tool zu entscheiden. Durch Nutzung der Stärken der beiden Tools können Unternehmen eine vollständige End-to-End-Automatisierung erreichen – vom Zeitpunkt der Provisionierung der Infrastruktur bis hin zum laufenden Deployment und zur Konfiguration von Anwendungen.
Lifecycle Management
Die am weitesten verbreitete Praxis ist die einfache, sequenzielle Übergabe zwischen den Tools. Terraform übernimmt die Day 0-Provisionierung und erstellt Cloud-Infrastrukturen wie Server und Netzwerke. Sobald die Infrastruktur erfolgreich bereitgestellt ist, übernimmt Ansible die Konfiguration für Day 1, wendet Sicherheitsrichtlinien an, installiert die erforderliche Software und stellt den Anwendungscode in den neuen Ressourcen bereit. Ansible übernimmt auch Day 2-Operationen wie Patches, Updates und Konfigurationsänderungen.
Orchestrierung mit Ansible
Bei komplexen Workflows kann Ansible Automation Platform als zentraler Orchestrator dienen und die Ausführung von Terraform in einen umfassenderen Automatisierungsprozess einbinden. Ansible Automation Platform kann Aufgaben vor der Provisionierung ausführen und ein Terraform-Deployment zum Aufbau der Infrastruktur auslösen. Die Lösung kann außerdem Aufgaben nach der Provisionierung ausführen, wie die Konfiguration von Anwendungen, und lässt sich zu Tracking-Zwecken in Tools für das IT-Servicemanagement (ITSM) wie ServiceNow integrieren.
Terraform- und Ansible Automation Platform-Integrationen
Red Hat bietet eine zertifizierte Collection von Terraform-Inhalten für Ansible an. Sie enthält Module zur Unterstützung bei der Verwaltung und Provisionierung von IaC mittels HashiCorp Terraform (HCP Terraform und Terraform Enterprise). Die Collection unterstützt Automatisierungsfunktionen, die denen anderer Integrationen von Cloud-Provisionierungstools für Ansible ähneln, wie AWS CloudFormation, Azure Resource Manager und Helm.
Darüber hinaus bietet Hashicorp einen Terraform Provider für die Interaktion mit Ansible an. Ein Terraform Provider ist ein Plugin, das Ressourcen und Datenquellen hinzufügt, die Terraform verwalten kann. Diese Provider müssen in der Terraform-Konfiguration deklariert werden, damit Terraform sie installieren und verwenden kann. Der Ansible Provider für Terraform ermöglicht Terraform die direkte Verwaltung des Ansible Inventorys. Anstatt separate Inventory-Plugins zu benötigen, um Informationen über neu provisionierte Infrastruktur manuell zu erfassen und an Ansible weiterzuleiten, automatisiert der Provider die Übergabe. Nutzende können die Verwendung eines Ansible Inventorys direkt in ihrer Terraform-Konfiguration definieren. So können Ansible Playbooks Konfigurationsaufgaben sofort nach der Erstellung auf den neuen Hosts ausführen.
Warum Red Hat Ansible Automation Platform?
Die Open Source-Tools Terraform und Ansible bilden die Basis für IaC. Die Skalierung und Steuerung dieser integrierten Workflows in großen Unternehmen bringen jedoch erhebliche Herausforderungen hinsichtlich Sicherheit und Konsistenz mit sich. Red Hat Ansible Automation Platform reduziert diese Komplexität und verwandelt die von Communities gestützte Automatisierung in eine strategische Unternehmenslösung. Diese Lösung bietet die für die Verwaltung komplexer Automatisierungsprozesse erforderliche, zentrale Steuerung, die sowohl die Provisionierung mit Terraform als auch die laufende Konfiguration mit Ansible umfasst.
Ansible Automation Platform ist ein bewährtes Subskriptionsprodukt, bei dem Open Source im Mittelpunkt steht und das Unternehmen umfassenden Lifecycle-Support bietet. Es basiert auf der Ansible-Community, die von der Erfahrung und dem Fachwissen Tausender von Mitwirkenden weltweit profitiert. Ansible Automation Platform hilft Unternehmen bei der Erstellung, Verwaltung und Skalierung ihrer Automatisierungs-Workloads. Es bietet eine flexible, stabile und sicherheitsorientierte Basis für die Bereitstellung von End-to-End-Automatisierung, einschließlich für Hybrid Cloud-Umgebungen, Edge-Standorte, Netzwerke, Sicherheit, Infrastruktur und viele weitere Use Cases.
CI/CD-Optimierung mit Red Hat Ansible Automation Platform
Erfahren Sie, wie Sie mit Red Hat Ansible Automation Platform komplexe IT-Umgebungen effizient verwalten, Sicherheitsabläufe automatisieren und das Deployment beschleunigen können.