AZURERM + AZAPI → STACKIT · HANDLEIDING
AzureRM- en AzAPI-Terraform naar STACKIT: de werkwijze
StackToIT leest Terraform die is geschreven met de provider azurerm of azapi, offline en zonder Azure-account, en schrijft een STACKIT-concept plus de lijst met beslissingen die het niet voor u kan nemen. Deze handleiding doorloopt één demo-omgeving die beide providers combineert, laat zien hoe elk resourcetype wordt gelezen en brengt het beoordelingswerk in volgorde.
Eén commando, één samenvatting
Een voor deze pagina opgestelde demo-omgeving, op 4 november 2026 beoordeeld door StackToIT met de providers azurerm 5.6.0 en azapi 2.12.0. Boven: het commando, met verkort uitvoerpad. Onder: geselecteerde regels van de consolesamenvatting, letterlijk. De demo is uitgevoerd met de optionele bronvalidatie uitgeschakeld.
stacktoit assess . ./stacktoit-out --offline --no-validateSource 5 migration units · visibility: Complete
Target 4 Terraform-only · 0 hybrid · 0 API-only · 0 manual · 1 no resource (of 5 units the draft considered)
STACKIT draft (this folder/terraform): 4 units generated · 1 need no resource · 0 left for the architect · 7 variables
Critical open settings 11 (4 resolved of the 15 the units state)Zeven resources, vijf eenheden
De omgeving bevat een resourcegroep, een netwerk met één subnet, een storage account, een Service Bus-namespace en een Application Insights-component die met azapi zijn geschreven, en één azapi-update. De run groepeert ze in vijf eenheden die worden beoordeeld.
Geen verbinding met Azure
Volgens de StackToIT-documentatie leest StackToIT Terraform die is geschreven met de provider azurerm of azapi en maakt het geen verbinding met een Azure-account. De run heeft de code nodig, geen inloggegevens.
De openstaande instellingen vormen het werk
Elf kritieke instellingen blijven in deze run open; vier van de vijftien die de eenheden vermelden, zijn opgelost. Vijf van de openstaande zijn de scope van de resourcegroep, één per eenheid, voor de Identity Architect; de rest betreft namen, de instellingen van de namespace, het adresbereik en dataresidentie.
azapi-resources erin, STACKIT-resources eruit
Eerste paneel: de drie azapi-resources uit de invoer. Daarna de blokken die de engine voor de eerste twee schreef, één paneel per bestand; de beoordelingsopmerkingen boven elk blok in het bestand zijn hier weggelaten.
resource "azapi_resource" "queue_namespace" {
type = "Microsoft.ServiceBus/namespaces@2024-01-01"
name = "sb-portal-gwc"
location = azurerm_resource_group.app.location
parent_id = azurerm_resource_group.app.id
body = {
sku = {
name = "Standard"
tier = "Standard"
}
properties = {
minimumTlsVersion = "1.2"
}
}
}
resource "azapi_resource" "app_insights" {
type = "Microsoft.Insights/components@2020-02-02"
name = "appi-portal-gwc"
location = azurerm_resource_group.app.location
parent_id = azurerm_resource_group.app.id
body = {
kind = "web"
properties = {
Application_Type = "web"
RetentionInDays = 90
}
}
}
resource "azapi_update_resource" "storage_tls" {
type = "Microsoft.Storage/storageAccounts@2023-05-01"
resource_id = azurerm_storage_account.assets.id
body = {
properties = {
minimumTlsVersion = "TLS1_2"
}
}
}resource "stackit_rabbitmq_instance" "messaging" {
project_id = var.project_id
name = "messaging"
plan_name = var.rabbitmq_plan_name
version = var.rabbitmq_version
parameters = {
sgw_acl = join(",", var.rabbitmq_allowed_cidrs)
}
}resource "stackit_observability_instance" "migrated" {
project_id = var.project_id
name = "migrated-observability"
plan_name = var.observability_plan_name
}De typestring beslist
Een azapi-resource heeft een type zoals Microsoft.ServiceBus/namespaces plus een API-versie, en een body. De run herkent de eenheid aan het type en leest de body voor de instellingen, dus de Service Bus-namespace wordt beoordeeld als Service Bus-namespace.
Gedeelde instances
Beide doelen zijn gedeelde instances: één RabbitMQ-instance voor alle wachtrijen en topics, één Observability-instance voor telemetrie. Wachtrijen en exchanges maakt u zelf aan, en het concept vermeldt dat de gemigreerde alarmen worden herschreven als alertregels.
Waarden zonder standaardwaarde
Het RabbitMQ-plan, de versie en de toegestane CIDR's zijn variabelen zonder standaardwaarde. Bij de versie spreken de catalogus en de lifecycle-pagina van STACKIT elkaar tegen, en het concept benoemt dat verschil in plaats van een keuze te maken.
Hoe de eenheden zijn ingedeeld
Fragment van assessment.json voor vier van de vijf eenheden: de twee azapi-eenheden, het azurerm storage account en het subnet. Per resultaat zijn alleen id, klasse, zekerheidsniveau en doeldienst weergegeven; de waarden zijn zoals de run ze schreef.
[
{
"id": "azapi_resource.queue_namespace",
"result": {
"class": "REPLATFORM",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT RabbitMQ"
}
}
},
{
"id": "azapi_resource.app_insights",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Observability (OpenTelemetry traces, metrics, logs)"
}
}
},
{
"id": "azurerm_storage_account.assets",
"result": {
"class": "REPLATFORM",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT Object Storage"
}
}
},
{
"id": "azurerm_subnet.app",
"result": {
"class": "RECONFIGURE",
"confidence": "MEDIUM",
"target": {
"service": "STACKIT network"
}
}
}
]Hoe elk invoertype wordt gelezen
| Bronresource | STACKIT-doel | Klasse |
|---|---|---|
| azapi_resource, Microsoft.ServiceBus/namespaces | RabbitMQ-instance | Replatforming |
| azapi_resource, Microsoft.Insights/components | Observability-instance | Herconfiguratie |
| azurerm_storage_account | Object Storage-bucket | Replatforming |
| azurerm_subnet | STACKIT-netwerk, hetzelfde IPv4-prefix | Herconfiguratie |
| azurerm_virtual_network | Geen resource; Network Area alleen als netwerken privé moeten routeren | Herconfiguratie |
| azapi_update_resource | Ondersteunende resource: geen eenheid, kritieke instellingen vermeld voor een medewerker | Geen |
Klassen zoals de run ze bepaalde, zekerheidsniveau MEDIUM voor elke eenheid. De updateresource staat onder de ondersteunende resources in terraform/README.md.
De werkwijze in volgorde
Zet de providers vast
Declareer de versies van azurerm en azapi in required_providers en commit het lockbestand. Zonder lockregel waarschuwt de run dat de versie niet is aangetoond en begrenst hij het zekerheidsniveau op MEDIUM.
Beoordeel
Voer het commando uit vanuit de map met de rootmodule. Gebruik de offlineoptie als de machine geen netwerk heeft.
Lees de eerste blokkade
De console noemt de eerste blokkade en de volgende actie met een eigenaarsrol. In deze run wijzen beide naar de Application Insights-eenheid, waarvan de openstaande instelling in decisions.json de scope van de resourcegroep is, met de Identity Architect als eigenaar. Daarnaast markeert inputs-template.yaml de doelregio als de enige vraag die het concept blokkeert: zolang die niet is beantwoord, worden regioafhankelijke vragen afgeleid van de eu01-catalogus.
Beantwoord in het invoerbestand
Kopieer inputs-template.yaml uit de runmap, vul de waarderegels in, zoals de regio, geef het bestand mee met --inputs en voer de run opnieuw uit op dezelfde uitvoermap. De eerdere run wordt vervangen.
Vul de doelwaarden in
Variabelen zonder standaardwaarde, zoals het RabbitMQ-plan en de versie, gaan in de kopie van target-values-template.tfvars; voer de run opnieuw uit en de run schrijft de overgenomen waarden naar terraform/. Een eigen variabelenbestand werkt ook.
Beoordeel de concepten en plan daarna
Lees terraform/ samen met het platformteam en voer daarna tofu init, validate en plan uit in een testproject. StackToIT voert nooit apply uit.
Wat u bij AzAPI mag verwachten
De body is dynamisch
De azapi-provider neemt de requestbody op als dynamische waarde, zodat één resourcetype elke eigenschap van de Azure-API kan dragen. Instellingen komen binnen als geneste sleutels, en de run toont ze in puntnotatie, bijvoorbeeld body.properties.minimumTlsVersion.
Updates zijn geen eigen resources
azapi_update_resource wijzigt eigenschappen van een bestaande resource, en het verwijderen ervan verandert niets. In deze run heeft het geen eenheid; de body, het type en de resource-id staan als instellingen voor een medewerker op een lijst.
De bijbehorende opslaginstelling hangt aan geen enkele eenheid
De update stelt een TLS-minimum in op het storage account, maar de run toont die instelling als door geen enkele eenheid gelezen. Neem hierover zelf een besluit en neem die instelling handmatig over.
Typen die de run niet koppelt
Deze run toont de typen die StackToIT dekt. Komt een azapi-type dat u gebruikt niet in de uitvoer voor, zoek het dan op in de lijst met eenheden en ondersteunende resources van de run voordat u aanneemt dat het is gekoppeld.
Vragen die platformteams stellen
Hebben we Azure-inloggegevens nodig?
Nee. Volgens de StackToIT-documentatie leest StackToIT de Terraform en maakt het geen verbinding met een Azure-account.
Leest StackToIT naast azurerm ook azapi?
Ja. De documentatie noemt beide providers, en deze run beoordeelde azapi-resources voor Service Bus en Application Insights naast azurerm-resources.
Waarom noemt de run een lockbestand?
Zonder regel in het lockbestand kan de run niet aantonen welke providerversie het plan zou gebruiken. Daarom begrenst hij het zekerheidsniveau op MEDIUM en meldt hij dat eenmalig voor de hele omgeving.
Kunnen we het concept direct toepassen?
Nee. Het is een voorstel ter beoordeling. Vul de variabelen in, plan in een testproject en laat eerst een architect over de openstaande instellingen beslissen.
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.