VM stuck in Provisioning state — boot diagnostics unavailable
az vm show returns ProvisioningState = Creating for over 15 minutes
Focused incident mode — strips away everything but this runbook.
Symptoms
- az vm show returns ProvisioningState = Creating for over 15 minutes
- Boot diagnostics screenshot shows blank or no OS boot screen
- VM not reachable via SSH/RDP despite public IP assigned
Most provisioning stalls resolve within 10 minutes. If the boot diagnostics log stays blank beyond 15 minutes, the platform backend is likely under pressure — open a support ticket.
Evidence to grab
Collect these artifacts before you change anything — they prove (or rule out) each cause.
VM provisioning state
az vm show -g <RG> -n <VM-NAME> --query "{state:provisioningState}" -o jsonBoot diagnostics log
az vm boot-diagnostics get-boot-log -g <RG> -n <VM-NAME> --subscription <SUBSCRIPTION>
Diagnostic flow
Run the steps in order, marking each claim confirmed or refuted. The evidence you gather feeds the ranked causes below.
Guided decision tree is ready.
Steps with commands, expected output, and pass/fail branches.
Ranked root causes
Evidence checklist
- ProvisioningState = Creating for 10+ minutes
- Boot diagnostics log is blank
Confirm before fixing
az vm get-instance-view -g <RG> -n <VM-NAME> --query provisioningState -o tsv Inspect provisioning status detail
Expected: Creating
Fix
az vm restart -g <RG> -n <VM-NAME> --query provisioningState -o tsvRestart the VM to retry provisioning
Expected: Succeeded
Resolution runbook
Apply from top to bottom after the cause is confirmed. Review every command before running it — risk tags are shown on each.
az vm get-instance-view -g <RG> -n <VM-NAME> --query "instanceView.statuses[].[code,displayStatus]" -o tableRead current status
az vm boot-diagnostics get-boot-log -g <RG> -n <VM-NAME> -o tsv | tail -50Get serial console output
az vm restart -g <RG> -n <VM-NAME> --query provisioningState -o tsvRestart to retry a stuck provisioning
az vm delete -g <RG> -n <VM-NAME> --yes --no-waitDelete and recreate if stuck beyond recovery
Prevention
- Enable boot diagnostics on all VMs during creation.
- Use marketplace images rather than custom images unless validated.
- Set up Azure Monitor alerts on ProvisioningState != Succeeded.
- Use availability sets/zones to avoid single-stamp dependency.
Related runbooks
Same stack, same failure family — worth a skim.
az vm create returns An operation on target allocation failed
az vm show disk state shows Attaching for more than 5 minutes
Commands marked READ CHANGE DESTRUCTIVE — never run DESTRUCTIVE commands against production data you cannot restore. Copy → verify → execute.