ORACLE CLOUD → STACKIT · TUTORIAL
De OCI-Terraform-workflow, van rootmodule tot reviewpakket
Deze tutorial brengt een kleine Oracle Cloud-rootmodule van de map op schijf tot de bestanden die uw architecten beoordelen. U legt een lockbestand vast, voert één commando uit, leest de consolesamenvatting, beantwoordt de twee aanvragen die de run als blokkerend markeert en voert de run opnieuw uit. De demo-omgeving is voor deze pagina opgesteld en op 4 november 2026 beoordeeld; elk fragment hieronder is uit die run gekopieerd. Bij een Oracle Cloud-bron classificeert en rangschikt de run elke eenheid; de STACKIT-resources zelf bouwt uw team.
De workflow in zes stappen
De volgorde is minder belangrijk dan de gewoonte om te lezen wat elke stap vastlegt voordat de volgende begint.
1. Het lockbestand vastleggen
StackToIT leest Terraform- en OpenTofu-rootmodules die de provider oracle/oci gebruiken en maakt nooit verbinding met een tenancy. De koppelingen zijn gecontroleerd tegen versie 9.11.0 van die provider. Leg .terraform.lock.hcl naast de module vast in versiebeheer: zonder vermelding voor oci in het lockbestand stelt de run vast dat de providerversie die een plan zou gebruiken niet is bewezen en beperkt die elke eenheid tot zekerheidsniveau MEDIUM.
2. Het assessment uitvoeren
Voer vanuit de map met de module stacktoit assess uit met het pad van de module. De demorun voegde --offline toe, wat uitgaande netwerkverzoeken verbiedt; de documentatie noemt die optie onder de bronopties, samen met --var-file, --provider-mirror en --validate-source.
3. De consolesamenvatting lezen
De samenvatting noemt de gescande resources, de gevonden eenheden en de klassetellingen. In de demo meldde de samenvatting 4 resources: 3 eenheden waarvan het bestaan vaststaat (VCN, subnet, bucket) en 1 voorwaardelijke eenheid, het instanceblok, waarvan het aantal van een variabele afhangt. De volledigheid van de bron is daarom RUNTIME_TOPOLOGY_PARTIAL.
4. De blokkerende aanvragen beantwoorden
De run schrijft inputs-template.yaml. Twee aanvragen zijn als blokkerend gemarkeerd: de STACKIT-regio (eu01 of eu02) en de waarde van de rootvariabele app_names. Kopieer het bestand, vul de waarderegels in en geef het terug met --inputs. Vier andere aanvragen, zoals het doelproject, staan onderaan als niet van toepassing in deze build, elk met de plek waar die instelling in plaats daarvan wordt vastgelegd.
5. Opnieuw uitvoeren op dezelfde uitvoermap
De volgende run leest uw antwoorden. Wilt u beide runs naast elkaar vergelijken, geef dan --keep-previous mee: de documentatie omschrijft die als het bewaren van de eerdere run in OUT/previous-<run id>/. Geef app_names ook mee met --var-file, zodat de instance-eenheid geen vereiste meer is.
6. Het rapport beoordelen en dan bouwen
Open engineering/architect-report.md en migration/technical-sequencing.md. Bij een Oracle Cloud-bron bevat de map terraform/ het STACKIT-Terraform-concept voor uw architecten om te beoordelen; zij initialiseren, valideren en plannen het tegen een testproject. StackToIT zelf voert nooit apply uit.
Een resource gestuurd door een variabele, beoordeeld
Links: het instanceblok van de demo-invoer, precies zoals geschreven. Rechts: het record dat de run ervoor bijhoudt in assessment.json. Drie servers komen uit één blok, dus de eenheid draagt instances: 3 en het record vermeldt waarom die slechts voorwaardelijk is. assessment.json staat op één regel, dus het venster toont geselecteerde velden van elke eenheid, ingesprongen en genest zoals in het bestand, met ongewijzigde waarden.
resource "oci_core_instance" "app" {
for_each = toset(var.app_names)
compartment_id = var.compartment_id
availability_domain = var.availability_domain
display_name = each.key
shape = "VM.Standard.E5.Flex"
shape_config {
ocpus = 1
memory_in_gbs = 8
}
source_details {
source_type = "image"
source_id = var.image_id
}
create_vnic_details {
subnet_id = oci_core_subnet.app.id
}
}{
"id": "oci_core_instance.app",
"presence": "CONDITIONAL",
"presence_cause": {
"kind": "root-variable-overridable",
"where": "for_each",
"expr": "toset(var.app_names)",
"variables": [
"var.app_names"
]
},
"instances": 3,
"wave": 0,
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Compute Engine"
},
"reason": "A compute instance becomes a STACKIT server. The shape becomes a STACKIT flavor, the image is rebuilt or imported, and the attached volumes and network interfaces move with it."
}
}Standaardwaarden worden gelezen, niet vertrouwd
De variabele app_names heeft als standaardwaarde drie namen (web-01, web-02, worker-01), dus de run telt drie instances en legt de status vast als aanwezig op standaardwaarden. Omdat een variabelenbestand, -var of TF_VAR_app_names die standaardwaarde kan overschrijven, wordt de eenheid gemarkeerd als CONDITIONAL met de oorzaak root-variable-overridable.
Een vereiste, geen gok
technical-sequencing.md noemt de eenheid onder de vereisten, buiten de golven, en benoemt de oplossing: lever de variabelewaarde aan met --var-file. De standaardwaarde geldt niet als antwoord en golf 0 in het record betekent dat de eenheid nog aan geen enkele golf is toegewezen.
Klasse en doel blijven leesbaar
De server wordt een STACKIT-server op Compute Engine, klasse RECONFIGURE. De shape wordt een flavor, het image wordt opnieuw gebouwd of geïmporteerd en gekoppelde volumes en netwerkinterfaces verhuizen mee.
Waar elk antwoord in de uitvoermap staat
- index.html
- De weergave per eenheid, offline leesbaar in een browser.
- assessment.json
- Elke eenheid met klasse, zekerheidsniveau, doel, reden, golf, aanwezigheid en de instellingen die aan u zijn overgelaten.
- engineering/architect-report.md
- Per eenheid: doel, reden, kritieke instellingen en waarschuwingen, plus de validatiematrix.
- migration/technical-sequencing.md
- Golven op basis van afhankelijkheden, en de vereisten die geen lid van een golf zijn.
- migration/data-movement.md
- Stateful eenheden waarvoor een persoon een methode voor dataverplaatsing moet kiezen.
- execution/manual/actions.md
- De handmatige stappen, gegroepeerd in werkpakketten met een eigenaar en een voltooiingsvoorwaarde.
- inputs-template.yaml
- De vragen van de run, als stubs om in te vullen en terug te geven.
- review/
- Kopieën om te bewerken: decisions.yaml, inputs.yaml, progress.yaml en target-values.tfvars.
- terraform/
- Het STACKIT-Terraform-concept voor een Oracle Cloud-bron: terraform.tf, variables.tf, een README en het concept voor uw architecten om te beoordelen.
De twee aanvragen die de run blokkeren
Beide stubs komen uit inputs-template.yaml van de demorun. Links: de regio, met de twee opties die de run biedt. Rechts: de waarde van de rootvariabele app_names.
# target.region (TARGET_SELECTION, request state OPEN)
# needed: The STACKIT region the migrated estate is built in.
- id: INP-TSE-1eaf5b60fa62
kind: TARGET_SELECTION
topic: target.region
scope:
profile: default
# options: eu01 | eu02
value: "" # pick one of the options above
# explanation: why you chose this (optional; remove the # to write it)
answered_by: CUSTOMER_ARCHITECT # a role, not a person
answered_at: "2026-11-04" # YYYY-MM-DD
recorded_with:
basis_digest: sha256:94a1663bf63dd33750f12f962a5adedcc2bf291ebf4b101eee03238a48e95e54 # source.variable (SOURCE_PARAMETER, request state OPEN)
# needed: The value the running environment gives the root variable app_names, which the source sets only as a default that a variable file or the command line can override.
- id: INP-SPA-5bd4d3b73362
kind: SOURCE_PARAMETER
topic: source.variable
scope:
profile: default
subject: app_names
value: "" # fill one value
# explanation: why you chose this (optional; remove the # to write it)
answered_by: CUSTOMER_ARCHITECT # a role, not a person
answered_at: "2026-11-04" # YYYY-MM-DD
recorded_with:
basis_digest: sha256:9ba8056e684e8cca3711c1ee31ff62a5a4e562be04ff3b7c83ee925980b200c5Beantwoord eerst de regio
De template zegt het zelf: aanvragen die van de regio afhangen, worden afgeleid uit de catalogus van eu01 totdat de regio is beantwoord. Kiest u eu02, dan wordt een voor eu01 vastgelegd antwoord gemarkeerd als STALE_CATALOG, niet toegepast en opnieuw gevraagd.
Vul één waarde in en laat de koppeling met rust
Een stub die u leeg laat, is geen antwoord en geen fout: de aanvraag blijft openstaan en de antwoorden die u wel hebt ingevuld, blijven gelden. id, kind, topic, scope en recorded_with binden het antwoord aan deze bron en deze kennisbasis; bewerk ze niet.
Rollen, geen personen
answered_by accepteert een rol zoals CUSTOMER_ARCHITECT, en answered_at de dag van het antwoord. In de optionele regel explanation legt u de reden voor een keuze vast voor de volgende beoordelaar.
Wat de vier resources zijn geworden
| OCI-resource | STACKIT-doel | Klasse en golf |
|---|---|---|
| oci_core_vcn.main | STACKIT-netwerk | RECONFIGURE, golf 1 |
| oci_objectstorage_bucket.assets | STACKIT Object Storage | RECONFIGURE, golf 1 |
| oci_core_subnet.app | STACKIT-netwerk | RECONFIGURE, golf 2 |
| oci_core_instance.app (3 instances) | STACKIT Compute Engine | RECONFIGURE, vereiste |
Alle vier hebben zekerheidsniveau MEDIUM: zonder vermelding voor oci in het lockbestand worden eenheden tot dat niveau beperkt. De Oracle Cloud-adapter classificeert en rangschikt de eenheden en het concept in terraform/ is voor uw architecten om te beoordelen.
Wat u wijzigt voordat u iets toepast
Zet de bron vast en valideer die
Leg het lockbestand vast en maak de providerpakketten beschikbaar via --provider-mirror of een plugin-cache; de documentatie vereist ook OpenTofu op het PATH en een sandbox zonder netwerk op de host, en tijdens de validatie wordt niets gedownload. In de demo is de OpenTofu-controle van de bron niet uitgevoerd (LOCK_FILE); de ingebouwde controles zijn geslaagd. Dat is dus geen geslaagde, maar ook geen mislukte controle van de bron.
De provider authenticeren
Wanneer uw team het STACKIT-concept toepast, is een serviceaccount nodig. De documentatie van de STACKIT-provider 0.121.0, de versie die de run vastzet, noemt twee manieren om te authenticeren: workload identity federation en de key flow met een serviceaccountsleutel. De provider probeert eerst workload identity federation en zoekt inloggegevens in het providerblok, dan in omgevingsvariabelen en dan in een bestand met inloggegevens. Configureer ook een state-backend; er is er geen gedeclareerd.
Beslis over de 4 eenheden
Over alle vier beslissen uw architecten: beoordeel het concept voor elk aan de hand van de doelen in het rapport (netwerk, Object Storage, Compute Engine) of leg vast dat een eenheid er geen nodig heeft.
Let op de cijfers
De console meldt dat 12 van de 12 invarianten zijn geslaagd. Lees dat als een controle van de run zelf, niet als een garantie over uw migratie.
Vragen van teams vóór de eerste run
Heeft de run toegang nodig tot onze Oracle Cloud-tenancy?
Nee. De run leest de Terraform- of OpenTofu-bestanden van de rootmodule en maakt geen verbinding met een tenancy. Waarden die pas tijdens de planfase bekend zijn, zoals een overschreven variabele, worden in het antwoordbestand opgevraagd.
Waarom meldt de samenvatting 3 eenheden terwijl 4 resources zijn gescand?
De 3 zijn de eenheden waarvan het bestaan vaststaat: VCN, subnet en bucket, elk met één instance. De vierde resource, het instanceblok, wordt apart geteld als 1 voorwaardelijke eenheid, omdat de for_each ervan van een variabele afhangt. De klassebalk (RECONFIGURE 3) telt alleen de bekende eenheden; de voorwaardelijke eenheid zou ook RECONFIGURE zijn.
Moet OpenTofu geïnstalleerd zijn?
Niet voor het assessment zelf. De documentatie vermeldt dat OpenTofu wordt gebruikt voor bronvalidatie wanneer de sandbox en de providerpakketten beschikbaar zijn. De demorun vond OpenTofu 1.13.1, maar sloeg de bronvalidatie over bij gebrek aan een lockbestand; de ingebouwde controles zijn wel uitgevoerd.
Schrijft de run STACKIT-Terraform voor een Oracle Cloud-bron?
Ja. StackToIT schrijft een STACKIT-Terraform-concept in terraform/ voor uw architecten om te beoordelen, naast de classificatie, de doelen, de golven en de openstaande vragen.
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.