Terraform in der Praxis: Infrastructure as Code für Ihren IT-Alltag
Fast jedes Unternehmen kennt das:
Ein neuer Server wird gebraucht, jemand klickt sich durch das Cloud- oder VMware-Interface, macht ein paar Screenshots – und hofft, dass man das in einem Jahr noch genauso hinbekommt.
Genau hier setzt Terraform an.
Was ist Terraform – in einem Satz?
Terraform ist ein Infrastructure-as-Code-Tool, mit dem Sie Infrastruktur – ob in der Cloud oder On-Prem – als Code beschreiben, versionieren und automatisiert ausrollen können.
Oder anders gesagt: Statt zu klicken, schreiben Sie eine Art Bauplan – Terraform kümmert sich um den Rest.
Warum Infrastructure as Code überhaupt?
Die Idee hinter Infrastructure as Code (IaC) ist simpel, aber mächtig:
- Nachvollziehbarkeit
Jede Änderung an der Infrastruktur ist als Codeänderung sichtbar – inklusive Historie. - Reproduzierbarkeit
Test, Staging, Produktion: Alle nutzen denselben definierten Zustand. - Automatisierung
Neue Umgebungen können in Minuten statt Tagen erstellt werden. - Teamarbeit
Konfigurationen landen im Git-Repo, PR-Reviews statt „Wer hat da gestern was geklickt?“.
Terraform ist eines der meistgenutzten Werkzeuge in diesem Bereich und unterstützt viele große Cloud-Plattformen (AWS, Azure, GCP, OCI) ebenso wie On-Prem-Umgebungen.
Wie Terraform arbeitet – ganz praktisch
Terraform folgt meist demselben Ablauf:
- Konfiguration schreiben
In der HashiCorp Configuration Language (HCL) beschreiben Sie Ressourcen, z. B. VMs, Netzwerke, Datenbanken. - Plan erstellen (
terraform plan)
Terraform zeigt an, welche Änderungen es durchführen würde – ohne sie direkt umzusetzen. - Änderungen anwenden (
terraform apply)
Die geplanten Ressourcen werden erstellt, geändert oder gelöscht. - State verwalten
Terraform speichert den aktuellen Stand Ihrer Infrastruktur in einem „State“ (lokal oder remote).
Ein stark vereinfachtes Beispiel:
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "main" {
name = "rg-kundenportal-prod"
location = "westeurope"
}
resource "azurerm_linux_virtual_machine" "app" {
name = "vm-kundenportal-01"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
size = "Standard_D2s_v3"
admin_username = "adminuser"
network_interface_ids = [
azurerm_network_interface.app_nic.id
]
os_disk {
caching = "ReadWrite"
storage_account_type = "Premium_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-focal"
sku = "20_04-lts"
version = "latest"
}
}
In der Realität würden Sie natürlich noch Netzwerke, Security-Gruppen, Backup etc. definieren – aber das Grundprinzip bleibt gleich.
Typische Stolpersteine – und wie man sie vermeidet
Auch wenn Terraform vieles einfacher macht, gibt es ein paar Fallstricke, die man kennen sollte:
1. State-Management
Der State ist Terraform’s „Gedächtnis“. Probleme entstehen, wenn:
- mehrere Personen gleichzeitig mit demselben State arbeiten
- der State lokal auf einem Laptop liegt und verloren geht
- Änderungen außerhalb von Terraform (manuell in der Cloud-Konsole) passieren
Besser:
- State konsequent remote lagern (z. B. in einem Storage-Account mit Locking)
- klare Regeln: Änderungen gehen über Terraform, nicht per Klick im Portal
2. Umgebungen trennen
„Wir deployen mal schnell in Produktion, ist ja nur eine Variable“ – ein Satz, den man nicht hören möchte. Besser:
- getrennte States für Dev, Test, Prod
- Umgebungs-Variablen oder Workspaces mit Bedacht nutzen
- ggf. eigene Repositories für sehr kritische Umgebungen
3. Geheimnisse & Zugangsdaten
Access-Keys, Passwörter oder Zertifikate haben im Terraform-Code selbst nichts verloren.
- Secrets in dedizierten Secret-Stores halten (z. B. Key Vault, Secrets Manager)
- Terraform so konfigurieren, dass es Secrets nur referenziert, nicht speichert
Wie Sie mit Terraform in Ihrem Unternehmen starten können
Statt gleich die gesamte Infrastruktur zu migrieren, empfiehlt sich ein konkretes Pilotprojekt:
- Kandidaten auswählen
- z. B. ein neues Projekt, eine Sandbox-Umgebung oder eine klar abgegrenzte Applikation.
- Manuelle Konfiguration in Terraform übersetzen
- Bestehende Ressourcen analysieren
- Schrittweise in Terraform-Ressourcen „nachbauen“
- CI/CD für Infrastruktur aufsetzen
- z. B. Git-Repo + Pipeline, die
terraform planundapplykontrolliert ausführt - Änderungen nur über Pull-Requests
- z. B. Git-Repo + Pipeline, die
- Team befähigen
- Schulung der Admins/DevOps-Engineers
- Coding-Guidelines für Terraform (Module, Naming-Konventionen, Tags)
Aus diesem Pilot können Sie Standards ableiten: Wie sehen unsere Module aus? Wie taggen wir Ressourcen? Wie dokumentieren wir unsere Infrastruktur?
Terraform im Zusammenspiel mit Managed Services & Cloud
Terraform entfaltet seine Stärke insbesondere, wenn:
- Sie mehrere Cloud-Provider oder zusätzlich On-Prem-Ressourcen nutzen
- Sie wiederkehrende Patterns haben (z. B. „Standard-Webanwendung“ mit Load-Balancer, App-VMs, Datenbank, Monitoring)
- Sie Compliance-Vorgaben erfüllen müssen (z. B. reproduzierbare Umgebungen, Audit-Trails)
Ein IT-Systemhaus wie nollbrecht kann hier zwei Rollen einnehmen:
- Plattform-Architekt – gemeinsam mit Ihnen eine wiederverwendbare Terraform-Struktur und Best Practices entwickeln.
- Betriebspartner – Pipelines, State-Management, Security und Monitoring dauerhaft betreuen.
So wird Terraform nicht zum „Hobby-Projekt eines Admins“, sondern zum stabilen Baustein Ihrer gesamten IT-Strategie.
Fazit: Weniger klicken, mehr denken
Terraform nimmt Ihnen nicht das Denken ab – aber es nimmt Ihnen viel wiederholte Klickarbeit und Fehlerquellen ab.
Statt „Wer hat wann was wo eingestellt?“ haben Sie:
- klaren Code,
- nachvollziehbare Änderungen,
- und auf Knopfdruck reproduzierbare Umgebungen.
Gerade im Mittelstand, wo IT-Teams oft klein, aber die Anforderungen groß sind, kann das den Unterschied machen zwischen „Wir kämpfen jeden Tag mit der Infrastruktur“ und „Die Infrastruktur läuft – wir haben Kapazität für echte Innovation“.
Wenn du möchtest, kann ich dir als nächsten Schritt auch noch jeweils Kurzversionen (Teaser) für die Blog-Übersichtsseite oder Social-Media-Snippets zu den drei Artikeln formulieren.
