# Provisioning

> Every Azure environment carries a set of Azure-specific parameters that control how Cloud Management Platform (CMP) provisions a server

---

Site [llms.txt](/llms.txt)

---

Built-in parameters are added to each Azure environment when CMP imports its region, and appear on the environment's **Azure Parameters** tab. Create optional parameters where you need them: on a group, an environment, or a server.

## Authentication and passwords

Azure requires credentials for every new server. The **Authentication** parameter selects the method: a password, or an SSH key on Linux.

- **Azure Password** must be 8 to 123 characters with a number, an uppercase letter, a lowercase letter, a special character, and no spaces. Windows servers always need one, and there is no default.
- **Azure Key pair name** selects an existing Azure SSH public key to install on the server. You connect with the matching private key. Linux only.

Azure does not accept `root`, `admin`, or `Administrator` as a username. If an order carries one of those, or no username, CMP uses the server owner's CMP username instead and notes the change in the job log.

To set a value once rather than on every order, open **Admin** > **Parameters**, select the parameter, and add a value under **Global Defaults**.

## Managed disks

Servers are provisioned with managed disks unless you enable the **Use custom storage account** parameter, which lets you name an existing Azure storage account or have one created.

### Storage default

Servers use Standard HDD storage unless you set the **Storage type** parameter. The SSD types give better performance on server sizes that support them. CMP imports the available values from Azure, so the list reflects what your subscription offers. See Microsoft's [SKU types](https://learn.microsoft.com/en-us/rest/api/storagerp/srp_sku_types).

### Managed data disks

Add a disk size parameter to the environment for each data disk you want alongside the OS disk. Three ship with CMP, and each label runs one ahead of its name because the OS disk is disk 1:

| Parameter | Name |
| --- | --- |
| **Size for Disk 2** | `disk_1_size` |
| **Size for Disk 3** | `disk_2_size` |
| **Size for Disk 4** | `disk_3_size` |

Managed disks work with an availability set, but an existing set has to match: **Aligned** SKUs take managed disks, **Classic** SKUs take unmanaged. Check the SKU before selecting one. A set CMP auto-creates always matches.

To add or change disks on a server that already exists, see [Modify or add disks](/docs/cmp/configure/infrastructure/resource-handlers/azure/modify-or-add-disks/).

## Azure parameters

### Built-in Azure parameters

These parameters are added to every Azure environment.

| Parameter | Description |
| --- | --- |
| **Availability Set** | A logical grouping of VMs that keeps an application available during Azure updates and maintenance. Choose an existing set, auto-create one, or select "none" to enter your own. Options depend on **Azure Resource Group**, so choose that first. Cannot be combined with **Availability Zone**. |
| **Availability Zone** | A physically separate zone within a region: 1, 2, or 3. Not every server size is offered in every zone. Cannot be combined with **Availability Set**. |
| **Authentication** | How you log in to the server after deployment: password or SSH key. Required. |
| **Azure Key pair name** | An existing Azure SSH public key to install on the server. Linux only. |
| **Create a Public IP Address** | Assigns the server a public IP address. |
| **Use custom storage account** | When enabled, name an existing Azure storage account or let CMP create one. When disabled, Azure manages disks and storage accounts. |
| **Enable Accelerated Networking** | Improves network performance. Supported only on some server sizes: see Microsoft's [supported VM instances](https://docs.microsoft.com/en-us/azure/virtual-network/create-vm-accelerated-networking-powershell#supported-vm-instances). |
| **Encryption at Host** | Encrypts the server's data on the host machine. |
| **Eviction Policy** | How a Spot VM is evicted: Deallocate, which allows redeployment later, or Delete, which removes the VM and its disks. Shown when **Spot Instance** is True. |
| **Eviction Type** | What triggers eviction: Capacity, when Azure needs the compute capacity elsewhere, or Price, when Azure needs the capacity or the cost passes your **Maximum Price**. Shown when **Spot Instance** is True. |
| **Maximum Price** | The highest hourly price in USD you will pay for the server. Shown when **Eviction Type** is Price. |
| **Node Size** | The Azure VM size, synced from the subscription. Options depend on **Storage type**, so choose that first. |
| **OS Disk Size** | The size of the OS disk in gigabytes. Must be at least the image's default size. |
| **Azure Password** | The server's password, in the format described under Authentication and passwords above. |
| **Platform Fault Domain Count** | The number of fault domains to use, from 1 to 3 depending on the region. |
| **Azure Resource Group** | The resource group to provision into, or auto-create a new one. |
| **Azure Resource Group Template** | Names a resource group that CMP auto-creates. See [Azure Resource Group Template](#azure-resource-group-template) below. |
| **Security Encryption Type** | The security encryption type for an Azure Generation 2 confidential VM. Shown when **Security Type** is `ConfidentialVM`. |
| **Security Type** | The security type for an Azure Generation 2 confidential VM. Leave it unset to let Azure apply its default. |
| **Spot Instance** | Set to True to use an [Azure Spot VM](https://learn.microsoft.com/en-us/azure/virtual-machines/spot-vms), which costs less but can be interrupted. |
| **Azure Storage Account** | Where to store the server's disks, or auto-create one. |
| **Storage type** | The storage type for the server's OS disk. Controls which values **Node Size** offers. |

#### Azure Resource Group Template

A resource group template names the resource group CMP creates when an order selects **Auto-create New Resource Group**. Without a template, CMP uses its default naming. Selecting an existing resource group overrides any template.

**Auto-create New Resource Group** can be preset on a blueprint under Configure Environment, or left for the user to select at order time.

<div class="alert alert-info" role="alert">


In an environment upgraded from an earlier version, the parameter may not yet be present. **Import parameters from *handler name*** on the Azure Parameters tab adds it, and replaces every existing parameter option in that environment.
</div>


To create a resource group template:

1. Open your Azure environment and select the **Azure Parameters** tab.
1. Select the **Azure Resource Group Template** parameter by name.
1. Enable **Required**, so that an order cannot be submitted without a value.
1. Return to the **Azure Parameters** tab and select the edit icon in the **Actions** column for that parameter.
1. Add a template option, for example `production`, and select **Save**.

On the order form, select **Auto-create New Resource Group**. The server is created in a resource group named from the template.

### Optional Azure parameters

These parameters ship with CMP but are not added to Azure environments. Add the ones you need to a group, an environment, or a server.

| Parameter | Name | Description | Type |
| --- | --- | --- | --- |
| **Azure License Type** | `license_type` | Brings an Azure "bring your own license" value, such as `Windows_Server`, from the order form into provisioning. | String |
| **Availability Set Name** | `azure_availability_set_name` | Names an availability set that CMP creates, in place of its default naming. | String |
| **Deallocate with power off** | `deallocate_with_power_off` | When True, powering a server off also deallocates it. That stops compute charges and releases the public and internal IP addresses. | Boolean |
| **Delete Empty Azure Resource Group** | `delete_resource_group_arm` | When True, deleting a server also deletes its resource group if nothing is left in it. | Boolean |
| **Skip Creation of Security Group** | `skip_security_group` | When True, the server gets no network security group of its own. The subnet's security group still applies. | Boolean |

The parameters controlling host caching, storage account, and storage type for data disks are documented in [Modify or add disks](/docs/cmp/configure/infrastructure/resource-handlers/azure/modify-or-add-disks/).

## Related

- [Azure](/docs/cmp/configure/infrastructure/resource-handlers/azure/): create the resource handler and import the regions these environments come from.
- [Modify or add disks](/docs/cmp/configure/infrastructure/resource-handlers/azure/modify-or-add-disks/): add data disks to an existing server, and the parameters that control them.
- [Import images](/docs/cmp/configure/infrastructure/resource-handlers/azure/import-images/): make Azure images available to provision from.
- [Azure Load Balancer](/docs/cmp/configure/infrastructure/resource-handlers/azure/load-balancer/): put a load balancer in front of a server tier.
