
Terraform of OpenTofu: stateversleuteling maakt terugkeren lastiger

Veel bestaande Terraform-configuraties kunnen naar OpenTofu. Terugkeren vraagt meer voorbereiding zodra OpenTofu de state versleutelt: Terraform kan die versleutelde state niet rechtstreeks gebruiken. De migratiehandleiding van OpenTofu raadt aan code en state te bewaren, de configuratie te controleren en een kleine wijziging te testen.
Voor platformteams is een geslaagde eerste start dus slechts een deel van de proef. De terugweg moet werken met de state zoals die na een OpenTofu-run bestaat, met dezelfde providers en met alle configuraties die er gegevens uit lezen. Stel OpenTofu-specifieke functies uit totdat die proef is geslaagd; anders kan ook de configuratie vóór terugkeer aanpassing vragen.
Controleer providers, state en de uitvoeringsomgeving

Leg per configuratie de gebruikte Terraform-versie, provider- en moduleversies en hun herkomst vast. Controleer ook de vastgezette providerselectie en eventuele eigen providers. Dat beide tools grotendeels dezelfde configuratietaal gebruiken, garandeert niet dat een providerpakket in de beoogde omgeving beschikbaar is of dat een versie dezelfde uitkomst geeft. Vergelijk daarom plannen met precies de versies die het team wil inzetten.
Breng vervolgens de state-afhankelijkheden in kaart: welke backend bewaart de state, welke configuraties schrijven erin en welke lezen outputs via terraform_remote_state? Neem die afnemers mee in de proef. Een geslaagd plan voor de schrijvende configuratie zegt weinig over een andere configuratie die daarna de bijgewerkte state moet lezen.
Controleer HCP Terraform afzonderlijk als het team dat gebruikt. Noteer of een workspace alleen state levert of ook runs, variabelen, credentials en goedkeuringen verzorgt. Een andere CLI in een eigen pipeline vervangt zulke workspacefuncties niet vanzelf. Controleer in CI bovendien waar het uitvoerbare bestand wordt gekozen, hoe secrets en providercredentials beschikbaar komen, welke stappen nog terraform aanroepen en waar opgeslagen planbestanden terechtkomen.
Houd OpenTofu-specifieke functies buiten de eerste proef

De eerste migratie is het eenvoudigst te beoordelen zolang configuratie en state binnen de gedeelde mogelijkheden blijven. De vergelijking van Spacelift noemt vroege variabele-evaluatie, iteratie over providers en OCI-registerondersteuning als OpenTofu-functies die niet op dezelfde manier in de Terraform-CLI beschikbaar zijn.
Die verschillen raken de terugweg op verschillende plaatsen. Variabelen in een backend- of modulebron kunnen een configuratie opleveren die Terraform eerst moet worden herschreven. Bij provider-iteratie moet het team nagaan hoe dezelfde providerinstanties weer worden geconfigureerd. Een module of provider die via een OCI-register wordt opgehaald, heeft voor Terraform een bruikbare andere bron nodig. Noteer per gekozen functie welke bestanden en pipelines ervan afhankelijk worden; een werkend OpenTofu-plan bewijst de portabiliteit ervan niet.
Planbestanden verdienen dezelfde aandacht als configuratiebestanden. Een plan is gemaakt voor een specifieke tool, configuratie en state op een bepaald moment. Behandel een bestaand plan daarom niet als overdraagbaar bewijs voor een run met de andere tool. Maak na de omschakeling een nieuw plan en beoordeel de voorgestelde wijzigingen voordat een apply volgt.
Voer een proefmigratie én een terugrolproef uit
Gebruik een geïsoleerde omgeving die de beoogde providerselectie, backend en relevante CI-stappen volgt. Bewaar vooraf de configuratie en een veilig opgeslagen kopie van de state, en leg een Terraform-plan vast als uitgangspunt. Initialiseer daarna met OpenTofu en onderzoek onverwachte vervangingen of verwijderingen voordat een wijziging wordt toegepast. Een verschil in het plan kan op een configuratie-, provider- of omgevingsverschil wijzen; de oorzaak moet duidelijk zijn voordat de migratie doorgaat.
Laat de proef verder gaan dan initialiseren. Voer een kleine, beheerste wijziging uit zodat OpenTofu de state daadwerkelijk bijwerkt. Controleer vervolgens of afhankelijke configuraties hun outputs nog kunnen lezen. Gebruik daarna Terraform met de bijgewerkte state en een daarvoor geschikte configuratie om opnieuw een plan te maken. Het gewenste resultaat is een plan zonder onverwachte ingrepen, beoordeeld voor de combinatie van versies en providers die het team werkelijk zal gebruiken.
Herhaal die route via de normale CI-omgeving. Daar kunnen een ontbrekende credential, een andere providerselectie of een hardgecodeerde CLI-aanroep zichtbaar worden die bij een lokale proef niet opvalt. Bewaar de gebruikte versies, configuratie en planuitkomsten bij het migratiebesluit. De proef toont alleen iets aan voor die vastgelegde combinatie; een latere providerupgrade of wijziging van de backend vraagt opnieuw controle.
Versleutel state pas met een herstelroute
OpenTofu kan opgeslagen state en planbestanden versleutelen, ook wanneer de state in een backend staat. De documentatie over stateversleuteling waarschuwt dat bestanden zonder de juiste sleutel niet herstelbaar zijn. Ze adviseert vóór activering een tijdelijke onversleutelde statekopie, sleutelback-ups en een geoefende herstelprocedure.
Voor een bestaande onversleutelde state volstaat het toevoegen van encryptieconfiguratie niet. OpenTofu heeft bij de omzetting tijdelijk een unencrypted-fallback nodig om de oude state te lezen en vervolgens versleuteld weg te schrijven. De terugweg gebruikt het omgekeerde principe: OpenTofu leest de actuele versleutelde state met de oorspronkelijke methode als fallback en schrijft haar met de unencrypted-methode opnieuw weg. De oorspronkelijke encryptiemethode moet beschikbaar blijven totdat die omzetting klaar is.
Een sleutelback-up en een oude statekopie lossen daarbij verschillende problemen op. De sleutel is nodig om de actuele versleutelde state te lezen. De kopie van vóór de overstap kan helpen bij herstel, maar bevat geen infrastructuurwijzigingen die OpenTofu daarna heeft vastgelegd. Beperk de toegang tot de tijdelijke onversleutelde kopie en leg vast hoe een vervangende CI-omgeving de sleutel veilig kan verkrijgen. Als andere configuraties versleutelde remote state lezen, moeten ook hun encryptie-instellingen en toegang in de proef worden meegenomen.
Maak de terugkeer toetsbaar met de actuele state

Een terugrolprocedure begint met het stoppen van schrijvende runs en het veilig bewaren van de nieuwste state. Vergelijk de configuratie en infrastructuurwijzigingen sinds de omschakeling met de oorspronkelijke proef. Terugzetten van alleen de oude state kan recente wijzigingen buiten beeld laten; daarom moet de actuele state het vertrekpunt zijn voor een terugkeer na een geslaagde OpenTofu-apply.
Is die state versleuteld, zet haar dan eerst via OpenTofu met de beschikbare sleutel en encryptiemethode om naar onversleutelde state. Pas daarna komt Terraform weer in beeld. Verwijder of herschrijf OpenTofu-specifieke constructies, regel alternatieve bronnen voor benodigde modules of providers en initialiseer Terraform tegen de bedoelde backend. Laat ook configuraties die remote state lezen een nieuw plan maken. Een apply hoort pas te volgen nadat die plannen zijn beoordeeld en onverwachte wijzigingen zijn verklaard.
De keuze om later stateversleuteling of andere OpenTofu-functies in te schakelen kan dan per functie worden genomen. Voor elk ervan is duidelijk welke afhankelijkheid ontstaat, wie de herstelmiddelen beheert en welke proef laat zien dat de terugweg met een bijgewerkte state nog uitvoerbaar is.
Lees ook:
Gerelateerde artikelen


Joplin of Standard Notes: vrije synchronisatie vraagt handmatige encryptie

Shopify of WooCommerce: gratis software verbergt de onderhoudsrekening

Playwright of Cypress: WebKit en CI-parallellisatie breken de gelijkstand

Versleutel je WhatsApp-back-up, maar bewaar de sleutel niet alleen digitaal

Van reCAPTCHA naar Turnstile: v3 past niet in de compatibiliteitsmodus
Abonneer je op onze nieuwsbrief
Ontvang het laatste nieuws over Web3, AI en crypto rechtstreeks in je inbox.