Bausteine
resource: verwaltetes Objekt (Create/Update/Delete durch Terraform). data: Read-only-Lookup bestehender Objekte. variable: Eingabe pro Root-/Child-Modul. locals: benannte Zwischenwerte, DRY für Ausdrücke. output: Rückgabewerte, Schnittstelle zwischen Modulen und nach außen.
Typen, Validation, sensitive
Typen explizit setzen: string, number,
bool, list(...), map(...),
object({...}), fängt Fehler beim Plan
statt beim Apply.
validation-Block prüft Eingaben mit
condition + error_message.
sensitive = true maskiert Werte im CLI-Output,
entfernt sie aber nicht aus State oder Plan-Datei.
variable "env" {
type = string
validation {
condition = contains(["dev","prod"], var.env)
error_message = "env muss dev oder prod sein."
}
}
locals {
name_prefix = "app-${var.env}"
}
output "lb_dns" {
value = aws_lb.this.dns_name
description = "Public LB-Endpoint"
}