{vm-name} — Bicep
Deploys a single Linux VM with VNet, subnet, NSG (SSH allow), public IP, and NIC.
Prerequisites
- Azure CLI (
az login) - An existing resource group
- SSH public key at
~/.ssh/id_rsa.pub
Quickstart
az deployment group what-if \
--resource-group {resourceGroup} \
--template-file main.bicep \
--parameters vmName={vmName} adminUsername={adminUsername} adminPublicKey="$(cat ~/.ssh/id_rsa.pub)"
az deployment group create \
--resource-group {resourceGroup} \
--template-file main.bicep \
--parameters vmName={vmName} adminUsername={adminUsername} adminPublicKey="$(cat ~/.ssh/id_rsa.pub)"Parameters
| Name | Required | Default | Notes |
|---|---|---|---|
vmName |
* | — | VM resource name |
adminUsername |
* | — | Linux admin user |
adminPublicKey |
* | — | Contents of id_rsa.pub (secure) |
location |
resourceGroup location | Azure region | |
vmSize |
Standard_D2s_v5 |
Verify availability with compute_vm_list-skus |
|
osDiskSizeGb |
30 |
||
osDiskType |
Premium_LRS |
||
zone |
'' |
1/2/3, or empty for regional |
|
tags |
{} |
Outputs
vmId— full ARM resource IDpublicIpAddress— connect withssh {adminUsername}@{publicIpAddress}
VMSS variant
Swap Microsoft.Compute/virtualMachines for Microsoft.Compute/virtualMachineScaleSets@2024-07-01, add sku: { name: vmSize, capacity: instanceCount }, properties.orchestrationMode: 'Flexible', and move osProfile/storageProfile/networkProfile inside properties.virtualMachineProfile.
Cleanup
az group delete --name {resourceGroup} --yes --no-wait