Skip to content

Commit f266b29

Browse files
committed
Add CVM configurable cluster quickstart template with confidentialVmIntent parameter
1 parent 3b05168 commit f266b29

4 files changed

Lines changed: 1373 additions & 0 deletions

File tree

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
description: This template creates a Confidential VM (CVM) ready Azure Stack HCI cluster using an ARM template.
3+
page_type: sample
4+
products:
5+
- azure
6+
- azure-resource-manager
7+
urlFragment: create-cvm-configurable-cluster
8+
languages:
9+
- json
10+
---
11+
# Deploy a Confidential VM (CVM) ready Azure Stack HCI Cluster
12+
13+
## Introduction
14+
15+
Confidential VMs (CVM) offer strong security and confidentiality benefits over standard VMs. CVMs provide a robust hardware-based isolation between other virtual machines, the hypervisor, and host management code.
16+
17+
This template deploys an Azure Stack HCI cluster configured with the `confidentialVmIntent` parameter set to **Enable**, which is required for deploying Confidential VMs on Azure Local.
18+
19+
Without specifying this parameter, the creation of CVMs will fail. Additionally, setting this parameter may slightly impact the CPU performance for some workloads (both CVMs and standard VMs).
20+
21+
[![Deploy To Azure](https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/1-CONTRIBUTION-GUIDE/images/deploytoazure.svg?sanitize=true)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.azurestackhci%2Fcreate-cvm-configurable-cluster%2Fazuredeploy.json)
22+
[![Visualize](https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/1-CONTRIBUTION-GUIDE/images/visualizebutton.svg?sanitize=true)](http://armviz.io/#/?load=https%3A%2F%2Fraw.githubusercontent.com%2FAzure%2Fazure-quickstart-templates%2Fmaster%2Fquickstarts%2Fmicrosoft.azurestackhci%2Fcreate-cvm-configurable-cluster%2Fazuredeploy.json)
23+
24+
## Prerequisites
25+
26+
### Hardware Requirements
27+
28+
CVM deployment has been validated on Lenovo servers with AMD Genoa Gen 4 CPU:
29+
30+
1. ThinkAgile MX455 V3 Edge PR
31+
2. ThinkSystem SR665 V3 Validated Node
32+
33+
### BIOS/UEFI Settings (Lenovo)
34+
35+
Ensure the following BIOS/UEFI settings are applied to enable AMD SEV-SNP:
36+
37+
**Processor Settings:**
38+
- SEV-SNP Support = Enabled
39+
- SNP Memory (RMP Table) Coverage = Disabled
40+
41+
**Memory Settings:**
42+
- SMEE = Enabled
43+
- SEV-ES ASID Space Limit = 1007
44+
- SEV Control = Enabled
45+
46+
### Azure Prerequisites
47+
48+
- Arc-enabled server(s) with mandatory extensions installed
49+
- Register these resource providers:
50+
- Microsoft.HybridCompute
51+
- Microsoft.GuestConfiguration
52+
- Microsoft.HybridConnectivity
53+
- Microsoft.AzureStackHCI
54+
- Note the HCI Resource Provider SPNs Object ID in the tenant
55+
56+
## Deployment
57+
58+
The ARM template includes the `confidentialVmIntent` parameter:
59+
60+
```json
61+
"confidentialVmIntent": {
62+
"defaultValue": "Disable",
63+
"type": "string",
64+
"metadata": {
65+
"description": "Customer Intent to update the ConfidentialVm intent on the cluster or edgeDevice, can be Enable or Disable"
66+
}
67+
}
68+
```
69+
70+
The parameter file sets this to **Enable**:
71+
72+
```json
73+
"confidentialVmIntent": {
74+
"value": "Enable"
75+
}
76+
```
77+
78+
First deploy the template in **Validate** mode to confirm parameters at the device. Once passed, re-deploy with mode set to **Deploy**.
79+
80+
## Post-Deployment: CVM Lifecycle
81+
82+
After the cluster is deployed, follow these steps:
83+
84+
1. **Create and import CVM image** – Prepare an Ubuntu 22.04 VHDX with required packages (`linux-azure`, `libtss2-dev`, `linux-cloud-tools-virtual`, `openssh-server`). Refer to [Prepare an Ubuntu image for Azure Local VMs enabled by Azure Arc](https://learn.microsoft.com/en-us/azure-stack/hci/manage/virtual-machine-image-linux).
85+
86+
2. **Create logical network** – Create or reuse a logical network and virtual NIC. Refer to [Create logical networks](https://learn.microsoft.com/en-us/azure-stack/hci/manage/create-logical-networks) and [Create network interfaces](https://learn.microsoft.com/en-us/azure-stack/hci/manage/create-network-interfaces).
87+
88+
3. **Create Arc-enabled CVM** – Use `az stack-hci-vm` CLI extension (version >= 1.9.1). CVMs can be created with guest management enabled (Mode 5) or disabled (Mode 11) depending on your security requirements.
89+
90+
4. **Verify deployment** – Confirm `"SecurityType": "ConfidentialVM"` and `"ProvisioningState": "Succeeded"`.
91+
92+
5. **Attestation** – Retrieve the Microsoft Azure Attestation (MAA) endpoint of the cluster and verify the CVM using the CVM Attest App.
93+
94+
## References
95+
96+
- [Azure Stack HCI Overview](https://learn.microsoft.com/en-us/azure-stack/hci/overview)
97+
- [Deploy Azure Resources with ARM templates](https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/overview)
98+
- [ARM template deployment for Azure Local](https://learn.microsoft.com/en-us/azure-stack/hci/deploy/deployment-azure-resource-manager-template)
99+
- [Azure Attestation claim sets (SEV-SNP)](https://learn.microsoft.com/en-us/azure/attestation/claim-sets#sev-snp-attestation)
100+
101+
`Tags: Microsoft.AzureStackHCI/clusters, hci, confidential-vm, cvm`

0 commit comments

Comments
 (0)