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.
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 listImperatieve 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.appHet 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 planUit 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.legacyDeclaratieve 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.mainBack-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 rmvoor 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.
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
- Remote state-backends
- State vergrendelen en consistentie
- Bestaande resources importeren
- State refactoren met moved en removed