Create a SQL Server AlwaysOn Cluster Deployment

Last updated: 11/09/2018

This template creates 5 new Azure VMs, each group load balancer and a VNet. It configures a primary and backup AD Domain Controller for a new Forest and Domain, two SQL Servers and witness in AlwaysOn configuration

This Azure Resource Manager (ARM) template was created by a member of the community and not by Microsoft. Each ARM template is licensed to you under a licence agreement by its owner, not Microsoft. Microsoft is not responsible for ARM templates provided and licensed by community members and does not screen for security, compatibility or performance. Community ARM templates are not supported under any Microsoft support programme or service, and are made available AS IS without warranty of any kind.


Parameter Name Description
adminUsername The name of the Administrator of the new VMs and Domain
adminPassword The password for the Administrator account of the new VMs and Domain
adVMSize The size of the AD VMs Created
sqlVMSize The size of the SQL VMs Created
witnessVMSize The size of the Witness VM Created
domainName The FQDN of the AD Domain created
sqlServerServiceAccountUserName The SQL Server Service Account name
sqlServerServiceAccountPassword The SQL Server Service Account password
sqlStorageAccountName The name of Sql Server Storage Account
sqlStorageAccountType The type of the Sql Server Storage Account created
dcStorageAccountName The name of DC Storage Account
dcStorageAccountType The type of the DC Storage Account created
virtualNetworkAddressRange The address range of the new VNET in CIDR format
staticSubnet The address range of the subnet static IPs are allocated from in the new VNET
sqlSubnet The address range of the SQL subnet created in the new VNET
adPDCNICIPAddress The IP address of the new AD VM
adBDCNICIPAddress The IP address of the new backup AD VM
sqlLBIPAddress The IP address of the new SQL Server Internal Load Balancer
deploymentPrefix The DNS Prefix for the Public IP Address for the Always On Cluster
virtualNetworkName Name of virtual network to be created
templatesBaseUrl Linked Templates base url
scriptsBaseUrl DSC Scripts base url
autoPatchingDay The day of a week for auto patching
autoPatchingStartHour The start hour of a day for auto patching
sqlAOAGName The Sql AlwaysOn Group Name
sqlAOListenerPort The Sql AG Listener port
sqlAOListenerName The Sql AG Listener Name
sqlServerVersion The Sql Server Version
numberOfSqlVMDisks The Sql VM Disk Size
workloadType The Sql VM work load type: GENERAL - general work load; DW - datawear house work load; OLTP - Transactional processing work load
location Location for all resources.

Use the template


New-AzResourceGroup -Name <resource-group-name> -Location <resource-group-location> #use this command when you need to create a new resource group for your deployment
New-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -TemplateUri
Installing and configuring Azure PowerShell

Command line

az group create --name <resource-group-name> --location <resource-group-location> #use this command when you need to create a new resource group for your deployment
az group deployment create --resource-group <my-resource-group> --template-uri
Installing and configuring the Azure cross-platform command-line interface