0Pricing
DevOps Bootcamp · 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.

State mit moved und removed umstrukturieren ist eine kostenlose DevOps Bootcamp-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 DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-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.

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 DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-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 DevOps Bootcamp 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 DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp 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 DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-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 DevOps Bootcamp