DevOps-bootcamp · Les

State refactoren met moved en removed

Hernoem en structureer resources veilig opnieuw zonder infrastructuur te vernietigen met state-manipulatiecommando's en de declaratieve blokken moved en removed.

Les 4 van 413 stappen

State refactoren met moved en removed is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Het probleem met hernoemen

Wanneer je een resource in je configuratie hernoemt, ziet Terraform het oude adres verdwijnen en een nieuw adres verschijnen. Standaard zal het de resource vernietigen en opnieuw maken, wat downtime of gegevensverlies kan veroorzaken.

Hulpmiddelen voor het herstructureren van de status laten je Terraform vertellen dat een resource alleen is verplaatst.

De status inspecteren

Begin met het weergeven van wat in de status wordt bijgehouden. De opdracht terraform state list toont elk adres van een beheerde resource.

terraform state list

Imperatieve state mv

De klassieke aanpak is terraform state mv, waarmee het adres van een resource in de status wordt herschreven. Hier hernoemen we een instantie van aws_instance.web naar aws_instance.app.

terraform state mv aws_instance.web aws_instance.app

Het nadeel van state mv

state mv is een handmatige, eenmalige CLI-actie. Deze wordt niet in de code vastgelegd, dus teamleden die dezelfde wijziging op hun computer uitvoeren, moeten dit herhalen. Dat leidt snel tot fouten in samenwerkingsprocessen.

Declaratieve moved-blokken

Het blok moved legt een hernoeming in je configuratie vast. Terraform past dit tijdens het volgende plan automatisch voor iedereen toe; daarna kun je het blok verwijderen.

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

Naar een module verplaatsen

Met moved-blokken kun je resources ook in een module onderbrengen. Het doeladres bevat het modulepad.

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

Verifiëren met een plan

Voer na het toevoegen van een moved-blok terraform plan uit. Bij een correcte verplaatsing zie je geen vernietiging of aanmaak, maar alleen een adreswijziging. Als je nog steeds een vervanging ziet, klopt het blok niet.

terraform plan

Uit de status verwijderen

Soms wil je dat Terraform een resource niet langer beheert zonder de echte infrastructuur te vernietigen. De imperatieve opdracht hiervoor is terraform state rm.

terraform state rm aws_instance.legacy

Declaratieve removed-blokken

Nieuwere versies van Terraform ondersteunen een blok removed. Met lifecycle { destroy = false } vergeet Terraform de resource in de status, maar laat het de echte infrastructuur ongemoeid.

removed {
  from = aws_instance.legacy

  lifecycle {
    destroy = false
  }
}

Statusbestanden opsplitsen

Voor grote projecten kan terraform state mv -state-out resources tussen afzonderlijke statusbestanden verplaatsen. Dat is nuttig wanneer je een monoliet opsplitst in onafhankelijk toegepaste stacks.

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

Back-ups en veiligheid

Terraform schrijft een .backup-bestand voordat het de status wijzigt. Controleer bij externe backends toch altijd of de status niet door een teamgenoot is vergrendeld voordat je handmatige bewerkingen uitvoert, om beschadiging te voorkomen.

Korte controle

Toets je kennis van herstructurering.

Samenvatting: veilige statusherstructurering

Je kunt infrastructuur nu herstructureren zonder deze te vernietigen:

  • state mv / state rm voor imperatieve wijzigingen.
  • moved-blokken voor declaratieve hernoemingen.
  • removed-blokken om resources te vergeten zonder ze te vernietigen.
  • Controleer altijd met een plan waarin geen vervanging wordt getoond.
Gratis beginnen

Leer DevOps-bootcamp met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
142
Lessen
568

Veelgestelde vragen

Is de les “State refactoren met moved en removed” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “State refactoren met moved en removed”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.

Wat leer ik in “State refactoren met moved en removed”?

Hernoem en structureer resources veilig opnieuw zonder infrastructuur te vernietigen met state-manipulatiecommando's en de declaratieve blokken moved en removed. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?

Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “State refactoren met moved en removed”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?

Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Remote state-backends
  2. State vergrendelen en consistentie
  3. Bestaande resources importeren
  4. State refactoren met moved en removed
← Terug naar DevOps-bootcamp