Associate a VM to a capacity reservation group
Applies to: ✔️ Windows Virtual Machines ✔️ Linux Virtual Machines
You can use capacity reservation groups with new or existing virtual machines (VMs). To learn more about capacity reservations, see the Capacity reservation overview.
Associate a new virtual machine
To associate a new virtual machine to the capacity reservation group, the group must be explicitly referenced as a property of the VM. This reference protects the matching reservation in the group for applications and workloads intended to use it.
To add the capacityReservationGroup
property to a VM, construct the following PUT
request to the Microsoft.Compute
provider:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName}?api-version=2021-04-01
In the request body, include the capacityReservationGroup
property:
{
"location": "eastus",
"properties": {
"hardwareProfile": {
"vmSize": "Standard_D2s_v3"
},
…
"capacityReservation":{
"capacityReservationGroup":{
"id":"subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}"
}
"storageProfile": {
…
},
"osProfile": {
…
},
"networkProfile": {
…
}
}
}
Associate an existing virtual machine
For the initial release of a capacity reservation, a virtual machine must be allocated to a capacity reservation:
- Follow guidance to create a capacity reservation group and capacity reservation, if necessary. Or increment the quantity of an existing capacity reservation so there's unused reserved capacity.
- Deallocate the virtual machine.
- Update the capacity reservation group property on the VM.
- Restart the VM.
Follow the steps to associate the virtual machine to a capacity reservation group.
Deallocate the virtual machine:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroupname}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName}/deallocate?api-version=2021-04-01
Add the
capacityReservationGroup
property to the VM. Construct the followingPUT
request toMicrosoft.Compute
provider:PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName}?api-version=2021-04-01
In the request body, include the
capacityReservationGroup
property:{ "location": "eastus", "properties": { "capacityReservation": { "capacityReservationGroup": { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}" } } } }
View VM association with the Instance View
After the capacityReservationGroup
property is set, an association now exists between the VM and the group. Azure automatically finds the matching capacity reservation in the group and consumes a reserved slot. The capacity reservation's Instance View reflects the new VM in the virtualMachinesAllocated
property:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{capacityReservationGroupName}?$expand=instanceView&api-version=2021-04-01
{
"name":"{CapacityReservationGroupName}",
"id":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}",
"type":"Microsoft.Compute/capacityReservationGroups",
"location":"eastus",
"properties":{
"capacityReservations":[
{
"id":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/ {CapacityReservationGroupName}/capacityReservations/{CapacityReservationName}"
}
],
"virtualMachinesAssociated":[
{
"id":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{myVM}"
}
],
"instanceView":{
"capacityReservations":[
{
"name":"{CapacityReservationName}",
"utilizationInfo":{
"virtualMachinesAllocated":[
{
"id":"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{myVM}"
}
]
},
"statuses":[
{
"code":"ProvisioningState/succeeded",
"level":"Info",
"displayStatus":"Provisioning succeeded",
"time":"2021-05-25T15:12:10.4165243+00:00"
}
]
}
]
}
}
}