Infrastructure as Code mit Terraform: Module, State und Environments
Terraform beschreibt Infrastruktur als Code, macht Änderungen planbar und verbindet Architekturentscheidungen mit überprüfbaren Pull Requests.
Grundidee
Terraform verwaltet Ressourcen deklarativ. Plan zeigt Änderungen, Apply setzt sie um, State verbindet Code und Realität.
Module
Module bündeln Ressourcen und reduzieren Wiederholung. Gute Module haben klare Inputs, Outputs, Versionierung und sinnvolle Defaults.
Environments
Dev, Test und Prod sollten strukturell ähnlich, aber kapazitiv unterschiedlich sein. Copy-Paste ohne Modulstruktur führt zu Drift.
State-Sicherheit
State enthält oft sensible Daten und muss geschützt, versioniert, gesperrt und kontrolliert zugänglich sein.
Ausführliche Beispiele
Terraform Modulaufruf
module "network_prod" {
source = "../../modules/network"
environment = "prod"
cidr_block = "10.40.0.0/16"
dmz_subnets = ["10.40.10.0/24", "10.40.11.0/24"]
app_subnets = ["10.40.20.0/24", "10.40.21.0/24"]
data_subnets = ["10.40.30.0/24", "10.40.31.0/24"]
enable_flow_logs = true
dns_zone = "prod.company.example"
tags = {
owner = "platform-team"
cost_center = "IT-PLATFORM"
criticality = "high"
}
}
Backend-Konzept
terraform {
backend "s3" {
bucket = "company-terraform-state"
key = "prod/network/terraform.tfstate"
region = "eu-central-1"
dynamodb_table = "terraform-locks"
encrypt = true
}
}
Output für Übergabe an Ansible/GitOps
output "app_subnet_ids" {
value = module.network_prod.app_subnet_ids
description = "Subnets for application workloads"
}
output "private_dns_zone" {
value = module.network_prod.dns_zone
description = "Internal DNS zone for production"
}
Typische Stolperfallen
- State-Dateien lokal und unverschlüsselt speichern.
- Module werden zu groß und unverständlich.
- Prod unterscheidet sich zufällig von Test.
Prüf- und Verständnis-Checkliste
- Plan ist Pflicht vor Apply.
- State ist geschützt und gesperrt.
- Module haben Versionierung und Beispiele.
Merksatz
Enterprise-Regel: Eine Infrastrukturkomponente ist erst fertig, wenn sie fachlich begründet, automatisiert, beobachtet, geschützt, dokumentiert und wiederherstellbar ist.