AZURE → STACKIT · CUTOVER-RUNBOOK
Cutover- en rollbackrunbook van Azure naar STACKIT
Schakel over in de volgorde die de run uit de afhankelijkheden van de resources berekent, geef elke stap een eigenaar en een controle, en weet hoe u de stap ongedaan maakt voordat u apply uitvoert. Dit runbook koppelt de stappen aan de bestanden die een StackToIT-run schrijft en markeert wat algemene praktijk is. De run voert nooit een cutover uit.
Wat de run u geeft, en wat niet
Een kleine portal-omgeving (een VM, PostgreSQL, een storage account, een Key Vault en een netwerk) is op 4 november 2026 beoordeeld. Zes eenheden, drie golven.
Golven op basis van afhankelijkheden
migration/technical-sequencing.md ordent eenheden op basis van hun afhankelijkheden. Eenheden in dezelfde golf kunnen parallel verhuizen. Het is een uitgangspunt, geen planning.
Eigenaren en controles
execution/README.md somt de stappen in volgorde op met een eigenaarsrol, en execution/verify/checks.md noemt controles vóór en na elke stap.
Rollback per stap
Het uitvoeringsplan geeft bij elke OpenTofu-stap aan of die kan worden teruggedraaid. Bij handmatige stappen legt de persoon vast hoe.
Geen cutovergegevens
De run vond geen DNS-record, geen herkoppeling van publieke adressen en geen certificaateenheid om over te schakelen. Dat betekent niet dat er niets hoeft te verhuizen: namen, adressen en certificaten buiten de gescande bron ziet de run niet.
Volgorde en de apply-commando's
Links: de drie golven van de run. Rechts: de commando's die het uitvoeringspakket voor het concept geeft.
## Wave 1 — 4 unit(s)
| Unit | Class | Target |
|---|---|---|
| `azurerm_key_vault.portal` | RECONFIGURE / MEDIUM | STACKIT Secrets Manager (+ KMS for keys) |
| `azurerm_postgresql_flexible_server.portal` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex |
| `azurerm_storage_account.docs` | REPLATFORM / MEDIUM | STACKIT Object Storage |
| `azurerm_virtual_network.app` | RECONFIGURE / MEDIUM | STACKIT project networking / Network Area (SNA) |
## Wave 2 — 1 unit(s)
| Unit | Class | Target |
|---|---|---|
| `azurerm_subnet.vm` | RECONFIGURE / MEDIUM | STACKIT network |
## Wave 3 — 1 unit(s)
| Unit | Class | Target |
|---|---|---|
| `azurerm_linux_virtual_machine.portal` | RECONFIGURE / MEDIUM | STACKIT Compute Engine |cd terraform
tofu init
tofu validate
tofu plan -out=stackit.tfplan
tofu apply stackit.tfplanNiet toepassen zoals het er staat
Alle 7 OpenTofu-stappen van deze run zijn gemarkeerd als niet uitvoerbaar zoals het plan er nu staat, en het pakket adviseert pas toe te passen wanneer elke OpenTofu-stap uitvoerbaar is. Behandel het concept als basis voor een testproject, niet voor het productievenster.
Eerst de variabelen
Zes variabelen hebben een waarde nodig voordat de stappen draaien: de project-id, de toegestane CIDR's voor de database, de opslagklasse, het machinetype, de image-id en de grootte van het bootvolume.
Het runbook
Stappen in volgorde. Eigenaarsrollen zijn die de run noemt. Stappen die als praktijk zijn gemarkeerd, zijn een algemene werkwijze, geen uitvoer van de run.
| Stap | Eigenaar en controle | Rollback |
|---|---|---|
| 1. Rond de kritieke instellingen af. Beslis over de koppeling van resourcegroepen, de databaselogin, netwerkblootstelling, het bootimage en het schijftype. | Identity, Network, Platform en Security Architect. Controle: assurance/critical-semantics.json zegt waarom elke instelling openstaat en wat die sluit. | Er is nog niets aangemaakt; maak de beslissing ongedaan in het beslissingsregister. |
| 2. Zet de projecten op en lever de variabelen. | Identity Architect. Controle: de rijen "variable supplied" van execution/verify/checks.md. | Er is nog niets aangemaakt. |
| 3. Maak het netwerk aan (vanuit het subnet, golf 2), de Secrets Manager-instance en de bucket (eenheden uit golf 1). | Network, Identity, Storage Architect. Controle: de resource bestaat in de state. | tofu destroy -target voor het netwerk en de Secrets Manager-instance; voor de bucket gaan objecten verloren die sindsdien zijn geschreven. |
| 4. Maak de PostgreSQL Flex-instance aan en beperk de ACL. | Data Architect. Controle: de instance bestaat in de state; test dat alleen de opgegeven CIDR's de instance bereiken (praktijk). | tofu destroy -target; data die sindsdien is geschreven, gaat verloren. Zie de opmerking over verwijderen hieronder. |
| 5. Kopieer data (praktijk). De run kiest geen methode. PostgreSQL verhuist met pg_dump en pg_restore of met logische replicatie; objecten met rclone. | Data en Storage Architect. Controle: aantallen rijen en objecten komen overeen (praktijk). | De bron blijft ongemoeid; gooi de kopie weg. |
| 6. Maak secrets opnieuw aan in de Secrets Manager-instance en geef clients hun inloggegevens (praktijk). | Identity Architect. Controle: elke applicatie kan het eigen secret lezen. | Verwijder de secrets die u hebt aangemaakt; de Key Vault staat er nog. |
| 7. Maak de server aan met een key pair en een netwerkinterface (golf 3). Het plan noemt geen eigenaarsrol voor het key pair en de interface; wijs er zelf een toe. | Platform Architect. Controle: de server bestaat in de state; inloggen met de nieuwe sleutel werkt (praktijk). | tofu destroy -target; het bootvolume wordt in het concept samen met de server verwijderd. |
| 8. Oefen de cutover (praktijk). | Platform Architect. Controle: een end-to-endtest slaagt op STACKIT zonder productieverkeer. | Gooi de oefenkopie weg. |
| 9. Schakel over (praktijk). Stel een schrijfstop in, voer de laatste synchronisatie uit, schakel clients om en schakel DNS om als u die beheert. | Alle eigenaren, één leider. Controle: smoke tests, foutpercentages en aantallen in de data. | Richt clients weer op Azure; de bron is niet gewijzigd. |
| 10. Aanhouden en daarna de bron uitfaseren (praktijk). | Platform Architect. Controle: een afgesproken aanhoudperiode verstrijkt zonder rollback. | Na de uitfasering betekent een rollback een herstel, dus houd de periode lang genoeg aan. |
Rij 1 tot en met 4 en 7 volgen de run. Rij 5, 6, 8, 9 en 10 zijn algemene praktijk en hangen af van uw datagrootte en de toegestane downtime, die de bron niet vermeldt. OpenTofu past het hele concept in één run toe en ordent de blokken op hun verwijzingen; om rij 3, 4 en 7 na elkaar aan te maken, gebruikt u zelf -target (praktijk).
Rollback en controles zoals de run ze schrijft
Links: de rollbackvermeldingen van twee OpenTofu-stappen, een fragment van execution-plan.json met de waarden zoals de run ze schreef. Rechts: de controles die het pakket vermeldt voor na de stappen.
{
"actions": [
{
"id": "TF/stackit_network.vm",
"rollback": [
{
"capability": "AVAILABLE",
"how": "tofu destroy -target=stackit_network.vm, or remove the block and apply"
}
]
},
{
"id": "TF/stackit_postgresflex_instance.portal",
"rollback": [
{
"capability": "PARTIAL",
"how": "tofu destroy -target=stackit_postgresflex_instance.portal, or remove the block and apply; what was written to it since it was created is lost"
}
]
}
]
}## After each step
- [ ] `TF/stackit_network.vm` · `resource-exists` `address=stackit_network.vm` — `stackit_network.vm` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_key_pair.portal` · `resource-exists` `address=stackit_key_pair.portal` — `stackit_key_pair.portal` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_secretsmanager_instance.migrated_secrets` · `resource-exists` `address=stackit_secretsmanager_instance.migrated_secrets` — `stackit_secretsmanager_instance.migrated_secrets` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_objectstorage_bucket.docs` · `resource-exists` `address=stackit_objectstorage_bucket.docs` — `stackit_objectstorage_bucket.docs` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_postgresflex_instance.portal` · `resource-exists` `address=stackit_postgresflex_instance.portal` — `stackit_postgresflex_instance.portal` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_network_interface.portal_1` · `resource-exists` `address=stackit_network_interface.portal_1` — `stackit_network_interface.portal_1` exists in the STACKIT project (OpenTofu's state lists it).
- [ ] `TF/stackit_server.portal` · `resource-exists` `address=stackit_server.portal` — `stackit_server.portal` exists in the STACKIT project (OpenTofu's state lists it).AVAILABLE en PARTIAL
AVAILABLE betekent dat het vernietigen van het blok de stap ongedaan maakt (hier 4 stappen). PARTIAL betekent hetzelfde, maar wat er sindsdien in is geschreven, gaat verloren (3 stappen: de bucket, de database en de server). De 14 handmatige stappen worden teruggedraaid door de persoon die ze uitvoert.
Controles zijn bestaanscontroles
De zeven controles achteraf bevestigen dat een resource in de OpenTofu-state bestaat. Ze testen geen data, logins of verkeer, dus voeg uw eigen controles toe.
Rollbackregels om vóór het venster af te spreken
Bepaal het punt waarop terugkeren niet meer kan
Vóór de laatste synchronisatie kunt u alles terugdraaien. Zodra clients naar STACKIT schrijven, betekent een rollback dat u data terugkopieert (praktijk).
Beveilig de database-instance
STACKIT geeft aan dat het verwijderen van een PostgreSQL Flex-instance zonder instance-beveiliging met API v3 onmiddellijk en blijvend dataverlies veroorzaakt. Zet de beveiliging aan voordat u op destroy vertrouwt.
Geen herstel ter plaatse
PostgreSQL Flex herstelt door een back-up in een nieuwe instance te klonen, dus clients moeten daarop worden gericht. Neem dit op in elke herstelstap.
Handmatige stappen vereisen een schriftelijke terugdraaistap
Voor handmatige stappen weet het plan niet hoe die worden teruggedraaid. De persoon die ze uitvoert, legt vast hoe.
Bewaar de bron tot het einde van de aanhoudperiode
Verwijder Azure-resources niet in hetzelfde venster als de cutover (praktijk).
Vragen over cutover en rollback
Voert StackToIT de cutover uit?
Nee. StackToIT schrijft alleen bestanden. Elke stap wordt uitgevoerd door een persoon, door OpenTofu of door een script dat een persoon draait.
Kan ik het concept in het cutovervenster toepassen?
Niet zoals het plan er nu voor staat. De run markeert elke OpenTofu-stap als nog niet uitvoerbaar, en 14 handmatige stappen wachten op mensen. Pas eerst toe op een testproject.
Welke tool verplaatst de data?
De run laat de methode open. De STACKIT-documentatie bevat een tutorial die een bucket met rclone kopieert, en de engine noemt pg_dump en pg_restore of logische replicatie voor PostgreSQL.
Hoe lang moet de aanhoudperiode zijn?
Uw herstelbehoeften bepalen dat. STACKIT documenteert PostgreSQL Flex-back-ups met point-in-time recovery; vergelijk de bewaartermijn daarvan met de periode die u wilt aanhouden.
Bronnen
Uw volgende stap: STACKIT.
Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.
Laat uw gegevens achter, onze specialisten nemen contact met u op.
Liever zelf een e-mail sturen? connect@stacktoit.com
Hartelijk dank.
Uw verzoek is bij ons binnengekomen. Onze specialisten nemen contact met u op.