for_each, count, depends_on
for_each über Map/Set: stabile
Keys als Adresse, Einträge löschen
verschiebt keine Nachbarn.
count: nur für identische Kopien oder das
An/Aus-Muster (count = var.enabled ? 1 : 0). Bei
benannten Objekten drohen Index-Shifts.
depends_on: nur wenn die implizite
Abhängigkeit über Referenzen nicht ausreicht (z.B.
IAM-Policy vor Nutzung).
lifecycle
create_before_destroy: Ersatz zuerst hochziehen.
prevent_destroy: Plan schlägt fehl, statt z.B.
eine Datenbank zu löschen.
ignore_changes: einzelne Attribute extern
verwalten lassen, chirurgisch einsetzen.
replace_triggered_by: Ersatz an fremde
Änderung koppeln.
destroy = false (1.16+): Delete wird zu Forget
(bei Replace, entfallenden count/for_each-Instanzen,
destroy); das Objekt bleibt unverwaltet stehen. Wer
den ganzen Block löscht, braucht weiter
removed.
resource "aws_iam_user" "team" {
for_each = toset(["ci", "audit", "ops"])
name = "svc-${each.key}"
}
resource "aws_db_instance" "main" {
# ...
manage_master_user_password = true # Secrets Manager
lifecycle {
prevent_destroy = true
}
}