X

Neuste Trends, Tipps, Strategien &
Events rund um das Thema Cloud

Terraform: Radikal vereinfachtes Tool für innovative IT-Landschaften

Mit nur wenigen Zeilen Programmiercode eine komplette Infrastruktur aufbauen – das ist utopisch, oder? Umso mehr, als der Bedarf an schnellen, eleganten und kostengünstigen Lösungen immens schnell wächst. Zum Beispiel einen virtuellen Server mit minimalem Programmieraufwand binnen Sekunden aufbauen und starten: Die Lösung, die das kann, heißt Terraform. Das mächtige Tool kommt von dem kalifornischen Softwareunternehmens HashiCorp.

 

Was bedeutet Terraforming?

 

Terraforming ist eigentlich Science Fiction. Dort geistert der Begriff jedenfalls seit 1948 herum. Gemeint ist ursprünglich: Irgendwann wird die Menschheit einen anderen Ort als die Erde brauchen. Und weil alle Planeten, die eh noch unerreichbar, aber zumindest nicht sofort tödlich sind, sich jedenfalls im Naturzustand immer noch höchst unwirtlich zeigen, müssen sie eben adaptiert werden: Luftdruck, Temperatur und Wasservorkommen für eine dauerhafte Bewohnbarkeit, eine sauerstoffhaltige Atmosphäre usw. Dieses „Terraforming“ erfordert Techniken, die mit heutigen Mitteln und Methoden kaum umsetzbar sind. Sie beruhen derzeit lediglich auf wissenschaftlichen Theorien. Das IT-Tool Terraform ist dagegen ganz real…
 

 

Die mühselige Vergangenheit sah zuletzt so aus: Der herkömmliche Aufbau einer IT-Landschaft war durch das DevOps-Paradigma geprägt. DevOps beschreibt Development und IT-Operation als softwaregestützte Administration, etwa der Cloud-Umgebung eines Unternehmens. Die kontinuierlich wachsenden Anforderungen an diese Prozesse machten immer mehr Druck, den personellen Administrationsaufwand mit automatisierten Tools zu reduzieren. In diese schmerzhafte Lücke stieß HashiCorp mit Terraform und der Konfigurationssprache HCL (HashiCorp-Language). Hier kommt nun, wie das funktioniert und was mit Terraform so fulminant anders wird.

 

Terraform – was ist das für ein Werkzeug?

Terraform ist ein Infrastructure-as-Code-Tool (IaC), das in einem IaaS-Umfeld (Infrastructure as a Service) eingesetzt wird. In herkömmlichen Rechenzentren ist eine IT-Landschaft mit Servern, Firewalls usw. statisch aufgebaut; in einem Cloud-Umfeld hingegen ist sie ständigen Veränderungen unterworfen (Stichwort: Skalierbarkeit). Um nun eine benötigte Infrastruktur per Software zusammenstellen und aufbauen zu können, stellen IaaS-Provider Schnittstellen bereit. Für eine Anforderung wie: "Baue mir einen virtuellen Server mit 8 GB RAM auf, der auf Debian-Linux beruht, und starte diesen." würde sich klassischerweise jetzt ein Spezialist hinsetzen, Hard- und Software zusammenstellen, das Ganze konfigurieren und – nach geraumer Zeit – das fertige Produkt zur Verfügung stellen.

An dieser Stelle kommt nun Terraform ins Spiel: Der genannte Server entsteht hier mit geringem Programmieraufwand in Sekundenschnelle. Denn Entwickler müssen mit Terraform nicht in einer API denken, sondern können die geplante Zielinfrastruktur in der einfachen Konfigurationssprache HCL (HashiCorp-Language) in wenigen Schlüsselwörtern vollständig beschreiben. Während der Verarbeitung des Skripts erstellt Terraform die komplette Infrastruktur bei einem IaaS-Cloud-Anbieter inklusive sämtlicher Abhängigkeiten der gewünschten Infrastruktur – selbstständig und in korrekter Reihenfolge. Zudem speichert die Terraform-Plattform den gesamten Lebenszyklus einer Anwendung. Damit lassen sich später bereits angelegte Infrastrukturen mit geringem Aufwand modifizieren, erweitern und wieder entfernen.

 

Infrastructure as a Code: Wenn IT-Ebenen einander verstehen

IaC ist im Kern nichts anderes als programmierbare Infrastruktur. Operator-Teams können ihre IT-Landschaft mit Tools wie Terraform automatisch per Code verwalten, statt manuell daran zu basteln. Damit bewegen sie sich plötzlich in einem softwaretechnischen Paradigma, wo CPU-, Speicher- und Netzwerkressourcen sowie alle gewünschten Anwenderprogramme in einer Computersprache beschrieben werden. Diese Beschreibungen – in der Terraform-eigenen Sprache HCL – werden von Rechnern interpretiert; mit deren Ausführung werden die beschriebenen Ressourcen erzeugt, verwaltet und für die Nutzung freigegeben. Das ist eine große Hilfe für ein automatisiertes Roll-Out und für das Konfigurationsmanagement!

 

Terraform: Radikal vereinfachtes Tool für innovative IT-Landschaften

 

Einen weiteren Vorteil bietet die Grundidee von Terraform, dass die Konfigurationssprache HCL unabhängig vom jeweiligen IaaS-Provider ist (z. B. Oracle Public Cloud, Amazon Web Services oder Google Compute Engine). Durch diese Eigenständigkeit lassen sich Infrastrukturen auf einer höheren Abstraktionsebene providerunabhängig beschreiben.

 

HCL – das Sprachtalent von Terraform

Das Terraform-Tool verarbeitet so genannte Templates. Sie werden in der HashiCorp-Configuration-Language (HCL) entwickelt. HCL ist eine Interpreter-Sprache, die beim Abarbeiten der Templates über Webservice-Aufrufe direkt mit dem IaaS-Anbieter kommuniziert, um die Bereitstellung von Ressourcen durchzuführen. Darüber hinaus erstellt Terraform so genannte State Files, in denen eine aktuelle Momentaufnahme aller Ressourcen gespeichert wird. Dies ermöglicht jederzeit die inkrementelle Änderung an der vorhandenen Infrastruktur, ohne dass ein bestehender Aufbau nach einer Änderung zerstört und neu aufgebaut werden muss.

Für HCL gibt es auch Erweiterungen für Editoren und Entwicklungsumgebungen. Sie ermöglichen z. B. Syntax-Highlighting. Hinzu kommt noch das Kommandozeilen-Tool "terraform", mit dem sich Templates testweise ausführen lassen, bevor geplante Änderungen an der Infrastruktur tatsächlich vorgenommen werden.

Das Terraform-System beruht auf einer schlanken Definitive Software Library (DSL), mit der sich die Konfigurationssprache sehr leicht erlernen, lesen und bearbeiten lässt. Das Modularisierungskonzept ermöglicht die Aufteilung in kleine Subsysteme, die unabhängig voneinander gepflegt werden können. Sogar Skaleneffekte sind langfristig über Auslagerungen von implementierten Modulen möglich, da häufig verwendete Modul-Templates wiederverwendet werden können.

 

IaC-Tools – beinahe wie Heinzelmännchen

Das Terraform-Werkzeug führt nahezu alle Arbeiten beim Aufbau virtueller IT-Landschaften aus – von virtuellen Maschinen im eigenen Rechenzentrum oder bei Cloud-Anbietern (Oracle Public Cloud, AWS von Amazon…) bis hin zu administrativen Aufgaben an Monitoring- oder DNS-Servern. Besondere Vorteile offenbart Terraform beim Management in Multi-Cloud-Umgebungen großer Unternehmen. Denn dort stellt die Verwaltung von Workloads wie virtuelle Maschinen und Speichermedien über mehrere Private und Public Clouds verschiedener Provider hinweg eine besondere Herausforderung dar. Dabei helfen die HashiCorp-Tools, heterogene Cloud-Infrastrukturen zu unterhalten und zu betreiben.

Virtuelle Maschinen manuell mit einem "Master Image" aufsetzen, das war einmal. Mit Terraform/HCL geht das heute per Code bzw. Skripten. Auf diese Weise lassen sich Umgebungen wesentlich agiler und dynamischer gestalten als mit statischen "Golden Images". Der Terraform-Code beschreibt, wie Server und Netzwerkkomponenten aussehen sollen; anhand dieser Vorgaben stehen dann die Umgebungen sofort bereit.

 

… aber nicht leichtsinnig werden!

Den eleganten Vorteilen von Infrastructure as Code stehen potentielle (!) Nachteile gegenüber. Die Handhabung der Codeentwicklung mit HCL und deren Werkzeugen muss durchaus zunächst erlernt werden. In der Lernphase können nämlich Fehler unterlaufen, die sich schnell über Server weiterverbreiten. Programmierfehler lassen sich aber durch Versionskontrollen und ausgiebige Pre-Release-Tests vermeiden. Das ist also ein Muss.

 

Terraform: Radikal vereinfachtes Tool für innovative IT-Landschaften

 

Systemadministratoren dürfen auch keinesfalls Serverkonfigurationen ändern, ohne gleichzeitig den dazugehörigen Terraform-Code anzupassen. Sonst verbreiten sich die Veränderungen ungewollt über das gesamte Netzwerk. Also: Unbedingt die Terraform-Tools mit bindenden Richtlinien, Betriebsvereinbarungen und Verfahrensanweisungen vollständig in die Systemadministration und den laufenden Betrieb integrieren! 

 

Unterm Strich: Mehr Produktivität rund um die IT-Entwicklung

Mithilfe des Terraform-Konzepts werden die Vorteile von Infrastructure as Code effektiver nutzbar:

•     Infrastrukturen lassen sich wie Anwendungscode behandeln.

•     Bewährte Workflows der Softwareentwicklung wie Versionierung, Erweiterungen und Testszenarien sind anwendbar.

•     Testweise Änderungen am Code der Infrastruktur sind im Rahmen einer Continuous Integration Pipeline möglich und jederzeit reproduzierbar, was ein fehlerfreies Roll-Out sicherstellt.

 

Terraform/HCL ist also ein mächtiges und zugleich einfach einsetzbares Tool. Durch das baukastenartige Prinzip sind Infrastrukturen mit in sich geschlossenen Codeblöcken beschreibbar. Wiederkehrende Probleme lassen sich durch den modularen Aufbau in wiederverwendbare Lösungen aufteilen. Und durch die Möglichkeit, den Beschreibungscode auf mehrere Files aufzuteilen, kann man die Infrastruktur übersichtlich darstellen. Im Vergleich zu anderen IaC-Produkten ist HCL intuitiv gut verständlich. Entwickler können so mittels Terraform/HCL ihre Developer-Skills nutzen, um zuverlässig funktionierende Infrastrukturen für die Cloud aufzusetzen und zu managen.

 

Die Terraform-Lösung ist als Open-Source-Version kostenlos auf der Github-Plattform verfügbar. Die Enterprise-Version bietet zusätzliche Funktionen wie die Versionierung mittels Github, Notifications usw. Aktuelle Preise der Enterprise-Edition können online erfragt werden

 

 

Kontakt:

Wenn Sie noch mehr darüber wissen möchten, dann sind wir gerne für Sie da, per LinkedIn, Facebook oder Twitter.

Kommentieren

Kommentare ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha