Menü
Developer

Terraform soll Infrastruktur besser verwaltbar machen

HashiCorp, das Unternehmen, das unter anderem Vagrant entwickelt hat, stellt mit Terraform ein Tool vor, mit dem sich Infrastruktur in Code beschreiben und aus ihm heraus aufbauen lässt.

vorlesen Drucken Kommentare lesen 3 Beiträge

Terraform soll es ermöglichen, Infrastruktur sicher und effizient aufzubauen, sie miteinander zu kombinieren und zur Verfügung zu stellen. Das nun präsentierte Projekt des durch Vagrant bekannten Unternehmens HashiCorp arbeitet mit einer aussagekräftigen Konfigurationssyntax, in der seine Anwender die Einzelteile ihrer Infrastruktur beschreiben. Diese kann sowohl bekannte Dienste oder Projekte als auch In-House-Entwicklungen umfassen. Terraform generiert dann einen Plan mit den nötigen Schritten und führt diesen aus.

Da die Konfiguration deklarativ ist, kann Terraform aus ihr Rückschlüsse auf Abhängigkeiten ziehen und diese Informationen beim Aufbau der Infrastruktur zum Parallelisieren nutzen. In einem Blogeintrag zur Vorstellung kommt folgendes Beispiel einer Konfiguration zum Einsatz:

resource "digitalocean_droplet" "web" { 
name = "tf-web"
size = "512mb"
image = "centos-5-8-x32"
region = "sfo1"
}

resource "dnsimple_record" "hello" {
domain = "example.com"
name = "test"
value = "${digitalocean_droplet.web.ipv4_address}"
type = "A"
}

Im Anschluss kann der Anwender die so beschriebene Struktur mit dem Befehl terraform apply erstellen.

Gegenüber ähnlichen Angeboten soll sich das Projekt vor allem durch die sogenannten Execution Plans abheben. In ihnen ist festgeschrieben, was Terraform an der bestehenden Infrastruktur ändern wird, um den vom Anwender gewünschten Zustand zu erreichen, damit er prüfen kann, dass tatsächlich nur dort Anpassungen vorgenommen werden, wo er es beabsichtigt hat. Außerdem soll Terraform in der Lage sein – wie im obigen Codeausschnitt demonstriert –, mehrere Anbieter in der Infrastruktur zu berücksichtigen, sodass beispielsweise Multi-Cloud Deployment eine Einsatzszenario darstellt.

Als zentrales Feature sieht HashiCorp neben den erwähnten Plänen und der Beschreibung mit Code den Resource Graph, den das Projekt von allen Ressourcen erstellt und zum Parallelisieren unabhängiger Bestandteile während Aufbau- und Modifikationsprozessen einsetzt. Durch diese Mechanismen lassen sich Änderungen an der Infrastruktur mit vergleichsweise wenigen Eingriffen durchführen, was sich positiv auf die Fehleranfälligkeit bei der Umsetzung auswirken kann.

Um sich ein genaueres Bild darüber machen zu können, in welchen Fällen sich der Einsatz von Terraform eignet, ist auf dessen Seite eine Liste mit Use Cases zu finden. Hier sind beispielsweise das Set-up einer Heroku-Anwendung, Multi-Tier Applications und die Konfiguration von Software Defined Networks aufgeführt. Darüber hinaus finden sich hier Informationen über das Zusammenspiel mit Tools des Konfigurationsmanagement wie Chef und Puppet.

Terraform ist unter der Mozilla Public License in Version 2.0 geschützt. Der Quellcode des Projekts ist auf GitHub zu finden. (jul)