Was ist Terraform? Infrastructure as Code erklärt
Kurze Antwort: Terraform ist ein Infrastructure-as-Code-Tool (IaC) von HashiCorp, mit dem Sie Cloud- und lokale Infrastruktur in gut lesbaren Konfigurationsdateien definieren und anschließend sicher erstellen, ändern und versionieren…
In this guide
- Was ist Infrastructure as Code und warum ist es wichtig?
- Wie funktioniert Terraform genau?
- Was sind Provider?
- Was ist Terraform-State?
- Wie sieht eine einfache Konfiguration aus?
- Terraform und andere Tools im Vergleich
- Welche typischen Anwendungsfälle gibt es für Terraform?
Kurze Antwort: Terraform ist ein Infrastructure-as-Code-Tool (IaC) von HashiCorp, mit dem Sie Cloud- und lokale Infrastruktur in gut lesbaren Konfigurationsdateien definieren und anschließend sicher erstellen, ändern und versionieren können. Sie beschreiben die gewünschten Ressourcen, etwa Server, Netzwerke und Datenbanken, in einer deklarativen Sprache namens HCL. Terraform vergleicht diesen Zielzustand mit dem tatsächlich vorhandenen Zustand und nimmt nur die erforderlichen Änderungen vor. Über sogenannte Provider funktioniert das Tool auf zahlreichen Plattformen und gehört damit zu den am weitesten verbreiteten Werkzeugen im modernen DevOps- und Cloud-Engineering.
Was ist Infrastructure as Code und warum ist es wichtig?
Infrastructure as Code bedeutet, Server, Netzwerke und andere Ressourcen über Konfigurationsdateien zu verwalten, statt manuell durch eine Webkonsole zu klicken. Die Vorteile sind erheblich. Ihre Infrastruktur wird reproduzierbar, weil dieselben Dateien jedes Mal dieselbe Umgebung erzeugen. Sie wird prüfbar, weil Änderungen wie Anwendungscode durch Versionsverwaltung und Code-Reviews laufen. Und sie wird wiederherstellbar, weil Sie eine Umgebung anhand der Dateien neu aufbauen können, wenn ein Problem auftritt. Terraform ist eine der beliebtesten Möglichkeiten, IaC umzusetzen, und dieser Ansatz bildet das Kernstück dessen, was ein DevOps-Engineer tagtäglich tut.
Wie funktioniert Terraform genau?
Terraform folgt einem klaren, wiederholbaren Zyklus. Sie schreiben eine Konfiguration, sehen sich die Änderungen an und wenden sie dann an. Der zentrale Workflow wird üblicherweise als Schreiben, Planen, Anwenden zusammengefasst.
- Schreiben: Sie deklarieren Ressourcen in .tf-Dateien mit HCL, beispielsweise eine virtuelle Maschine, einen Storage-Bucket und ein Netzwerk.
- Initialisieren: Mit terraform init werden die für Ihre Konfiguration benötigten Provider heruntergeladen und das Arbeitsverzeichnis vorbereitet.
- Planen: terraform plan zeigt genau an, was Terraform erstellen, ändern oder zerstören wird, ohne zunächst etwas zu verändern. Diese Vorschau gehört zu den wertvollsten Sicherheitsfunktionen von Terraform.
- Anwenden: terraform apply führt den Plan aus, stellt die tatsächlichen Ressourcen bereit und zeichnet das Ergebnis anschließend im State auf.
- Zerstören: terraform destroy entfernt sämtliche von der Konfiguration verwalteten Ressourcen. Das ist für temporäre oder Testumgebungen nützlich.
Was sind Provider?
Ein Provider ist ein Plugin, das Terraform vermittelt, wie es mit der API einer bestimmten Plattform kommuniziert. Es gibt Provider für die großen Cloud-Anbieter wie Amazon Web Services, Microsoft Azure und Google Cloud sowie für Dienste wie Kubernetes, GitHub, Cloudflare und zahlreiche Datenbanken. Dank dieses Plugin-Modells können mit demselben Tool und demselben Workflow sehr unterschiedliche Systeme verwaltet werden. Sie deklarieren die benötigten Provider, Terraform lädt sie während der init-Phase herunter, und von da an beschreiben Sie Ressourcen mithilfe der Ressourcentypen des jeweiligen Providers. Diese große Bandbreite ist ein wichtiger Grund dafür, dass Terraform zum Industriestandard geworden ist und so häufig im Werkzeugkasten eines Cloud-Engineers zu finden ist.
Was ist Terraform-State?
State ist die Quelle vieler Möglichkeiten von Terraform, aber auch der Bereich, in dem Einsteiger die meisten Probleme haben. Wenn Terraform Ressourcen erstellt, hält es in einer State-Datei fest, was es erstellt hat. Diese Datei bildet Ihre Konfiguration auf reale Objekte ab. Beim nächsten Durchlauf liest Terraform den State, um zu ermitteln, was bereits vorhanden ist. So kann es die kleinstmögliche Menge an Änderungen berechnen, statt alles neu zu erstellen.
Daraus folgen zwei praktische Regeln. Erstens kann die State-Datei vertrauliche Daten wie Datenbankpasswörter enthalten und muss daher geschützt werden. Zweitens muss, wenn ein Team gemeinsam Infrastruktur verwaltet, jeder denselben State verwenden. Deshalb wird er in einem Remote-Backend, beispielsweise einem Cloud-Objektspeicher, mit Sperrung gespeichert, damit nicht zwei Personen gleichzeitig widersprüchliche Änderungen anwenden. Das manuelle Bearbeiten des States ist riskant und wird im Allgemeinen vermieden. Den State mit Sorgfalt zu behandeln, ist die wichtigste Grundregel für einen sicheren Einsatz von Terraform.
Wie sieht eine einfache Konfiguration aus?
HCL ist auf Lesbarkeit ausgelegt. Eine Konfiguration deklariert Ressourcen in Blöcken, die jeweils einen Typ, einen Namen und Einstellungen enthalten. Sie referenzieren eine Ressource aus einer anderen, damit Terraform die richtige Reihenfolge bestimmen kann, beispielsweise um zuerst ein Netzwerk und anschließend den Server zu erstellen, der es nutzt. Mit Variablen können Sie außerdem hartcodierte Werte vermeiden, mit Outputs nützliche Ergebnisse wie eine IP-Adresse ausgeben und mit Modulen Gruppen von Ressourcen paketieren und wiederverwenden. Da die Dateien reinen Text enthalten, können sie zusammen mit allem anderen in der Versionsverwaltung abgelegt werden. Das führt natürlicherweise zu unserem Leitfaden darüber, was Git ist.
Terraform und andere Tools im Vergleich
Terraform wird häufig mit anderen Infrastructure-Tools verglichen, und die Unterschiede sind bei der Auswahl des passenden Tools entscheidend.
| Tool | Primärer Zweck | Ansatz | Typische Verwendung mit Terraform |
|---|---|---|---|
| Terraform | Infrastruktur bereitstellen | Deklarativ, Multi-Cloud | Die Bereitstellungsschicht selbst |
| OpenTofu | Infrastruktur bereitstellen | Deklarativ; quelloffener Fork von Terraform | Eine direkte Alternative für Teams, die MPL 2.0 bevorzugen |
| Ansible | Bestehende Maschinen konfigurieren | Prozedural, ohne Agent | Server konfigurieren, nachdem Terraform sie erstellt hat |
| CloudFormation | Infrastruktur bereitstellen | Deklarativ, nur für AWS | Eine AWS-native Alternative |
| Pulumi | Infrastruktur bereitstellen | Deklarativ über allgemein einsetzbare Sprachen | Eine Alternative für Teams, die Python, TypeScript usw. bevorzugen |
Ein wichtiger Punkt für 2026: Im August 2023 änderte HashiCorp die Lizenz von Terraform von der quelloffenen MPL 2.0 zur Business Source License (BSL), welche die Verwendung der Software zur Entwicklung direkt konkurrierender Produkte einschränkt. Als Reaktion darauf gründeten mehrere Unternehmen OpenTofu, einen unter MPL 2.0 lizenzierten Fork, der inzwischen von der Linux Foundation verwaltet und 2025 in die Cloud Native Computing Foundation aufgenommen wurde. OpenTofu liest dasselbe HCL, verwendet dieselben Provider und schreibt eine kompatible State-Datei. Für die meisten Nutzer sind die beiden Tools daher im Alltag austauschbar. Welches ein Team auswählt, ist weitgehend eine Frage der Governance und der Lizenzierung. Konkrete Versionsnummern unterliegen einem raschen Wandel; prüfen Sie daher die aktuelle Version, bevor Sie sich auf eine bestimmte Funktion verlassen.
Welche typischen Anwendungsfälle gibt es für Terraform?
- Bereitstellen von Cloud-Umgebungen wie Entwicklung, Staging und Produktion, die identisch und reproduzierbar sind.
- Multi-Cloud- oder Hybrid-Bereitstellungen unter Verwendung eines einzigen Workflows für mehrere Provider.
- Ver disposable Umgebungen für Tests oder Demos, die bedarfsgerecht erstellt und zerstört werden können.
- Verwalten unterstützender Dienste wie DNS-Einträge, Zugriffsrichtlinien und Kubernetes-Cluster.
Da Terraform vollständige Umgebungen als Code definiert, ist es eine Kernkompetenz für alle, die große Systeme entwerfen. Deshalb ist es Bestandteil der Qualifizierungswege zum Cloud-Architekten sowie der Zuverlässigkeitspraktiken, die wir in unserem Vergleich von DevOps und SRE beschreiben.
Was sind Module und warum verwenden Teams sie?
Mit zunehmender Größe der Konfigurationen wird es unübersichtlich, dieselben Blöcke in verschiedenen Projekten zu kopieren. Module lösen dieses Problem, indem sie eine Gruppe von Ressourcen zu einer wiederverwendbaren Einheit mit definierten Eingaben und Ausgaben zusammenfassen. Ein Team könnte beispielsweise ein Modul entwickeln, das ein Standardnetzwerk mit den passenden Subnetzen, Routing- und Sicherheitsregeln erstellt, und es anschließend durch die Übergabe unterschiedlicher Variablen in jeder Umgebung wiederverwenden. Module fördern Konsistenz, verringern Copy-and-paste-Fehler und ermöglichen es einem Team, bewährte Verfahren einmalig abzubilden. Öffentliche Registries hosten Tausende Community-Module für gängige Muster, wobei Produktionsteams häufig eigene Module entwickeln und versionieren. Das Denken in Modulen ist ein Zeichen von Terraform-Reife und spiegelt wider, wie gute Software in wiederverwendbare Komponenten gegliedert wird.
Was sind die wichtigsten Vorteile und Nachteile von Terraform?
Die Stärken von Terraform erklären seine Beliebtheit, doch auch die Nachteile sollten ehrlich betrachtet werden.
- Vorteil: Multi-Cloud-Konsistenz. Mit einem Workflow und einer Sprache lassen sich viele Plattformen verwalten, sodass Teams für jeden Provider kein neues Tool erlernen müssen.
- Vorteil: sichere Vorschauen. Der Planungsschritt zeigt jede Änderung, bevor sie erfolgt, und verhindert dadurch viele kostspielige Fehler.
- Vorteil: Reproduzierbarkeit und Prüfbarkeit. Da alles als versionierter Code vorliegt, sind Umgebungen reproduzierbar und jede Änderung nachvollziehbar.
- Nachteil: Komplexität des States. State, Backends und Sperrungen korrekt zu verwalten erfordert Disziplin und ist die häufigste Ursache realer Probleme.
- Nachteil: Lernkurve. Das deklarative Denken und die providerindividuellen Details brauchen Zeit, bis sie verinnerlicht sind, insbesondere bei Personen, die gewohnt sind, sich durch Konsolen zu klicken.
- Nachteil: Drift. Wenn jemand eine Ressource manuell außerhalb von Terraform ändert, können die reale Umgebung und der State auseinanderlaufen. Beide müssen daher sorgfältig abgeglichen werden.
Wie passt Terraform in eine CI/CD-Pipeline?
In etablierten Teams läuft Terraform für Produktionsänderungen selten direkt vom Laptop aus. Stattdessen liegt die Konfiguration in einem Git-Repository, und eine Continuous-Integration-Pipeline führt bei jedem Pull Request automatisch terraform plan aus, damit die Prüfer genau sehen können, was sich ändern wird. Nach der Freigabe führt ein automatisierter Schritt terraform apply in der Zielumgebung aus. Dadurch gelten für die Infrastruktur dieselben Prüf-, Test- und Auditstandards, die Teams bereits auf Anwendungscode anwenden. Zudem wird sichergestellt, dass der State in einem gemeinsam genutzten Remote-Backend und nicht auf der Maschine einer einzelnen Person liegt. Sobald mehr als eine Person beteiligt ist, ist dies unverzichtbar. Dieser Automatisierungs-ansatz ist ein prägendes Merkmal moderner Plattformteams.
Wie sollte ein Einsteiger mit Terraform beginnen?
Beginnen Sie mit einem Provider, den Sie bereits verstehen, idealerweise mit einer Cloud, deren Konsole Sie bereits verwendet haben. Installieren Sie Terraform oder OpenTofu, erstellen Sie eine einzelne kleine Ressource wie einen Storage-Bucket und führen Sie init, plan und apply aus, um den Workflow kennenzulernen. Achten Sie vor jedem Apply besonders auf die Plan-Ausgabe. Pläne sorgfältig zu lesen, ist eine professionelle Gewohnheit, die Sie frühzeitig aufbauen sollten. Speichern Sie Ihre Konfiguration von Anfang an in Git, halten Sie Geheimnisse aus Ihren Dateien heraus und wechseln Sie zu einem Remote-Backend für den State, sobald mehr als eine Person beteiligt ist. Widerstehen Sie der Versuchung, große und komplexe Konfigurationen zu kopieren, die Sie nicht verstehen. Kleine Schritte, die Sie erklären können, vermitteln Ihnen wesentlich mehr.
Lohnt sich das Erlernen von Terraform?
Für alle, die in DevOps, Cloud- oder Plattform-Engineering einsteigen, zählt Terraform zu den wertvollsten verfügbaren Fähigkeiten. Es ist weit verbreitet, über Clouds hinweg übertragbar und bildet das Zentrum dafür, wie moderne Teams Infrastruktur sicher erstellen und verändern. Das deklarative Modell braucht nur kurze Zeit, um verinnerlicht zu werden, und das State-Management verlangt Respekt, doch der Nutzen ist groß: Sie können vollständige Umgebungen als prüfbaren, reproduzierbaren Code beschreiben. Ganz gleich, ob Sie letztlich Terraform oder dessen OpenTofu-Fork verwenden, die Konzepte bleiben erhalten. Somit zahlt sich das Lernen unabhängig davon aus, wie sich die Werkzeuge weiterentwickeln.
Ready to earn your certification?
Boost eLearning offers Live Labs, a Pass Guarantee, and online, live virtual, and on-site delivery.