AZURE → STACKIT · CHECKLIST

Migratiechecklist van Azure naar STACKIT

Vierendertig checks in zes fasen, elk gekoppeld aan het bestand waarin een StackToIT-run het antwoord bewaart. De cijfers en bestandsnamen komen uit een assessment van een kleine Azure-omgeving (een scale set, PostgreSQL, Redis, een storage account, Key Vault en een netwerk), uitgevoerd op 4 november 2026; uw omgeving heeft eigen cijfers en dezelfde bestanden.

Wat een run u vertelt vóór de eerste check

Links: drie regels van de consolesamenvatting van de demo-omgeving. Rechts: twee regels uit execution/verify/checks.md, het bestand dat het plan omzet in checks die u kunt afvinken: de eerste uit de lijst 'Before each step', de tweede uit 'After each step'.

Consolesamenvattingconsole output
Source        9 resources · 7 units · visibility: Complete
Migration     6 drafted · 1 need no resource (of 7 units the draft considered)
Attention     7 units to review · 6 open requests (1 block the draft, marked in inputs-template.yaml)
Checks-bestand van de runexecution/verify/checks.md
- [ ] `TF/stackit_valkey_instance.erp` · `variable-supplied` `variable=erp_cache_allowed_cidrs` — The variable `erp_cache_allowed_cidrs` has a value.
- [ ] `TF/stackit_valkey_instance.erp` · `resource-exists` `address=stackit_valkey_instance.erp` — `stackit_valkey_instance.erp` exists in the STACKIT project (OpenTofu's state lists it).
  • Zeven eenheden uit negen resources

    Negen Terraform-resources werden zeven eenheden. Een container of een koppeling wordt samen met de eenheid gelezen waartoe die behoort, dus het aantal eenheden en het aantal resources verschillen bewust.

  • Eén vraag blokkeert het concept

    De run toont zes openstaande vragen en markeert er één als blokkerend. Beantwoord die eerst: die staat in review/inputs.yaml.

  • De checks zijn het plan, afgevinkt

    execution/verify/checks.md bevat een regel voor elke variabele die vóór een stap een waarde moet hebben, en een regel voor elke resource die erna moet bestaan.

Fase 1: Inventarisatie

Wat u aanlevert, en wat de run niet kan zien.

  • Elke Terraform-root staat in de beoordeelde map

    De run leest azurerm- en azapi-code en maakt nooit verbinding met Azure. Wat handmatig of buiten de map is aangemaakt, ziet de run niet. Check: engineering/architect-report.md vermeldt de bronstatus en de gelezen resources.

  • Het lockbestand van de provider is gecommit

    Zonder .terraform.lock.hcl begrenst de run de eenheden van die provider op zekerheidsniveau MEDIUM en markeert hij er geen enkele als geschikt voor geautomatiseerde stappen. Check: de providernotitie bovenaan engineering/architect-report.md.

  • Elke variabele heeft een waarde

    Een eenheid die een niet ingestelde variabele leest, krijgt geen concept, en de run noemt de variabele. Check: de regel Next in de console en het eerste onderdeel van het architectenrapport.

  • Stateful eenheden staan op een lijst

    migration/data-movement.md noemt de eenheden die data bevatten: hier PostgreSQL, Redis en het storage account. Key Vault hoort daar niet bij, dus inventariseer secrets en sleutels apart.

  • Handmatig aangemaakte resources zijn toegevoegd

    Resourcegroepen, policies, roltoewijzingen en Entra-objecten die buiten Terraform bestaan, vereisen een eigen inventaris; exporteer ze naar code of noteer ze handmatig.

Fase 2: Ontwerp

De beslissingen die bepalen wat er gebouwd wordt.

  • De vraag over de regio is beantwoord

    target.region is de enige vraag die het concept blokkeert. Beantwoord die in review/inputs.yaml en voer de run opnieuw uit op dezelfde uitvoermap.

  • Resourcegroepen worden projecten

    STACKIT kent geen resourcegroepen. De werkpakketten in migration/work-packages.csv leggen per eenheid de beslissing vast; kies één projectindeling en beantwoord ze allemaal daarmee.

  • Het netwerkontwerp is gekozen

    Het virtuele netwerk wordt uitgewerkt zonder eigen resource; het adresbereik en de vraag over het Network Area zijn openstaande instellingen. Check: het pakket van de Network Architect.

  • Elke REDESIGN- en MANUAL_REVIEW-eenheid wordt eerst gelezen

    Deze demo heeft er geen: vijf eenheden zijn RECONFIGURE en twee REPLATFORM, alle met zekerheidsniveau MEDIUM. Omgevingen met Entra ID-groepen of Cosmos DB kunnen in REDESIGN terechtkomen; lees die rijen van engineering/review.csv vóór al het andere.

  • De blootstelling van de database is vastgesteld

    De PostgreSQL-bron had openbare netwerktoegang ingeschakeld. Op STACKIT bereiken clients de instance via de toegangslijst, dus de variabele met de toegestane CIDR's is de beheersmaatregel. Die heeft geen standaardwaarde.

  • Secrets en sleutels hebben een eigenaar

    Key Vault wordt een Secrets Manager-instance, met KMS voor sleutels. Het pakket van de Identity Architect bevat de openstaande instellingen.

  • Beslissingen zijn vastgelegd

    Schrijf de beoordeling weg in review/decisions.yaml. Een registratie is de vaststelling dat iemand ernaar heeft gekeken, geen wijziging van het concept.

Fase 3: Bouw

Het concept omzetten in iets wat zonder fouten te plannen is.

  • Variabelen zijn aangeleverd

    Het concept declareert 12 variabelen. review/target-values.tfvars noemt de 9 zonder standaardwaarde, elk met een stub: project-id, image, machinetype, grootte van het bootvolume, Valkey-plan en -versie, PostgreSQL-opslagklasse en de twee lijsten met toegestane CIDR's. Regio, availability zone en nameservers hebben standaardwaarden (eu01, eu01-1, de resolveradressen van STACKIT) die u bevestigt.

  • De opmerkingen over niet overgenomen eigenschappen zijn gelezen

    Elk blok in terraform/ bevat opmerkingen over de instellingen die niet konden worden overgenomen. engineering/not-carried.csv zet ze in één tabel.

  • De providerversie is de beoordeelde versie

    terraform/terraform.tf zet de STACKIT-provider vast waartegen het concept is geschreven. Behoud die versie tot de beoordeling is afgerond.

  • Scale sets zijn begrepen

    De scale set werd een vaste groep van twee servers met een count. STACKIT kent geen scale-set-object, dus capaciteit wijzigt u door de count aan te passen; een affinity group is optioneel.

  • Images bestaan

    De Azure-imageverwijzing wordt niet overgenomen. Kies een openbaar STACKIT-image of importeer een geconverteerd image (raw, qcow2 of iso).

  • Er is nog niets toegepast

    Het concept is bedoeld voor beoordeling. De run past nooit iets toe; toepassen is een stap die een medewerker zet met OpenTofu.

Fase 4: Data

De run toont welke eenheden data bevatten, maar verplaatst die niet.

  • Een mechanisme per stateful eenheid

    Alle drie de eenheden tonen het mechanisme UNKNOWN en de status DECISION_REQUIRED in migration/data-movement.md.

  • RPO, downtime en dataclassificatie zijn vastgelegd

    De run neemt RTO, RPO en toegestane downtime over uit een applicatiebestand (--applications) en registreert ze zoals opgegeven. Zonder die gegevens toont de tabel voor dataverplaatsing NOT_PROVIDED voor dataclassificatie, RPO en downtime, en gaat de run nergens van uit.

  • PostgreSQL heeft een plan voor dump en restore of voor replicatie

    Bijvoorbeeld pg_dump en pg_restore voor een kleine database, logische replicatie voor een korte cutover. Omvang, wijzigingsfrequentie en toegestane downtime bepalen de keuze.

  • Objectdata heeft een kopieerplan, en waar nodig een tweede kopie

    Het storage account van de bron is geo-redundant. STACKIT Object Storage kent geen beheerde replicatie tussen regio's, dus een tweede kopie vereist een eigen synchronisatietaak.

  • De beslissing over Redis is expliciet

    Bouw de cache opnieuw op of neem hem over. Azure exporteert RDB-snapshots alleen vanaf de Premium- en Enterprise-tiers, dus de Standard-cache van deze demo heeft geen exportpad. De STACKIT-back-up wordt hersteld in dezelfde instance; een back-up voor een andere instance wordt gedownload, wat een versleutelingssleutel vereist, en handmatig hersteld.

  • Schijven worden geëxporteerd voordat de VM wordt aangeraakt

    Een VHD kan niet worden gedownload van een schijf die aan een draaiende VM hangt; stop de VM of maak een snapshot. STACKIT importeert raw, qcow2 en iso.

Fase 5: Cutover

Volgorde, namen en de weg terug.

  • De golfvolgorde is geaccepteerd

    migration/technical-sequencing.md zet Key Vault, PostgreSQL, Redis, opslag en het netwerk eerst, het subnet als tweede en de servers als derde. Een golf is een startpunt voor een planning.

  • Namen, adressen en certificaten staan op een lijst

    De run vond in deze bron geen DNS- of certificaatgegevens. Dat betekent niet dat ze er niet zijn: som elke naam, elk adres en elk certificaat op dat clients gebruiken.

  • Clients hebben hun nieuwe inloggegevens

    STACKIT genereert het wachtwoord van de Valkey-inloggegevens; het concept toont het als de gevoelige uitvoer erp_valkey_credential_password, en de state bevat het in platte tekst. De PostgreSQL-gebruiker staat niet in dit concept, dus maak die en het wachtwoord zelf aan. Geef beide aan de clients vóór de omschakeling.

  • Voor elke stap is een rollback uitgeschreven

    Het plan geeft bij de handmatige stappen aan dat het niet weet hoe ze worden teruggedraaid. Leg de weg terug vast, met een eigenaar, voordat het venster opent.

  • Praktijk: verlaag DNS-levensduren vooraf

    Een algemene maatregel, geen uitvoer van de run: verkort de levensduur van records enkele dagen vóór de omschakeling, zodat een rollback snel doorwerkt.

Fase 6: Nazorg

Bewijs, registratie en uitfasering.

  • De checks na de stappen zijn afgevinkt

    Elke resource in execution/verify/checks.md bestaat in het STACKIT-project en de OpenTofu-state vermeldt die.

  • De voortgang wordt bijgehouden

    In review/progress.yaml legt u elke stap vast als in uitvoering, klaar, mislukt of vrijgesteld. Het bestand registreert wat u deed; het bewijst niets.

  • Toegang is per rol getest

    Meld u aan met één principal per rol en bevestig zowel wat werkt als wat wordt geweigerd.

  • De Azure-kant blijft staan tot de checks slagen

    Laat de bron draaien gedurende een afgesproken overlap en faseer hem daarna uit met een eigen ticket.

  • De run wordt herhaald op de definitieve code

    Voer het assessment opnieuw uit na wijzigingen in de Terraform-code, zodat het rapport overeenkomt met wat er bestaat.

Welk bestand beantwoordt welke vraag

VraagBestand in de runWat u vindt
Wat is gelezen en wat is het geworden?assessment.json, migration/source-target.csvEenheid, klasse, zekerheidsniveau, STACKIT-doel
Wat vereist menselijke beoordeling?engineering/architect-report.md, migration/work-packages.csvBeoordelingswachtrij en werkpakketten met eigenaarsrollen
Wat is niet overgenomen?engineering/not-carried.csvInstelling voor instelling, met de reden
In welke volgorde?migration/technical-sequencing.md, migration/waves.csvGolven op basis van afhankelijkheden
Waar verplaatst data zich?migration/data-movement.mdStateful eenheden en het openstaande mechanisme
Wat vink ik af?execution/verify/checks.mdVoor en na elke stap

De bestandsnamen zijn die van de demorun. De set bestanden hangt af van de invoer en de opties van de run.

Vragen over de checklist

Is deze checklist een plan?

Het is de lijst met checks rond een plan. Het plan zelf, met geordende stappen en eigenaren, is execution-plan.json en het migratieplanbestand in de run.

Heb ik een run nodig om de checklist te gebruiken?

Nee, maar elke regel verwijst naar een bestand dat een run schrijft. Zonder run beantwoordt u dezelfde vragen handmatig en bewaart u de antwoorden in uw eigen tracker.

Waarom vraagt de run wie eigenaar is van een beslissing?

Elk werkpakket noemt een rol, zoals Identity Architect of Network Architect, zodat een beoordeling vanaf het begin een eigenaar heeft.

Wat staat er niet op deze checklist?

Contracten, opleiding van medewerkers en applicatietests. Die vallen buiten wat een Terraform-assessment kan zien.

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

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring