criticalIntermediateSymptom-first#vm#provisioning#boot-diagnostics#screenshot

VM stuck in Provisioning state — boot diagnostics unavailable

az vm show returns ProvisioningState = Creating for over 15 minutes

Likely source:availabilitydeployment

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 json
  • Boot 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
READ

Inspect provisioning status detail

Expected: Creating

Fix

az vm restart -g <RG> -n <VM-NAME> --query provisioningState -o tsv
CHANGE

Restart 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.

1
az vm get-instance-view -g <RG> -n <VM-NAME> --query "instanceView.statuses[].[code,displayStatus]" -o table
READ

Read current status

2
az vm boot-diagnostics get-boot-log -g <RG> -n <VM-NAME> -o tsv | tail -50
READ

Get serial console output

3
az vm restart -g <RG> -n <VM-NAME> --query provisioningState -o tsv
CHANGE

Restart to retry a stuck provisioning

4
az vm delete -g <RG> -n <VM-NAME> --yes --no-wait
DESTRUCTIVE

Delete 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.

Commands marked READ CHANGE DESTRUCTIVE — never run DESTRUCTIVE commands against production data you cannot restore. Copy → verify → execute.