Terraform Infrastructure as Code · Lektion

State mit moved und removed umstrukturieren

Benennen Sie Ressourcen sicher um und strukturieren Sie sie neu, ohne Infrastruktur zu zerstören – mit State-Manipulationsbefehlen sowie den deklarativen Blöcken moved und removed.

Lektion 4 von 413 Schritte

State mit moved und removed umstrukturieren ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Das Problem beim Umbenennen

Wenn Sie eine Ressource in Ihrer Konfiguration umbenennen, sieht Terraform die alte Adresse als entfernt und eine neue als hinzugefügt. Standardmäßig wird die Ressource zerstört und neu erstellt, was zu Ausfallzeiten oder Datenverlust führen kann.

Tools zur Zustandsrefaktorierung ermöglichen es Ihnen, Terraform mitzuteilen, dass eine Ressource lediglich verschoben wurde.

Zustand untersuchen

Beginnen Sie mit einer Liste der im Zustand erfassten Elemente. Der Befehl terraform state list zeigt die Adresse jeder verwalteten Ressource.

terraform state list

Imperatives state mv

Der klassische Ansatz ist terraform state mv. Damit wird die Adresse einer Ressource im Zustand neu geschrieben. Hier benennen wir eine Instanz von aws_instance.web in aws_instance.app um.

terraform state mv aws_instance.web aws_instance.app

Der Nachteil von state mv

state mv ist eine manuelle, einmalige CLI-Aktion. Sie wird nicht im Code festgehalten, sodass Teammitglieder, die dieselbe Änderung auf ihren Rechnern ausführen, sie wiederholen müssen. Das ist in kollaborativen Arbeitsabläufen fehleranfällig.

Deklarative moved-Blöcke

Der moved-Block hält eine Umbenennung in Ihrer Konfiguration fest. Terraform wendet sie beim nächsten Plan automatisch für alle an; anschließend können Sie den Block entfernen.

moved {
  from = aws_instance.web
  to   = aws_instance.app
}

In ein Modul verschieben

moved-Blöcke unterstützen auch das Verschachteln von Ressourcen in einem Modul. Die Zieladresse enthält den Modulpfad.

moved {
  from = aws_instance.app
  to   = module.compute.aws_instance.app
}

Mit einem Plan überprüfen

Führen Sie nach dem Hinzufügen eines moved-Blocks terraform plan aus. Bei einer korrekten Verschiebung werden weder Zerstörung noch Erstellung angezeigt, sondern nur eine Adressänderung. Wenn weiterhin ein Ersetzen angezeigt wird, ist der Block falsch.

terraform plan

Aus dem Zustand entfernen

Manchmal soll Terraform eine Ressource nicht mehr verwalten, ohne die tatsächliche Infrastruktur zu zerstören. Der imperative Befehl dafür ist terraform state rm.

terraform state rm aws_instance.legacy

Deklarative removed-Blöcke

Neuere Terraform-Versionen unterstützen einen removed-Block. Mit lifecycle { destroy = false } wird die Ressource aus dem Zustand entfernt, während die tatsächliche Infrastruktur unverändert bleibt.

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

Zustandsdateien aufteilen

Bei großen Projekten kann terraform state mv -state-out Ressourcen zwischen separaten Zustandsdateien verschieben. Das ist nützlich, wenn ein Monolith in unabhängig angewendete Stacks aufgeteilt wird.

terraform state mv -state-out=network.tfstate \
  aws_vpc.main aws_vpc.main

Backups und Sicherheit

Terraform schreibt vor einer Änderung des Zustands eine .backup-Datei. Bei Remote-Backends sollten Sie dennoch immer prüfen, dass der Zustand nicht von einem Teammitglied gesperrt ist, bevor Sie manuelle Vorgänge ausführen, um Beschädigungen zu vermeiden.

Kurzer Check

Testen Sie Ihr Wissen zur Refaktorierung des Zustands.

Zusammenfassung: Sichere Zustandsrefaktorierung

Sie können Ihre Infrastruktur nun umstrukturieren, ohne sie zu zerstören:

  • state mv / state rm für imperative Änderungen.
  • moved-Blöcke für deklarative Umbenennungen.
  • removed-Blöcke zum Vergessen von Ressourcen ohne deren Zerstörung.
  • Überprüfen Sie stets mit einem Plan, der kein Ersetzen anzeigt.
Kostenlos starten

Lerne Terraform Infrastructure as Code mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
12
Lektionen
48

Häufig gestellte Fragen

Ist die Lektion „State mit moved und removed umstrukturieren“ kostenlos?

Ja — der vollständige Text von „State mit moved und removed umstrukturieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Terraform Infrastructure as Code-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „State mit moved und removed umstrukturieren“?

Benennen Sie Ressourcen sicher um und strukturieren Sie sie neu, ohne Infrastruktur zu zerstören – mit State-Manipulationsbefehlen sowie den deklarativen Blöcken moved und removed. Du übst Terraform Infrastructure as Code mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Terraform Infrastructure as Code zu starten?

Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „State mit moved und removed umstrukturieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?

Ja. Jede Terraform Infrastructure as Code-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Remote-State-Backends
  2. State-Sperren und Konsistenz
  3. Vorhandene Ressourcen importieren
  4. State mit moved und removed umstrukturieren
← Zurück zu Terraform Infrastructure as Code