Skip to main content
Version: 1.0.0

Task 11: Deploy Management VMs

Runbook Azure

DOCUMENT CATEGORY: Runbook
SCOPE: Management VM provisioning
PURPOSE: Deploy all management VMs from Azure Marketplace images
MASTER REFERENCE: Microsoft Learn - Create VM

Status: Active

Overview

This task deploys all five management VMs needed for the Azure Local environment. Each VM is deployed from Azure Marketplace images into the management subnet. OS-level configuration (AD DS, utilities, etc.) is handled in Tasks 12–16.

Task Classification

Execution Target: Azure-Only (control-plane API operation) Tab Profile: 3 tabs — Azure Portal · Azure CLI / PowerShell · Standalone Script

Admin Credentials

VM admin passwords are stored in Key Vault. Never hardcode passwords. Retrieve the admin password from keyvault://kv-{name}/azlocal-admin-password at deploy time.

Terraform Reference

Module: azurelocal-toolkit Files: nic.tf, VM resources Mode: Management

VMs to Deploy

VM KeyNameRoleOSSizeIPConfig Path
dc01vm-azrldc-{env}-{region}-01Primary Domain ControllerWindows Server 2025Standard_D2s_v4Per configazure_vms.dc01
dc02vm-azrldc-{env}-{region}-02Secondary Domain ControllerWindows Server 2025Standard_D2s_v4Per configazure_vms.dc02
utilityvm-util-{env}-{region}-01Utility/Management ServerWindows Server 2025Standard_D2as_v6Per configazure_vms.utility
ndmvm-ndm-{env}-{region}-01NDM (SYSLOG/SNMP)Ubuntu 24.04 LTSStandard_D2s_v4Per configazure_vms.ndm
lighthousevm-lh-{env}-{region}-01Lighthouse Central MgmtOpenGear LighthouseStandard_D2s_v4Per configazure_vms.lighthouse

Prerequisites

  • Task 01: Virtual Network completed — Management subnet exists
  • Task 10: Key Vault completed — Admin password stored in Key Vault
  • VM sizes available in target region (check quotas)
  • Marketplace terms accepted for OpenGear Lighthouse image (if deploying)

Variables from variables.yml

VariableConfig PathExample (IIC)
Subscription IDazure.subscriptions.<name>.id(per environment)
Resource Groupazure_vms.dc01.resource_grouprg-azrlmgmt-azl-eus-01
DC01 Nameazure_vms.dc01.namevm-azrldc-azl-eus-01
DC02 Nameazure_vms.dc02.namevm-azrldc-azl-eus-02
Utility VM Nameazure_vms.utility.namevm-util-azl-eus-01
NDM VM Nameazure_vms.ndm.namevm-ndm-azl-eus-01
Lighthouse VM Nameazure_vms.lighthouse.namevm-lh-azl-eus-01
Subnetazure_vms.dc01.subnetsnet-azrl-azl-eus-01

Single Subscription Model

Landing Zone Placement

FieldValueConfig Path
SubscriptionCustomer subscriptionazure.subscriptions.<name>.id
Resource Grouprg-azrlmgmt-{env}-{region}-01azure_vms.dc01.resource_group
SubnetManagement subnetazure_vms.dc01.subnet

Execution Options

Azure Portal

When to use: Learning Azure Local, single deployment, prefer visual interface

Procedure (repeat for each VM)

  1. Create Virtual Machine:
  • Search for Virtual machines+ CreateAzure virtual machine
  1. Basics: | Field | Value | Source | |-------|-------|--------| | Name | Per VM table above | azure_vms.<key>.name | | Region | Your region | azure_vms.<key>.location | | Image | Per VM table | azure_vms.<key>.image.* | | Size | Per VM table | azure_vms.<key>.vm_size | | Username | azureadmin | Standard | | Password | From Key Vault | keyvault://<vault>/azlocal-admin-password |

  2. Disks: | Field | Value | Source | |-------|-------|--------| | OS disk type | Premium SSD | azure_vms.<key>.os_disk.type | | OS disk size | Per config | azure_vms.<key>.os_disk.size_gb |

  3. Networking: | Field | Value | Source | |-------|-------|--------| | Virtual network | Management VNet | network.azure_vnets.management.name | | Subnet | Management subnet | azure_vms.<key>.subnet | | Public IP | None | No public IPs on mgmt VMs | | NIC name | Per config | azure_vms.<key>.nic_name |

  4. Advanced → IP Configuration: Set static private IP: | Field | Value | Source | |-------|-------|--------| | Private IP | Static | azure_vms.<key>.private_ip |

  5. Review + create: Verify → Click Create

  6. Repeat for all 5 VMs

Validation

  • All 5 VMs provisioning state: Succeeded
  • Each VM has correct static private IP
  • No public IPs assigned
  • All VMs accessible via Bastion (Task 05)

Validation

  • All 5 VMs running
  • Correct static IPs assigned
  • No public IPs
  • Bastion connectivity works to each VM

CAF/WAF Landing Zone Model

In the CAF/WAF model, management VMs are deployed in the Management subscription in a spoke VNet peered to the Hub.

Landing Zone Placement

FieldValueConfig Path
SubscriptionManagement subscriptionazure.subscriptions.management.id
Resource Grouprg-azrlmgmt-{env}-{region}-01azure_vms.dc01.resource_group
VNet/SubnetManagement spokeMay differ from single-sub

Execution Options

Azure Portal

Follow the same procedure, targeting the Management subscription and spoke VNet.

Validation

  • VMs in Management subscription
  • Reachable via Bastion from Connectivity Hub

Troubleshooting

IssueRoot CauseRemediation
VM size not availableQuota or region limitationRequest quota increase or change region
Marketplace terms not acceptedOpenGear Lighthouse requires acceptanceSet-AzMarketplaceTerms -Publisher opengear -Product lighthouse -Name lighthouse -Accept
Static IP conflictIP already in useVerify IP availability in subnet
Password too weakAzure policy enforcedUse 12+ chars with upper, lower, number, special
NIC creation failsSubnet NSG blockingCheck NSG rules on management subnet


Alternatives

The procedures in this task use the scripted methods shown in the tabs above. Additional deployment methods including Azure CLI and Bash scripts are available in the azurelocal-toolkit repository under scripts/deploy/.

MethodDescription
Azure CLIPowerShell-based Azure CLI scripts for Azure resource operations
BashLinux/macOS compatible shell scripts for pipeline environments
PreviousUpNext
Task 10: Key VaultManual Deployment IndexVM Configuration

Version Control

  • Created: 2025-09-15 by Hybrid Cloud Solutions
  • Last Updated: 2026-03-03 by Hybrid Cloud Solutions
  • Version: 4.0.0
  • Tags: azure-local, virtual-machines, management, deployment
  • Keywords: VM deployment, domain controller, utility server, NDM, Lighthouse, Azure VM
  • Author: Hybrid Cloud Solutions

Version Control

VersionDateAuthorChanges
1.0.02025-03-25Azure Local CloudInitial release