02. Februar 2015

Terraform - Infrastruktur als Code

Terraform

Mit Hilfe von Terraform ist es möglich die Infrastruktur für einzelne Anwendungen oder ganze Rechenzentren als Code zu beschreiben, zu versionieren und bei Bedarf für andere Projekte wiederzuverwenden.

Die Konfiguration der einzelnen Ressourcen erfolgt in Dateien, wie zum Beispiel example.tf und Variablen werden in der Datei variables.tf gespeichert. Sensible Daten sollten jedoch in der Datei terraform.tfvars ausgelagert und von der Versionierung ausgeschlossen werden.

Der Befehl terraform plan erstellt einen sogenannten Execution Plan. Dieser zeigt, welche Änderungen beim Ausführen des Befehls terraform apply vorgenommen werden. Grün, Gelb und Rot stehen jeweils für neue, veränderte oder gelöschte Ressourcen.

Mit dem Befehl terraform apply wird die zuvor definierte Infrastruktur erstellt und deren Status in der Datei terraform.tfstate gespeichert. Ein Blick in die Datei oder der Befehl terraform show geben Auskunft über den aktuellen Status und die jeweiligen Metadaten.

Da es sich um eine deklarative Konfiguration handelt, ist Terraform in der Lage, Abhängigkeiten zu erkennen und diese bei der Ausführung zu berücksichtigen bzw. einzelne Ressourcen parallel zu erstellen.

Für den Fall einer Demo oder einer Entwicklungsumgebung kann die Infrastruktur mit dem Befehl terraform destroy auch wieder gelöscht werden.

Obwohl Amazon Web Services mit CloudFormation eine ähnliche Funktionalität bietet, besticht Terraform durch seine Vielzahl von Providern. Dadurch ist es zum Beispiel möglich, die Infrastruktur auf einen anderen Provider zu migrieren oder sogar mehrere Provider gleichzeitig zu nutzen.

Zum Schluss möchte ich noch auf die verschiedenen Provisioner verweisen, mit deren Hilfe Dateien kopiert oder Befehle ausgeführt werden können. Die Installation zusätzlicher Software oder die Anbindung an Konfigurationsmanagement Tools wie zum Beispiel Chef oder Puppet sind also auch kein Problem.

Das folgende Video zeigt eine ausführliche Demonstration von Terraform:


Zurück


  • Virtualisierung
  • Terraform, Aws, Debian
  • Author:
  • Dennis Hoppe