Forschen
DE EN

Terraform - Infrastructur as Code

IT-Anforderungen verändern sich

IT ist im Wandel. Während sich in der traditionellen Informationstechnologie Infrastrukturen z.B. aus Firewalls, Servern und Gateways nur langsam verändert haben, sieht die Welt in der Cloud ganz anders aus: dynamische Veränderungen, schnelles Deployment, Testen und Integrieren, Staging und Produktion in unterschiedlichen Umgebungen. Hier kann eine Anforderung sein, kurzfristig aus der vorhandenen Entwicklungsumgebung eine Abnahmeumgebung zu klonen oder unterschiedliche Szenarien in komplett eigenständigen Umgebungen zu testen. Das kann manuell bei eventuell hunderten von Objekten schnell mühsam werden.

Terraform


Hier hilft Terrafom von Hashicorp. Es bietet die gewünschte Flexibilitaet, um eine Infrastuktur schnell zu erstellen, skalieren oder zu ändern. Terraform ist dabei so ausgelegt, dass es mit einer Reihe von Cloudprovidern zusammenspielt. So kann man flexibel entscheiden, ob man z.B. auf Azure, Google Cloud, OpenStack oder Amazon AWS setzen möchte - Terraform kümmert sich um das konkrete und teilweise doch sehr unterschiedliche Deployment.


Wie erreicht Terraform dieses Ziel?

In Terraform wird die komplette zu erstellende Infrastruktur in einer Konfigurationssprache , der HCL (HashiCorp Language) beschrieben. Terraform ermittelt die Abhängigkeiten zwischen den verschiedenen Objekten und erzeugt daraus einen Plan. Dieser Plan wird vom Entwickler/Admin kontrolliert und anschliessend in die Wirklichkeit umgesetzt (apply). Dabei speichert Terraform seinen Status in einem State-File. Wenn dieser in der Cloudumgebung gespeichert wird, steht auch verteiltem Arbeiten mit Terraform nichts im Wege.

Terraform

Änderungen können nun in die Beschreibungsdateien eingebracht werden. Das können die Anzahl der gewünschten Objekte z.B. statt 2 jetzt 5 Api-Server, eine neue Datendisk fuer eine VM oder ein neuer Loadbalancer sein. Mit einem neuen Lauf von Terraform kann die erstellte Umgebung erweitert oder geändert werden. Dabei werden alle in die Beschreibung aufgenommenen Veränderungen dann konkret in die passenden Befehle für die jeweilige Cloud-Umgebung umgesetzt. Auf diese Weise ist auch die Migration von einem Cloud-Anbieter zum anderen viel einfacher möglich, und man vermindert die Abhängigkeit von einzelnen Anbietern.

Terraform hilft, auf wiederholbare Art und Weise, eine Cloudumgebung zu erstellen und zu pflegen. Das erfordert einiges an Einarbeitung. Die Zeit, die man dort investiert, gewinnt man später bei Änderungen, Erweiterungen oder auch beim Disaster Recovery. Dabei sei nicht verschwiegen, dass an Terraform intensiv gearbeitet wird und dadurch Anpassungsaufwand entstehen kann. Dieser hält sich aber, bei geschicktem Design, in Grenzen.


Konfigurations-Verwaltung

Ein Werkzeug, das perfekt zu Terraform passt, ist Ansible. Nach der Installation der Cloudumgebung durch Terraform kann die Konfiguration der neuen Umgebung durch Ansible erfolgen.

Disziplin ist notwendig: Änderungen an der laufenden Infrastruktur darf nur Terraform durchführen. Änderungen an der Konfiguration darf nur Ansible durchführen. So ist gewährleistet, dass alle Anpassungen und die verwalteten Infrastrukturen immer transparent sind und nachvollziehbar bleiben. Am Ende steht so die Wahrheit über Infrastruktur und Konfiguration nachher sicher in meinem Git-Repo.


Terraform im Zusammenspiel mit Ansible schafft die Abstraktion von der konkreten Cloud-Installation und Konfiguration bei einem bestimmten Anbieter und bringt die Flexibilität und Dynamik, die in modernen Cloud-Architekturen unabdingbar wird.

Unsere Erfahrungen sind dabei sehr positiv. Wenn Sie weitere Fragen haben, sprechen sie uns gerne an.

x

Der Job interessiert mich!

Wir haben Deine E-Mail-Adresse erhalten und melden uns kurzfristig bei Dir!