Management von Multicloud-Umgebungen Infrastructure as Code mit Terraform
Anbieter zum Thema
Terraform ermöglicht das zentrale Ansprechen und Abstrahieren von Cloud-Ressourcen verschiedener Anbieter. Kommen Ressourcen aus AWS, Azure oder auch der Google Cloud Platform zum Einsatz, kann Terraform die Anbindung vereinfachen.

Terraform ist ein in Go geschriebenes Open-Source-Tool des Unternehmens HashiCorp aus dem Bereich Infrastructure-as-Code (IaC). Mit dem Werkzeug lässt sich eine Rechenzentrumsinfrastruktur in einer Art JSON-Programmiersprache deklarativ abbilden (Hashicorp Configuration Language, HCL).
Dadurch ist es möglich, die gewünschte Systemarchitektur unabhängig in kurzen Textdateien zu hinterlegen und plattformunabhängig auf die verschiedenen Plattformen zu verteilen. In DevOps-Umgebungen ist der Einsatz natürlich ideal, da sich hier weitreichende Automatismen umsetzen lassen. Das Tool kann in Windows, Linux, macOS, FreeBSD, OpenBSD und Solaris installiert werden.
Fast alle Cloud-Plattformen unterstützten Terraform
Faktisch wird Terraform von jedem größeren Cloud-Anbieter unterstützt. Das ermöglicht wiederum den Aufbau oder die Änderung von kompletten Cloud-Infrastrukturen mit wenigen Zeilen Code. Sinnvoll ist der Einsatz zum Beispiel für Test- oder Entwicklungsumgebungen.
Auch im Produktiveinsatz ist Terraform ein mächtiges Werkzeug, hier müssen Entwickler aber sehr vorsichtig damit umgehen die Ressourcen zu löschen oder zu ändern, da auch hier wenige Zeilen Code für eine umfassende Änderung genutzt werden kann, bei der durchaus auch Daten verloren gehen können. Dadurch ist es möglich, mit Terraform die APIs der angebundenen Clouds zu abstrahieren und Ressourcen aus verschiedenen Cloud-Umgebungen zentral zu steuern.
Natürlich kann Terraform auch genutzt werden, wenn nur ein Cloud-Anbieter zum Einsatz kommt. Seine Vorteile spielt das Tool aber vor allem dann aus, wenn in Multi-Cloud-Umgebungen mehrere Dienste von verschiedenen Anbietern unter einem Dach zusammengefasst werden sollen. Das ist der klare Schwerpunkt von Terraform: Konfiguration von zahlreichen Ressourcen verschiedener Cloud-Plattformen unter einem Dach.
Terraform abstrahiert die APIs der großen Cloud-Provider
Terraform hat vor allem die Stärke, die verschiedenen APIs von AWS, Azure und GCP abstrahieren zu können. Auch für private Clouds ist so eine Abstrahierung möglich, zum Beispiel für virtuelle Umgebungen auf Basis von Hyper-V, OpenStack oder VMware vSphere. Über Terraform lassen sich alle Ressourcen zentral zusammenfassen und auch zwischen den Plattformen verschieben.
Einfach ausgedrückt, wird mit Terraform der gewünschte Zustand aller Ressourcen zunächst in Konfigurationsdateien gespeichert. Auf Basis dieser Daten kann Terraform bei den angebundenen Cloud-Plattformen die Objekte provisionieren und dabei auch auf Besonderheiten der einzelnen Clouds eingehen.
Terraform in der Praxis: So werden die Konfigurationsdateien umgesetzt
Der Download der Open Source-Version bietet keine grafische Oberfläche, diese bleibt der kostenpflichtigen Enterprise-Version vorbehalten. Zum Download-Archiv gehört die Datei „terraform.exe“, mit der die einzelnen Konfigurationsdateien beim jeweiligen Provider umgesetzt werden können.
Die Skripte im aktuellen Verzeichnis lassen sich mit …
terraform init
… zunächst initialisieren, damit die Umgebung grundsätzlich zur Verfügung steht. Beispieldateien für Terraform stehen zum Beispiel auf GitHub zur Verfügung. Wenn die textbasierten Konfigurationsdateien mit den Anweisungen für die jeweilige Plattform hinterlegt sind, kann Terraform im Terminal mit …
terraform plan
… die Syntax und Plausibilität überprüfen. Die tatsächliche Umsetzung erfolgt anschließend mit …
terraform apply
… und …
terraform refresh
Wenn eine Konfiguration in der Ziel-Cloud nicht richtig gesetzt ist, lassen sich die Anpassungen mit …
terraform destroy
… wieder rückgängig machen.
Achtung vor dem Löschen von Ressourcen durch Konfigurationsänderungen
Generell muss darauf geachtet werden, dass beim Einsatz von Terraform Änderungen an den Cloud-Ressourcen in den meisten Fällen mit dem Löschen der Ressourcen in der jeweiligen Cloud einhergehen und danach das entsprechende Objekt mit den neuen Einstellungen neu erstellt wird. Das kann zeitweise zu Ausfällen im Netzwerkverkehr oder sogar zum Ausfall von Diensten und Datenverlust führen. Hier müssen Entwickler sehr sorgfältig vorgehen, damit in solchen Fällen Daten erst gesichert und Ausfallstrukturen aufgebaut werden.
Ob bei Änderungen einer Ressource ein vorheriges Löschen notwendig ist, zeigt das bereits vorher erwähnte „terraform plan“ an. Solche Probleme lassen sich aber auch umgehen, in dem in den Konfigurationsdateien mit „prevent_destroy = true“ bei „lifecycle“ festgelegt wird, dass unter keinen Umständen bei Änderungen ein Löschen der Ressource durchgeführt werden soll. Mit „create_before_destroy“ lässt sich zusätzlich festlegen, dass erst eine alternative Ressource angelegt werden muss, bevor eine alte wegen Konfigurationsänderungen gelöscht werden.
Die einzelnen Plattformen, die in Terraform zum Anlegen und Verwalten von Ressourcen genutzt werden, wird über den Wert „provider“ in den Konfigurationsdateien gesteuert. Die Provider werden in den Konfigurationsdateien festgelegt. Dabei kann es sich bei einem Provider auch um ein eigenes Rechenzentrum handeln, sodass in Netzwerken auch verschiedene Provider für interne Strukturen zum Einsatz kommen können, inklusive der APIs zu den Hosts in dieser Umgebung.
(ID:48741408)