AZURE VIRTUAL MACHINES → STACKIT COMPUTE · HANDLEIDING
Azure Virtual Machines naar STACKIT Compute, stap voor stap
Deze handleiding voert een kleine Azure-omgeving (een Linux-VM met een datadisk, een Windows-VM, één subnet) op 4 november 2026 door StackToIT en volgt de uitvoer bestand voor bestand: de invoer, de twee runs, de STACKIT-server en het volume die de engine opstelt, en de beslissingen over image, grootte en login die bij u blijven.
De handleiding in zes stappen
Elke stap noemt het bestand waarin het antwoord staat, zodat u het op uw eigen Terraform kunt herhalen.
1. Zet de omgeving in één map
StackToIT leest azurerm-Terraform uit een map en maakt nooit verbinding met een Azure-account. De demo is één main.tf met een resourcegroep, een virtueel netwerk, een subnet, een Linux-VM met een beheerde datadisk en een Windows-VM.
2. Voer het assessment uit
Het commando is stacktoit assess met de invoermap en een uitvoermap. Deze handleiding voert het offline uit; OpenTofu-validatie van de bron is uitgeschakeld omdat er geen providermirror beschikbaar was.
3. Lees wat geblokkeerd is
Een variabele zonder waarde houdt de eenheden tegen die de variabele lezen (en alles wat daarvan afhangt). De eerste run noemt de variabele en het bestand dat die nodig heeft, en de console meldt hoeveel eenheden geen concept hebben.
4. Lever de waarde aan en voer opnieuw uit
Een variabelenbestand in de beoordeelde map volstaat. De tweede run stelt alle vier de eenheden op die een STACKIT-resource hebben: subnet, beide VM's en de datadisk.
5. Lees het concept
terraform/compute.tf bevat de servers, het volume en de koppeling. Elk blok heeft beoordelingsopmerkingen bij de instellingen die niet konden worden overgenomen.
6. Beslis en verplaats daarna de schijven
Image, machinetype, opslagklasse, login en licenties zijn variabelen of beslissingen. De datadisk heeft geen gekozen mechanisme: migration/data-movement.md meldt dat, en de verplaatsing plant u zelf.
Stap 3 en 4: een ontbrekende variabele, daarna een volledige run
Dezelfde omgeving, tweemaal beoordeeld. Links: de twee regels van de consolesamenvatting na de eerste run, waarin de variabele voor de SSH-sleutel geen waarde had. Rechts: dezelfde twee regels nadat een terraform.tfvars met demowaarden naast main.tf was geplaatst.
Source 9 resources · 5 units · visibility: Required input missing
Migration 2 drafted · 1 need no resource · 2 have no draft because an input the source needs is not in the package (of 5 units: 3 the draft considered, 2 have no draft)Source 9 resources · 5 units · visibility: Complete
Migration 4 drafted · 1 need no resource (of 5 units the draft considered)Vereiste invoer ontbreekt
De eerste run meldt de bron als onvolledig en stelt 2 van de 5 eenheden op: het subnet en de Windows-VM. De Linux-VM heeft geen concept omdat de SSH-sleutel uit een variabele komt die niemand heeft aangeleverd, en de datadisk heeft er geen omdat die aan die VM hangt. Het architectenrapport noemt de variabele en de regel van main.tf die de variabele leest.
Er wordt niets geraden
De engine verzint geen sleutel om de leemte te omzeilen. De waarden in deze demo zijn plaatshouders die voor deze pagina zijn geschreven. In uw omgeving geeft u het echte variabelenbestand mee met de beoordeelde map, of verklaart u een invoer bewust als vervallen.
De sleutel komt in het concept terecht
De publieke sleutel uit het variabelenbestand wordt als letterlijke waarde in het blok stackit_key_pair geschreven. Behandel de conceptmap als broncode: beoordeel die voordat die wordt gecommit en houd secrets buiten het beoordeelde variabelenbestand.
Stap 5: de Linux-VM wordt een server met een key pair
Links: de azurerm_linux_virtual_machine zoals geschreven. Rechts: de STACKIT-blokken die de engine ervoor opstelde: het key pair, de netwerkinterface van de bron-NIC en de server. De beoordelingsopmerkingen boven elk blok in het bestand zijn in deze paneel weggelaten; de lijst 'Wat de instellingen van de Azure-VM worden' verderop vat ze samen.
resource "azurerm_linux_virtual_machine" "app01" {
name = "vm-billing-app01"
location = azurerm_resource_group.app.location
resource_group_name = azurerm_resource_group.app.name
size = "Standard_D4s_v5"
admin_username = "azureops"
network_interface_ids = [azurerm_network_interface.app01.id]
zone = "1"
admin_ssh_key {
username = "azureops"
public_key = var.admin_public_key
}
os_disk {
caching = "ReadWrite"
storage_account_type = "Premium_LRS"
disk_size_gb = 64
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts-gen2"
version = "latest"
}
}resource "stackit_key_pair" "app01" {
name = "vm-billing-app01-key"
public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDemoKeyForThisGuideOnlyNotARealKey00000 ops@example.org"
}
resource "stackit_network_interface" "app01_1" {
project_id = var.project_id
network_id = stackit_network.vms.network_id
ipv4 = "10.40.1.10"
}
resource "stackit_server" "app01" {
project_id = var.project_id
name = "vm-billing-app01"
machine_type = var.app01_machine_type
availability_zone = var.availability_zone
boot_volume = {
source_type = "image"
source_id = var.app01_image_id
size = 64
delete_on_termination = true
}
keypair_name = stackit_key_pair.app01.name
network_interfaces = [stackit_network_interface.app01_1.network_interface_id]
}De grootte van de bootdisk blijft behouden
De OS-disk van 64 GB wordt het bootvolume met grootte 64. Het bootvolume start vanaf een imagevariabele, dus het image is een waarde die u aanlevert.
De grootte is een variabele, geen gok
Standard_D4s_v5 staat in de variabelenbeschrijving als ongeveer 4 vCPU en 16 GiB. U kiest het STACKIT-machinetype dat daarbij past. De pagina over machinetypen van STACKIT noemt vaste combinaties van vCPU en RAM, en die afzonderlijk aanpassen is niet mogelijk.
De login verhuist naar het image
Een STACKIT key pair bevat alleen een publieke sleutel. De Azure-beheerdersnaam en de afhandeling van het wachtwoord worden niet overgenomen; de gebruiker voor de login komt uit het image of uit cloud-init-data, en het concept meldt dat in het blok.
Het statische adres blijft behouden
De bron-NIC had het statische privéadres 10.40.1.10, en de opgestelde stackit_network_interface neemt dat over als ipv4 in het netwerk dat uit het subnet (10.40.1.0/24) is opgesteld. De NIC van de Windows-VM was dynamisch, dus de interface krijgt geen vast adres.
De datadisk wordt een volume en een koppeling
Uit dezelfde run. Links: de beheerde disk en de koppeling ervan. Rechts: het volume en de koppelingsresource van het concept, zonder hun beoordelingsopmerkingen.
resource "azurerm_managed_disk" "data" {
name = "disk-billing-app01-data"
location = azurerm_resource_group.app.location
resource_group_name = azurerm_resource_group.app.name
storage_account_type = "Premium_LRS"
create_option = "Empty"
disk_size_gb = 256
zone = "1"
}
resource "azurerm_virtual_machine_data_disk_attachment" "data" {
managed_disk_id = azurerm_managed_disk.data.id
virtual_machine_id = azurerm_linux_virtual_machine.app01.id
lun = 0
caching = "ReadOnly"
}resource "stackit_volume" "data" {
project_id = var.project_id
name = "disk-billing-app01-data"
availability_zone = var.availability_zone
size = 256
performance_class = var.data_performance_class
}
resource "stackit_server_volume_attach" "data" {
project_id = var.project_id
server_id = stackit_server.app01.server_id
volume_id = stackit_volume.data.volume_id
}Grootte gekopieerd, eenheid te bevestigen
256 blijft 256. Het concept noteert dat STACKIT de grootte documenteert als GB zonder te zeggen of het GiB of 10^9 bytes betreft, dus controleer de eenheid op het doel voordat er data wordt gekopieerd.
Zone, LUN en caching worden niet overgenomen
Het volume wordt aangemaakt in de zone van de variabele availability_zone, die standaard eu01-1 is. De LUN en de hostcaching ReadOnly hebben geen tegenhanger, dus het gastsysteem moet het volume via de ID vinden en niet via de LUN.
De opslagklasse kiest u zelf
Premium_LRS wordt niet vanzelf gekoppeld aan een prestatieklasse. De variabele data_performance_class somt de klassen van de eu01-catalogus op en valideert uw keuze.
De waarden die het concept aan u overlaat
Links: het demovariabelenbestand dat de Linux-VM in de tweede run vrijmaakte. Rechts: de twee variabelen uit variables.tf van het concept die de Linux-server leest. Geen van beide heeft een standaardwaarde, dus het concept plant pas als u ze instelt.
admin_public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDemoKeyForThisGuideOnlyNotARealKey00000 ops@example.org"
win_admin_password = "placeholder-not-a-secret"variable "app01_image_id" {
type = string
description = "STACKIT image replacing the image of azurerm_linux_virtual_machine.app01, Azure image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest (public image, or an uploaded raw/qcow2 conversion of the VHD)."
}
variable "app01_machine_type" {
type = string
description = "STACKIT machine type replacing azurerm_linux_virtual_machine.app01 (Azure Standard_D4s_v5 ≈ 4 vCPU / 16 GiB). See https://docs.stackit.cloud/products/compute-engine/server/basics/machine-types/"
}Image-id
Gebruik een openbaar STACKIT-image, of de id van een image dat u uit de geconverteerde disk hebt geïmporteerd. Het assessment legt het image vast als een instelling die een medewerker controleert aan de hand van de actuele imagecatalogus voordat de id wordt vastgezet.
Machinetype
Dezelfde logica: de variabelenbeschrijving noemt de brongrootte, en de keuze wordt gemaakt aan de hand van de tabellen met machinetypen.
Hoe de demo-omgeving wordt gekoppeld
| Azure-resource | STACKIT-doel | Migratieklasse |
|---|---|---|
| Virtuele Linux-machine | Compute Engine: server, volumes, netwerkinterface | Herconfiguratie |
| Virtuele Windows-machine | Compute Engine: server, volumes, netwerkinterface | Herconfiguratie |
| Beheerde disk met koppeling | Block Storage: volume en server_volume_attach | Herconfiguratie |
| Subnet | STACKIT-netwerk met hetzelfde IPv4-prefix | Herconfiguratie |
| Virtueel netwerk | Projectnetwerk of Network Area; geen resource opgesteld | Herconfiguratie |
Klassen en zekerheidsniveau (MEDIUM voor alle vijf de eenheden) zoals de run ze bepaalde. De netwerkinterface is geen eigen eenheid: die wordt samen met de server opgesteld die er gebruik van maakt.
Wat de instellingen van de Azure-VM worden
Overgenomen uit de beoordelingsopmerkingen in het concept en de openstaande instellingen van het architectenrapport.
Beheerdersaccount en wachtwoord
Niet overgenomen. stackit_server kent geen beheerdersaccount of wachtwoord. Zet een benoemde gebruiker in het image of in de cloud-init-gebruikersdata.
Diskcaching en opslagtype
Niet overgenomen. Het bootvolume krijgt een grootte; de prestatieklasse kiest u zelf.
Availability zone
Azure-zone 1 wordt niet gekoppeld. De server en het volume staan in de zone van de variabele availability_zone; gebruik een affinity group om servers te spreiden.
Windows-licentie
license_type = Windows_Server staat als niet overgenomen vermeld bij de Windows-server. Hoe Windows-licenties op het doel werken, is een vraag voor uw STACKIT-contract, niet voor de Terraform.
Resourcegroep
STACKIT kent geen resourcegroepen. Elke resource komt in var.project_id terecht, en een medewerker bepaalt hoe groepsgrenzen worden gekoppeld aan projecten en rollen.
De schijven overbrengen
De run schrijft het doel en de volgorde. Hij verplaatst geen data.
Exporteer de disk
Azure kan geen VHD exporteren van een disk die aan een draaiende VM hangt. Stop de VM, of maak een snapshot van de disk en exporteer de snapshot. Een alleen-lezen SAS-URL komt van az disk grant-access, met een levensduur van maximaal 60 dagen, en az disk revoke-access sluit de URL daarna weer.
Converteer
STACKIT importeert raw, qcow2 en iso. Een VHD wordt eerst geconverteerd, bijvoorbeeld met qemu-img. Het convert-commando met -O raw is het commando dat de eigen pagina van STACKIT toont.
Importeer het image
Via de STACKIT IaaS API maakt u een image aan (met de beginstatus queued), uploadt u het bestand naar de upload-URL die de aanroep teruggeeft en controleert u of het image AVAILABLE is voordat u het gebruikt. De gedocumenteerde maximale imagegrootte is 70 GB, dus een grotere systeemdisk vergt een andere route, zoals een opnieuw opgebouwd image.
Maak de server aan
Zet app01_image_id op de nieuwe image-id en voer apply uit. Datavolumes worden leeg aangemaakt en gekoppeld; de data erop kopieert u daarna.
Plan de datakopie
migration/data-movement.md toont de datadisk als stateful eenheid met het mechanisme UNKNOWN. Ingerichte capaciteit (256 GB) is niet de omvang van de data. Wijzigingsfrequentie, toegestane downtime en consistentie bepalen de keuze tussen een kopie op blokniveau, een synchronisatie op bestandsniveau en een export op applicatieniveau.
Beslissingen die de architect neemt
Machinetype per server
Uit de brongrootte en het werkelijke gebruik, niet uit de naam van de Azure-grootte.
Image per server
Een openbaar STACKIT-image of een geïmporteerde conversie; gecontroleerd en daarna vastgezet.
Prestatieklasse
Eén variabele voor de datavolumes, zodat opslag op één plaats wordt bepaald.
Login en hardening
Benoemde gebruikers, SSH-sleutels, wachtwoordbeleid en agents komen uit het image of cloud-init.
Volgorde van de verplaatsingen
De run zet het netwerk eerst, de servers erna en de datadisk als laatste (golf 4). Een planning is aan u.
Vragen over het verplaatsen van Azure-VM's
Converteert StackToIT mijn VHD of kopieert het de data?
Nee. StackToIT leest Terraform en schrijft een STACKIT-concept en een plan. Het maakt nooit verbinding met Azure en verplaatst geen data. Exporteren, converteren, importeren en kopiëren van disks zijn stappen die een medewerker uitvoert.
Waarom krijgt een VM in de eerste run geen concept?
Een variabele die de VM leest, had geen waarde. De engine weigert een eenheid op te stellen waarvan de invoer ontbreekt en noemt de variabele, zodat de leemte zichtbaar is in plaats van met een gok te worden gevuld. Lever een variabelenbestand aan en voer opnieuw uit.
Kan ik de grootte van de Azure-VM behouden?
Niet bij naam. STACKIT-machinetypen zijn een vaste lijst combinaties van vCPU en RAM. Het concept noemt de brongrootte als hint en laat het machinetype aan u over.
Is de Terraform gereed om toe te passen?
Nee. Het is een concept ter beoordeling: image, machinetype en project-id zijn variabelen zonder standaardwaarde, en de openstaande instellingen vereisen eerst een antwoord.
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.