Begriff
Terraform
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Wenn du ein Haus baust, kannst du Stein für Stein mauern (manuell). Oder du hast einen 3D-Drucker, dem du einen Plan gibst, und er druckt das Haus. Terraform ist dieser 3D-Drucker für die Cloud. Du schreibst Code: "Ich will 5 Server und eine Datenbank." Terraform redet mit Amazon (AWS) oder Google (GCP) und baut genau das. Wenn du den Code änderst ("Ich will 6 Server"), baut Terraform den 6. dazu.
Merksatz: Ein Open-Source-Tool für Infrastructure as Code (IaC), das Cloud-Ressourcen sicher und effizient erstellt und verwaltet.
Es ist der Industriestandard. Warum? Weil es Provider-agnostisch ist. Du kannst damit AWS steuern, aber auch Azure, Google Cloud oder sogar deinen lokalen Docker. Befehle:
terraform plan: Zeig mir, was du tun würdest (Vorschau).terraform apply: Mach es! (Baut die Server).terraform destroy: Lösch alles wieder (gut zum Sparen).
1. State File
Terraform merkt sich in einer Datei (terraform.tfstate), was es gebaut hat.
Das ist sein Gedächtnis.
"Ich weiß, dass Server ID-123 mir gehört."
Wenn du diese Datei verlierst, ist Terraform blind und weiß nicht mehr, was es löschen soll. Im Team speichert man den State daher in der Cloud (S3 Backend).
2. Declarative vs. Imperative
Terraform ist deklarativ. Du sagst: "Ich will 3 Server." (Zustand). Du sagst nicht: "Starte Server 1, dann Server 2, dann..." (Befehl). Terraform überlegt selbst, wie es am besten zum Ziel kommt.
1. Der Dependency Graph
Wie weiß Terraform, dass es erst das Netzwerk und dann den Server bauen muss?
Terraform analysiert den Code und baut intern einen Directed Acyclic Graph (DAG).
Wenn in der Server-Ressource steht network_id = aws_vpc.main.id, erkennt Terraform die Abhängigkeit. Es kann dann alle Ressourcen, die nicht voneinander abhängen (z. B. zwei unabhängige Datenbanken), parallel erstellen. Das macht Terraform bei großen Infrastrukturen extrem schnell. Mit terraform graph kann man sich diesen Plan sogar als Bild anzeigen lassen.
2. Provider-Architektur (gRPC)
Terraform ist eigentlich nur eine leere Hülle. Die Intelligenz sitzt in den Providern (AWS, Google, GitHub). Technisch ist jeder Provider ein separates Programm (Binärdatei), das über gRPC (eine schnelle Schnittstelle) mit dem Terraform-Kern kommuniziert. Das hat zwei Vorteile:
- Provider können in einer anderen Geschwindigkeit aktualisiert werden als Terraform selbst.
- Jeder kann einen eigenen Provider schreiben (z. B. um die Kaffeemaschine im Büro per Code zu steuern, sofern sie eine API hat).
3. Workspaces & Environments
In Profi-Setups nutzt man Terraform für Dev, Staging und Production.
Statt den Code dreimal zu kopieren, nutzt man Workspaces.
Ein Workspace erlaubt es, dengleichen Code mit unterschiedlichen Variablen und einem eigenen State File auszuführen.
So stellt man sicher, dass die Infrastruktur in allen Umgebungen exakt identisch aufgebaut ist (Parität), was "In Dev hat es aber funktioniert"-Fehler fast komplett eliminiert.
Quick-Check
Ersetzt Terraform den Admin?
Nein, es ist das Werkzeug des Admins. Statt zu klicken, programmiert er jetzt die Infrastruktur ("DevOps Engineer").Was ist HCL?
HashiCorp Configuration Language. Die "Sprache" von Terraform. Sie sieht aus wie JSON, ist aber einfacher zu lesen.Ist es gefährlich?
Ja! Ein Tippfehler im Code kann dein komplettes Rechenzentrum in Sekunden löschen. Deshalb immer erstterraform planlesen (und Backups haben)!