Infrastructure-as-Code-Lösungen gegenübergestellt Der IaC-Vergleich – Terraform vs. Ansible

Ein Gastbeitrag von Christine Schönig *

Anbieter zum Thema

Terraform und Ansible gehören zu den bekanntesten Anbietern virtualisierter IT-Infrastruktur. Welche Gemeinsamkeiten, Unterschiede und Alleinstellungsmerkmale beide aufweisen, zeigt der Vergleich.

Mit dem Blick auf Infrastrucure-as-Code decken Terraform und Ansible teils gleiche Funktionen ab, aber eben nur teils.
Mit dem Blick auf Infrastrucure-as-Code decken Terraform und Ansible teils gleiche Funktionen ab, aber eben nur teils.
(Bild: geralt / Pixabay)

Infrastructure as Code (IaC) hat sich großflächig als Methode für den Umgang mit sklaierbarer IT-Infrastruktur etabliert. Durch die Kodifizierung können Softwareentwicklungsteams versionskontrollierte, wiederverwendbare Konfigurationen erstellen, ermöglicht durch die Integration der Infrastrukturverwaltung als Teil der Bereitstellungspipeline.

Terraform und Ansible sind zwei führende IaC-Tools mit sich teilweise überschneidenden Funktionen. Beide zielen darauf ab, spezifische Anforderungen an das Infrastrukturmanagement zu erfüllen. Es kann verwirrend sein, zwischen diesen beiden Tools zu unterscheiden und genau die Lösung auszuwählen, die den jeweiligen Anforderungen entspricht.

In diesem Artikel werden daher die Unterschiede zwischen beiden Tools erläutert und aufgezeigt, wie sie in einer DevOps-Umgebung eingesetzt werden können.

Was ist Terraform?

Terraform ist ein quelloffenes, deklaratives Infrastructure-as-Code-Tool, das auf die Bereitstellung und Verwaltung von Infrastrukturen in verschiedenen Umgebungen abzielt. Im Gegensatz zu anderen IaC-Tools ist Terraform herstellerunabhängig. Sie können es für die Verwaltung von Infrastrukturen auf allen unterstützten Plattformen oder Tools verwenden, so z. B. Microsoft Azure, Google Cloud, AWS, Linode und Oracle Cloud.

Terraform wurde erstmals 2014 von HashiCorp als Open-Source-Tool veröffentlicht und hat in den ersten fünf Jahren fast 1.300 Mitwirkende angezogen; heute befinden sich fast 30.000 Commits in seinem Repository.

Was ist Ansible?

Ansible ist ein Tool für Konfigurationsmanagement auf Basis von Open-Source, das auf die Bereitstellung und Konfiguration von Anwendungen ausgerichtet ist. Die Automatisierungssoftware soll eine einfache und schnelle Lösung für Unternehmen bieten, die Vollzeitteams beschäftigen, die viel Zeit mit der Verwaltung von Cloud-Installationen und -Konfigurationen verbringen.

Das Tool ist agentenlos, verbindet sich mit den gewünschten Umgebungen und führt die notwendigen Konfigurationsänderungen durch. Als Konfigurationsmanagement-Tool ist die Funktionalität von Ansible eher auf die Konfiguration einer bestehenden Infrastruktur oder Plattform ausgerichtet.

Wofür werden Terraform und Ansible verwendet?

Mit einem besseren Verständnis von Terraform und Ansible sollen nun die verschiedenen Anwendungsmöglichkeiten beider Lösungen betrachtet werden. Den Anfang macht Terraform, welches das Tool mit den besseren Infrastrukturmanagement-Fähigkeiten darstellt:

  • Externes Ressourcenmanagement - Terraform kann die meisten Anforderungen an die Infrastrukturbereitstellung und -konfiguration mit Unterstützung für öffentliche und private Cloud-Infrastrukturen, Software-Appliances und SaaS erfüllen.
  • Multi-Cloud-Bereitstellung - Durch die Unterstützung mehrerer Anbieter kann Terraform nativ Multi-Cloud-Umgebungen unterstützen.
  • Bereitstellung, Skalierung und Überwachung von Anwendungsinfrastrukturen für mehrschichtige Anwendungen mit jeder Art von Architektur (Application Security).
  • Self-Service-Cluster - Ermöglichen die Erstellung von in sich geschlossenen Infrastrukturkonfigurationen, die von verschiedenen Teams innerhalb des Unternehmens unabhängig voneinander verwaltet werden können, ohne sich gegenseitig zu behindern.
  • Einhaltung von Richtlinien und Management - Terraform kann bei der Standardisierung der Infrastruktur helfen und weiter ausgebaut werden, um Compliance-Richtlinien durch die Integration eines Policy-as-Code-Frameworks durchzusetzen

Als Konfigurationsmanagement-Tool wird Ansible für Folgendes verwendet:

  • Provisioning - Erstellung neuer Infrastrukturen und Verwaltung von Anwendungsorchestrierung und Konfigurationsmanagement in beliebigem Umfang.
  • Konfigurationsmanagement - Verwaltung der Konfiguration über verschiedene Ressourcentypen hinweg ohne Agenten.
  • App Deployment - Bereitstellung jeder Art von Anwendung, von einem Single-Node-Service bis hin zu Multi-Tier-Anwendungen aus einem gemeinsamen Framework.
  • Continuous Delivery - Da Ansible alle Konfigurationsanforderungen erfüllen kann, lässt es sich in jedes CD-Tool integrieren, ohne dass Sie auf mehrere Tools angewiesen oder auf CD-Tools beschränkt sind, die bestimmte IaC-Tools unterstützen.
  • Sicherheitsautomatisierung - Implementierung von Sicherheitsrichtlinien und Rollen für alle Endpunkte und Ressourcen in einer Umgebung.

Gemeinsamkeiten und Unterschiede zwischen Terraform und Ansible

Auf den ersten Blick scheinen diese beiden Tools ähnliche Funktionen zu bieten. Bei beiden handelt es sich um Infrastructure-as-Code-Tools, die die notwendigen Werkzeuge für die Bereitstellung, Konfiguration und Verwaltung von Infrastrukturen zur Verfügung stellen.

Gemeinsamkeiten von Terraform und Ansible

Sowohl Terraform als auch Ansible sind agenten- und masterlose Tools, d. h. sie benötigen keine dedizierten Agenten, die in der von ihnen verwalteten Infrastruktur installiert und konfiguriert werden müssen. Sie benötigen auch keine dedizierte Hardware für den Betrieb. Diese Tools stellen eine direkte Verbindung zu den jeweiligen Plattform-APIs her, um Ressourcen bereitzustellen, und verwenden standardisierte Methoden wie SSH oder Skripte, um die erforderlichen Konfigurationen vorzunehmen.

Unterschiede zwischen Terraform und Ansible

  • Terraform kann sowohl Infrastruktur als auch Anwendungen auf unterstützten Plattformen bereitstellen. Ansible kann beides und darüber hinaus Ressourcen konfigurieren. Der Unterschied liegt im Zweck des jeweiligen Tools.
  • In einem Punkt unterscheiden sich beide grundlegend: Terraform ist in erster Linie ein Tool für die Bereitstellung von Infrastrukturen, d. h. es eignet sich zum Erstellen, Ändern und Verwalten von Infrastrukturressourcen. Ansible hingegen ist in erster Linie ein Konfigurationsmanagement-Tool, das sich durch die Konfiguration der bereitgestellten Infrastruktur auszeichnet.
  • Bei der Bereitstellung von Infrastrukturen stellt Terraform die überlegene Lösung dar, da es die Verwaltung von Servern, Netzwerken, Firewalls, Storage-Buckets und Datenbankinstanzen ermöglicht. Auf der anderen Seite bietet Ansible alle notwendigen Funktionen, um jede Art von Infrastrukturkonfiguration bereitzustellen, z. B. die Installation und Aktualisierung von Software oder die Einrichtung von Sicherheitskonfigurationen.
  • Terraform ist darauf ausgelegt, auf Architekturebene deklarativ zu sein. Es vereinfacht die Kodifizierung erheblich, da die Entwickler nur die gewünschte Konfiguration angeben müssen und nicht alle Schritte, die zum Erreichen dieser erforderlich sind.
  • Ansible ist eine Mischung aus prozeduralem und deklarativem Ansatz, wobei die Tendenz eher in Richtung prozedural geht. Daher müssen Entwickler bei den meisten Ansible-Konfigurationen die genauen Schritte angeben, die erforderlich sind, um die gewünschte Konfiguration zu erreichen. Obwohl dies im Vergleich zu Terraform eine mühsame Aufgabe ist, bietet es den Benutzern weitaus mehr Kontrolle bei der Verwaltung von Konfigurationen.

Das Richtige IaC-Tool finden

Bei der Auswahl des richtigen Tools kommt es auf die Anforderungen an. Terraform eignet sich, wenn ein Tool für die Bereitstellung und Verwaltung der Infrastruktur benötigt wird. Ansible empfiehlt sich, wenn ein Tool für das Konfigurationsmanagement gesucht ist. Beide Tools schließen sich jedoch nicht gegenseitig aus. Es ist möglich, sowohl Terraform als auch Ansible in den eigenen Umgebungen zu verwenden, da sie sich für unterschiedlichen Aufgaben im Gesamtprozess des Infrastrukturmanagements eignen.

Christine Schönig
Christine Schönig
(Bild: Check Point Software GmbH)

Die Kombination der Stärken beider Lösungen kann die bestmöglich automatisierte Infrastrukturverwaltung schaffen. Terraform eignet sich besser für die Bereitstellung und Verwaltung von Infrastrukturen, während Ansible sich durch das Konfigurationsmanagement auszeichnet.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

* Christine Schönig ist Regional Director Security Engineering CER, Office of the CTO bei der Check Point Software Technologies GmbH. Sie begann ihre Karriere bei Check Point 2009 als Technical Managerin. Zuvor leitete die erfahrene Führungskraft bei Nokia den Geschäftsbereich Business Mobility und war damit für den Vertrieb der Mobility- und Security-Produkte in Deutschland zuständig. Schönig war schon in mehreren Positionen im IT-Markt tätig, unter anderem als Unix-und Firewall-Administratorin.

(ID:48458839)