Depending on how you delete a VM, it may only delete the VM resource, not the networking and disk resources. You can change the default settings for what other resources are deleted when you delete a VM.
To specify what happens to the attached resources when you delete a VM, use the delete-option parameters. Each can be set to either Delete, which permanently deletes the resource when you delete the VM, or Detach which only detaches the resource and leaves it in Azure so it can be reused later. The default for VMs created using the CLI is to detach the OS disk. Resources that you Detach, like disks, will continue to incur charges as applicable.
--os-disk-delete-option - OS disk.
--data-disk-delete-option - data disk.
--nic-delete-option - NIC.
In this example, we create a VM named myVM in the resource group named myResourceGroup using an image named myImage, and set the OS disk and NIC to be deleted when we delete the VM.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--public-ip-sku Standard \
--nic-delete-option delete \
--os-disk-delete-option delete \
--admin-username azureuser \
--generate-ssh-keys
To specify what happens to the attached resources when you delete a VM, use the DeleteOption parameters. Each can be set to either Delete, which permanently deletes the resource when you delete the VM, or Detach which only detaches the resource and leaves it in Azure so it can be reused later. The default for VMs created using PowerShell is for the OS disk to be detached when you delete the VM. Resources that you Detach, like disks, will continue to incur charges as applicable.
The DeleteOption parameters are:
-OSDiskDeleteOption - OS disk.
-DataDiskDeleteOption - data disk.
-NetworkInterfaceDeleteOption - NIC.
In this example, we create a VM and set the OS disk and NIC to be deleted when we delete the VM.
This example shows how to set the data disk and NIC to be deleted when the VM is deleted. Note, the API version specified in the api-version parameter must be '2021-03-01' or newer to configure the delete option.
The following example updates the VM to delete the NIC, OS disk, and data disk when the VM is deleted. Note, the API version specified in the api-version parameter must be '2021-03-01' or newer to configure the delete option.
Force delete allows you to forcefully delete your virtual machine, reducing delete latency and immediately freeing up attached resources. For VMs that don't require graceful shutdown, Force Delete will delete the VM as fast as possible while relieving the logical resources from the VM, bypassing the graceful shutdown and some of the cleanup operations. Force Delete won't immediately free the MAC address associated with a VM, as this is a physical resource that may take up to 10 min to free. If you need to immediately reuse the MAC address on a new VM, Force Delete isn't recommended. Force delete should only be used when you aren't intending to reuse virtual hard disks. You can use force delete through Portal, CLI, PowerShell, and REST API.
You can use the Azure REST API to apply force delete to your virtual machines. Use the forceDeletion parameter for Virtual Machines - Delete.
Force Delete for scale sets
Force delete allows you to forcefully delete your Virtual Machine Scale Set, reducing delete latency and immediately freeing up attached resources. Force Delete won't immediately free the MAC address associated with a VM, as this is a physical resource that may take up to 10 min to free. If you need to immediately reuse the MAC address on a new VM, Force Delete is not recommended. Force delete should only be used when you are not intending to reuse virtual hard disks. You can use force delete through Portal, CLI, PowerShell, and REST API.
You can use the Azure REST API to apply force delete to your scale set. Use the forceDeletion parameter for Virtual Machines Scale Sets - Delete.
FAQ
Q: Does this feature work with shared disks?
A: For shared disks, you can't set the 'deleteOption' property to 'Delete'. You can leave it blank or set it to 'Detach'
Q: Which Azure resources support this feature?
A: This feature is supported on all managed disk types used as OS disks and Data disks, NICs, and Public IPs
Q: Can I use this feature on disks and NICs that aren't associated with a VM?
A: No, this feature is only available on disks and NICs associated with a VM.
Q: How does this feature work with Flexible Virtual Machine Scale Set?
A: For Flexible Virtual Machine Scale Set the disks, NICs, and PublicIPs have deleteOption set to Delete by default so these resources are automatically cleaned up when the VMs are deleted.
For data disks that were explicitly created and attached to the VMs, you can modify this property to ‘Detach’ instead of ‘Delete’ if you want the disks to persist after the VM is deleted.
Q: How do I persist the disks, NIC, and Public IPs associated with a VM?
A: By default, disks, NICs, and Public IPs associated with a VM are persisted when the VM is deleted. If you configure these resources to be automatically deleted, you can update the settings so that the resources remain after the VM is deleted. To keep these resources, set the deleteOption property to Detach.