---
id: "azure-virtual-machine"
type: "component"
kind: "virtual-machine"
provider: "azure"
category: "compute"
aliases: "Spot VM, Azure Spot Virtual Machines, Confidential VM"
docs: "https://learn.microsoft.com/en-us/azure/virtual-machines/overview"
url: "https://localhost:3000/catalogue/components/azure-virtual-machine"
---

# Azure Virtual Machines

Linux or Windows machines you boot from an image and patch yourself, on demand or on Spot capacity, optionally confidential.

| | |
|---|---|
| Provider | [azure](https://localhost:3000/catalogue?provider=azure) |
| Kind | [Virtual machine](https://localhost:3000/catalogue/kinds/virtual-machine) |
| Category | Compute |
| Official docs | [https://learn.microsoft.com/en-us/azure/virtual-machines/overview](https://learn.microsoft.com/en-us/azure/virtual-machines/overview) |
| Also known as | Spot VM, Azure Spot Virtual Machines, Confidential VM |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `attestation` | boolean | — | no | — | inherited |
| `capacity` | enum | `on-demand`, `spot` | no | "on-demand" | inherited |
| `confidentialComputingTechnology` | enum | `amd-sev-snp`, `intel-tdx` | no | — | inherited |
| `confidentialOsDiskEncryption` | boolean | — | no | — | inherited |
| `diskEncryption` | boolean | — | no | — | **true** |
| `evictionNoticeSeconds` | integer | — | no | — | inherited |
| `evictionPolicy` | enum | `deallocate`, `delete` | no | — | inherited |
| `instances` | integer | — | no | — | inherited |
| `managed` | boolean | — | no | false | **false** |
| `managedDisks` | boolean | — | no | true | inherited |
| `maxPriceUsd` | string | — | no | — | inherited |
| `memoryEncryption` | boolean | — | no | — | inherited |
| `memoryGib` | integer | — | no | — | inherited |
| `os` | enum | `linux`, `windows`, `aix`, `ibm-i` | no | "linux" | inherited |
| `osDiskSizeGib` | integer | — | no | 127 | inherited |
| `publicIp` | boolean | — | no | — | inherited |
| `secureBoot` | boolean | — | no | — | inherited |
| `securityType` | enum | `standard`, `trusted-launch`, `confidential` | no | "trusted-launch" | inherited |
| `sizeVcpu` | integer | — | no | — | inherited |
| `slaBacked` | boolean | — | no | — | inherited |
| `virtualTpm` | boolean | — | no | — | inherited |
| `zoneRedundant` | boolean | — | no | — | **false** |

Bold values are the ones this component pins.

## Rules that apply · 1

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 60

- [Auto Scaling](https://localhost:3000/catalogue/components/alibaba-auto-scaling.md) `alibaba-auto-scaling` — alibabacloud
- [Elastic Compute Service](https://localhost:3000/catalogue/components/alibaba-ecs.md) `alibaba-ecs` — alibabacloud
- [Edge Node Service](https://localhost:3000/catalogue/components/alibaba-ens.md) `alibaba-ens` — alibabacloud
- [Simple Application Server](https://localhost:3000/catalogue/components/alibaba-simple-application-server.md) `alibaba-simple-application-server` — alibabacloud
- [Amazon EC2](https://localhost:3000/catalogue/components/aws-ec2.md) `aws-ec2` — aws
- [Amazon EC2 Auto Scaling](https://localhost:3000/catalogue/components/aws-ec2-auto-scaling.md) `aws-ec2-auto-scaling` — aws
- [Amazon EC2 Dedicated Hosts](https://localhost:3000/catalogue/components/aws-ec2-dedicated-host.md) `aws-ec2-dedicated-host` — aws
- [Amazon Elastic VMware Service](https://localhost:3000/catalogue/components/aws-evs.md) `aws-evs` — aws
- [Amazon Lightsail](https://localhost:3000/catalogue/components/aws-lightsail.md) `aws-lightsail` — aws
- [AWS Nitro Enclaves](https://localhost:3000/catalogue/components/aws-nitro-enclave.md) `aws-nitro-enclave` — aws
- [Azure BareMetal Infrastructure](https://localhost:3000/catalogue/components/azure-baremetal-infrastructure.md) `azure-baremetal-infrastructure` — azure
- [Azure Compute Fleet](https://localhost:3000/catalogue/components/azure-compute-fleet.md) `azure-compute-fleet` — azure
- [Azure Dedicated Host](https://localhost:3000/catalogue/components/azure-dedicated-host.md) `azure-dedicated-host` — azure
- [Azure Data Science Virtual Machine](https://localhost:3000/catalogue/components/azure-dsvm.md) `azure-dsvm` — azure
- [Nutanix Cloud Clusters on Azure](https://localhost:3000/catalogue/components/azure-nutanix-cloud-clusters.md) `azure-nutanix-cloud-clusters` — azure
- [Azure Virtual Machine Scale Sets](https://localhost:3000/catalogue/components/azure-vm-scale-set.md) `azure-vm-scale-set` — azure
- [Azure VMware Solution](https://localhost:3000/catalogue/components/azure-vmware-solution.md) `azure-vmware-solution` — azure
- [Crusoe Cloud VM](https://localhost:3000/catalogue/components/crusoe.md) `crusoe` — default
- [Firecracker](https://localhost:3000/catalogue/components/firecracker.md) `firecracker` — default
- [Microsoft Hyper-V](https://localhost:3000/catalogue/components/hyper-v.md) `hyper-v` — default
- [KubeVirt](https://localhost:3000/catalogue/components/kubevirt.md) `kubevirt` — default
- [Lambda Cloud instance](https://localhost:3000/catalogue/components/lambda-labs.md) `lambda-labs` — default
- [KVM with libvirt](https://localhost:3000/catalogue/components/libvirt.md) `libvirt` — default
- [Nebius AI Cloud VM](https://localhost:3000/catalogue/components/nebius.md) `nebius` — default
- [Nutanix AHV](https://localhost:3000/catalogue/components/nutanix-ahv.md) `nutanix-ahv` — default
- [OpenStack Nova](https://localhost:3000/catalogue/components/openstack-nova.md) `openstack-nova` — default
- [oVirt](https://localhost:3000/catalogue/components/ovirt.md) `ovirt` — default
- [Proxmox VE](https://localhost:3000/catalogue/components/proxmox.md) `proxmox` — default
- [Runpod Pod](https://localhost:3000/catalogue/components/runpod.md) `runpod` — default
- [Vast.ai instance](https://localhost:3000/catalogue/components/vast-ai.md) `vast-ai` — default
- [Generic virtual machine](https://localhost:3000/catalogue/components/virtual-machine.md) `virtual-machine` — default
- [VMware vSphere](https://localhost:3000/catalogue/components/vsphere.md) `vsphere` — default
- [XCP-ng](https://localhost:3000/catalogue/components/xcp-ng.md) `xcp-ng` — default
- [XenServer](https://localhost:3000/catalogue/components/xenserver.md) `xenserver` — default
- [DigitalOcean Bare Metal GPUs](https://localhost:3000/catalogue/components/digitalocean-bare-metal-gpu.md) `digitalocean-bare-metal-gpu` — digitalocean
- [Droplets](https://localhost:3000/catalogue/components/digitalocean-droplet.md) `digitalocean-droplet` — digitalocean
- [Droplet Autoscale Pool](https://localhost:3000/catalogue/components/digitalocean-droplet-autoscale.md) `digitalocean-droplet-autoscale` — digitalocean
- [Bare Metal Solution](https://localhost:3000/catalogue/components/google-bare-metal-solution.md) `google-bare-metal-solution` — gcp
- [Cloud TPU](https://localhost:3000/catalogue/components/google-cloud-tpu.md) `google-cloud-tpu` — gcp
- [Compute Engine](https://localhost:3000/catalogue/components/google-compute-engine.md) `google-compute-engine` — gcp
- and 20 more: https://localhost:3000/catalogue/kinds/virtual-machine.md

## Use it in a design

```yaml
nodes:
  - { id: "azure-virtual-machine", component: "azure-virtual-machine" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Azure Virtual Machines: a leased machine you boot from an image and keep patching yourself
# ("Overview of virtual machines in Azure"). Managed disks are encrypted at rest with
# platform-managed keys by default ("Server-side encryption of Azure managed disks").
#
# Spot and confidential VMs are this component, not separate ones: both are priced and created as
# Virtual Machines.
#
# capacity: "spot" is Azure Spot Virtual Machines, unused capacity that Azure reclaims with 30
# seconds' notice and no SLA ("About Azure Spot Virtual Machines",
# https://learn.microsoft.com/en-us/azure/virtual-machines/spot-vms). evictionPolicy, maxPriceUsd,
# evictionNoticeSeconds and slaBacked mean something only when capacity is "spot", so none is
# defaulted. Azure's own defaults for a Spot VM: eviction policy Deallocate, max price -1 (never
# evicted for price), 30 seconds' notice, no SLA.
#
# securityType: "confidential" is an Azure confidential VM: memory encrypted in use by the hardware,
# behind a hardware-enforced boundary between the guest and the virtualization stack ("About Azure
# confidential VMs",
# https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview). It boots
# only after successful attestation and carries a dedicated vTPM; confidential OS disk encryption
# is optional and cannot be changed after deployment, and Secure Boot is on only when that
# encryption is selected. confidentialComputingTechnology, memoryEncryption, attestation and
# confidentialOsDiskEncryption mean something only when securityType is "confidential"; virtualTpm
# and secureBoot also apply to "trusted-launch". None is defaulted.
schemaVersion: "1"
type: "component"
id: "azure-virtual-machine"
kind: "virtual-machine"
provider: "azure"
docs: "https://learn.microsoft.com/en-us/azure/virtual-machines/overview"
aliases: ["Spot VM", "Azure Spot Virtual Machines", "Confidential VM"]
defaults:
  managed: false
  diskEncryption: true
  zoneRedundant: false
properties:
  capacity:
    type: "enum"
    values: ["on-demand", "spot"]
    default: "on-demand"
  securityType:
    type: "enum"
    values: ["standard", "trusted-launch", "confidential"]
    default: "trusted-launch"
  osDiskSizeGib:
    type: "integer"
    default: 127
  managedDisks:
    type: "boolean"
    default: true
  evictionPolicy:
    type: "enum"
    values: ["deallocate", "delete"]
  maxPriceUsd:
    type: "string"
  evictionNoticeSeconds:
    type: "integer"
  slaBacked:
    type: "boolean"
  confidentialComputingTechnology:
    type: "enum"
    values: ["amd-sev-snp", "intel-tdx"]
  memoryEncryption:
    type: "boolean"
  attestation:
    type: "boolean"
  virtualTpm:
    type: "boolean"
  confidentialOsDiskEncryption:
    type: "boolean"
  secureBoot:
    type: "boolean"
```

Human page: https://localhost:3000/catalogue/components/azure-virtual-machine
