IaC / Framework

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.

Diagramm

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.