Michael Bruns Inovex GmbH

Terraform lässt sich im Alltag wunderbar in eine bestehende oder noch aufzubauende Deployment-Pipeline integrieren.

Amazon Web Services (AWS) bietet ein riesiges Portfolio an Diensten und Produkten, die man sich wie in einem Baukasten zusammensetzen und dann miteinander interagieren lassen kann. Als Entwickler klickt man sich für den Aufbau einer solchen Infrastruktur selbstverständlich am liebsten durch ein buntes Web-UI ohne Möglichkeit zur Automatisierung, Versionierung und Replikation – oder etwa nicht?

Die Hürde zum Aufbau einer eigenen Cloud-Infrastruktur war noch nie so niedrig wie heute. Anbieter wie AWS, Microsoft Azure oder Google Cloud Platform stellen eine Vielzahl flexibler, hoch verfügbarer Dienste zur Verfügung, deren Benutzung mithilfe einer leicht verständlichen Weboberfläche, in Tutorials oder Blogartikeln meist sehr anschaulich erklärt wird. Zudem stellen kostenlose oder zumindest stark vergünstigte Testphasen eine praktische Startrampe in die Cloud-Thematik dar, um ohne finanzielles Risiko die ersten Experimente wagen zu können. Möchte man eine der Plattformen dann nach erfolgreichen Experimenten produktiv einsetzen, stellt man allerdings schnell fest, dass sowohl das UI als auch die Testphase eher eine Einstiegsdroge als der Schlüssel zum Erfolg sind. Glücklicherweise gibt es inzwischen verschiedene Tools, die einem das Leben an dieser Stelle erleichtern. In der täglichen Arbeit des Autors hat sich die Kombination aus AWS und Terraform als sehr geeignet erwiesen, weshalb sie hier näher vorgestellt wird.

Was ist Terraform?

Terraform ist ein Open-Source-Tool von Hashi-Corp, geschrieben in Go und verfügbar auf GitHub. Es ermöglicht die deklarative Konfiguration einer Infrastruktur in strukturierten Textdateien, sodass diese wie jeder andere Quellcode in einem Versionskontrollsystem verwaltet werden können. Diese Konfiguration kann verwendet werden, um eine Umgebung zu planen, aufzubauen, zu verändern und auch wieder abzubauen. Listing 1 gibt einen groben Einblick in die Form einer Terraform-Konfiguration, indem es im Frankfurter Rechenzentrum von AWS eine virtuelle Maschine vom Typ t2.micro, basierend auf einem Amazon Machine Image (AMI) mit Ubuntu 16.04 LTS, einrichtet.

Die Verwendung von Terraform ist nicht auf AWS beschränkt. Es kann theoretisch mit jedem Provider funktionieren und auch das eigene Rechenzentrum einrichten. Für die meisten populären Anbieter gibt es bereits vorgefertigte Plug-ins, die aktiv gepflegt werden und an geänderte Bedingungen sowie neue Features angepasst werden. Eigene Plug-ins können selbstverständlich auch beigesteuert und in das Community-Repository aufgenommen werden. Von Tools wie Chef, Puppet etc. grenzt Terraform sich unter anderem dadurch ab, dass diese von der Existenz einer einzurichtenden Maschine ausgehen, während Terraform auch in der Lage ist, virtuelle Maschinen zu provisionieren. Darüber hinaus kann es auch bei verschiedenen IaaS-Anbietern Dienste wie Datenbanken oder Objektspeicher einrichten, wohingegen proprietäre Hilfsmittel wie CloudFormation immer nur auf einen einzigen Anbieter ausgerichtet sind.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin 3.18 - "Automatization Now!"

Alle Infos zum Heft
579835512Infrastructur as Code mit AWS und Terraform
X
- Gib Deinen Standort ein -
- or -