Definition
Terraform ist ein Werkzeug zur Infrastrukturautomatisierung, das von der Firma HashiCorp entwickelt wurde. Bis 2023 stand es unter einer Open-Source-Lizenz, seitdem unter der Business Source License; als quelloffene Abspaltung entstand OpenTofu. Es ermöglicht die deklarative Beschreibung von IT-Infrastruktur in Form von Code, der als Infrastructure as Code (IaC) bezeichnet wird. Mit Terraform können Cloud-Ressourcen wie virtuelle Maschinen, Netzwerke oder Datenbanken definiert, bereitgestellt und verwaltet werden.
Das Ziel von Terraform ist es, Infrastrukturänderungen reproduzierbar und versionierbar zu gestalten. Dabei wird der gewünschte Zustand der Infrastruktur in Konfigurationsdateien beschrieben, die Terraform interpretiert, um die notwendigen Aktionen zur Herstellung dieses Zustands durchzuführen.
Was bedeutet das für Ihr Unternehmen?
Mit Terraform ist Ihre Server- und Cloud-Umgebung als Code beschrieben, sodass sie sich nach einem Ausfall oder für eine Testumgebung reproduzierbar neu aufbauen lässt. Für kleinere Projekte mit einem einzelnen Server ist der Aufwand oft höher als der Nutzen. Interessant wird es bei mehreren Umgebungen, wechselnden Anbietern oder Prüfpflichten, weil jede Änderung an der Infrastruktur nachvollziehbar dokumentiert ist.
Geschichte und Hintergrund
Terraform wurde 2014 von HashiCorp veröffentlicht, einem Unternehmen, das sich auf Tools für DevOps und Infrastrukturmanagement spezialisiert hat. Die Entwicklung von Terraform erfolgte im Kontext der zunehmenden Verbreitung von Cloud-Computing und der Notwendigkeit, komplexe Infrastrukturen automatisiert und konsistent zu verwalten.
Vor Terraform gab es bereits andere Ansätze zur Automatisierung von Infrastruktur, wie etwa Puppet oder Chef, die sich jedoch stärker auf Konfigurationsmanagement auf Betriebssystemebene konzentrierten. Terraform unterscheidet sich durch den Fokus auf die Orchestrierung und Verwaltung von Cloud-Ressourcen über verschiedene Anbieter hinweg.
Funktionsweise
Terraform verwendet eine eigene deklarative Sprache namens HashiCorp Configuration Language (HCL), die es ermöglicht, Infrastrukturkomponenten in einer leicht lesbaren Syntax zu definieren. Die Konfigurationsdateien beschreiben Ressourcen und deren Eigenschaften, die Terraform dann in der Zielumgebung erstellt oder aktualisiert.
Beim Ausführen von Terraform wird zunächst ein Plan erstellt, der die geplanten Änderungen an der Infrastruktur aufzeigt. Nach der Bestätigung führt Terraform die notwendigen API-Aufrufe an die Cloud-Anbieter durch, um die Infrastruktur in den gewünschten Zustand zu überführen. Dabei verwaltet Terraform einen Zustandsfile, der den aktuellen Stand der Infrastruktur dokumentiert.
Einsatzgebiete
Terraform wird vor allem in der Cloud-Infrastrukturverwaltung eingesetzt, um Ressourcen bei Anbietern wie Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) und vielen weiteren zu provisionieren. Durch die Unterstützung zahlreicher Provider kann Terraform heterogene Umgebungen zentral verwalten.
Neben der Cloud-Nutzung findet Terraform auch Anwendung in der Verwaltung von On-Premises-Infrastruktur, etwa durch Integration mit VMware oder OpenStack. Zudem wird es in der Continuous-Integration/Continuous-Delivery (CI/CD)-Pipeline eingesetzt, um Infrastrukturänderungen automatisiert und kontrolliert auszurollen.
Abgrenzung zu verwandten Werkzeugen
Im Vergleich zu Konfigurationsmanagement-Tools wie Ansible, Puppet oder Chef fokussiert sich Terraform auf die Bereitstellung und Verwaltung von Infrastrukturressourcen, während die genannten Werkzeuge hauptsächlich die Konfiguration und Verwaltung von Software auf bestehenden Systemen übernehmen.
Andere Infrastructure-as-Code-Werkzeuge wie AWS CloudFormation sind oft an einen einzelnen Cloud-Anbieter gebunden, während Terraform durch sein Provider-Modell eine plattformübergreifende Verwaltung ermöglicht. Dies macht Terraform besonders flexibel für Multi-Cloud- oder Hybrid-Cloud-Szenarien.