{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "machineName": { "defaultValue": "", "type": "string", "minLength": 1, "maxLength": 15, "metadata": { "description": "The name of the virtual machine. " } }, "adminUsername": { "type": "string" }, "adminPassword": { "type": "securestring" }, "diskType": { "type": "string" }, "exsitingVnetName": { "type": "string", "metadata": { "description": "Existing VNET that contains the domain controller" } }, "vmSize": { "type": "string" }, "existingSubnetName": { "defaultValue": "Subnet-1", "type": "string", "metadata": { "description": "Existing subnet that contains the domain controller." } }, "existingPrimaryName": { "type": "string", "metadata": { "description": "Computer name for the primary site server. " } }, "existingDomainFQDN": { "type": "string", "metadata": { "description": "DomainName on the AD domain. " } }, "existingDomainAdminUsername": { "type": "string", "metadata": { "description": "Username of the account on the AD domain. " } }, "existingDomainAdminPassword": { "type": "securestring", "metadata": { "description": "Password of the account on the AD domain" } }, "existingStorageUrl": { "type": "string", "metadata": { "description": "The storage Url. Example is like https://{storageaccountname}.blob.core.windows.net/{containername}/{blobname}. " } }, "existingSASKey": { "type": "securestring", "metadata": { "description": "The sasToken required to access existingStorageUrl. It requires read and write permissions to save some temp data. " } }, "existingVnetResourcegroup": { "type": "string", "metadata": { "description": "Existing azure virtual network resource group. " } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } }, "RoleType": { "type": "string", "defaultValue": "Passive", "allowedValues": [ "Passive", "DP", "MP", "SUP", "General" ], "metadata": { "description": "Role type of VM." } } }, "variables": { "Quotes": "\"", "vnetId": "[resourceId(parameters('existingVnetResourcegroup'), 'Microsoft.Network/virtualNetworks', parameters('exsitingVnetName'))]", "networkSettings": { "subnetRef": "[concat(variables('vnetId'), '/subnets/',parameters('existingSubnetName'))]", "privateIPAllocationMethod": "Dynamic", "privateIPAddressVersion": "IPv4" }, "securityGroupRule": { "name": "default-allow-rdp", "priority": 1000, "sourceAddressPrefix": "*", "protocol": "Tcp", "destinationPortRange": "3389", "access": "Allow", "direction": "Inbound", "sourcePortRange": "*", "destinationAddressPrefix": "*" } }, "resources": [ { "type": "Microsoft.Compute/virtualMachines", "apiVersion": "2018-06-01", "name": "[parameters('machineName')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Network/networkInterfaces/', toLower(parameters('machineName')), '-ni')]" ], "properties": { "osProfile": { "computerName": "[parameters('machineName')]", "adminUsername": "[parameters('adminUsername')]", "adminPassword": "[parameters('adminPassword')]", "windowsConfiguration": { "provisionVmAgent": "true" } }, "hardwareProfile": { "vmSize": "[parameters('vmSize')]" }, "storageProfile": { "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2019-Datacenter", "version": "latest" }, "osDisk": { "osType": "Windows", "name": "[concat(parameters('machineName'),'-OsDisk')]", "createOption": "FromImage", "caching": "ReadWrite", "managedDisk": { "storageAccountType": "[parameters('diskType')]" }, "diskSizeGB": 150 }, "dataDisks": [] }, "networkProfile": { "networkInterfaces": [ { "id": "[resourceId('Microsoft.Network/networkInterfaces', concat(toLower(parameters('machineName')), '-ni'))]" } ] }, "diagnosticsProfile": { "bootDiagnostics": { "enabled": false } } } }, { "condition": "[equals(parameters('RoleType'),'Passive')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "name": "[concat(parameters('machineName'),'/WorkFlow-Passive')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" ], "properties": { "publisher": "Microsoft.Powershell", "type": "DSC", "typeHandlerVersion": "2.21", "autoUpgradeMinorVersion": true, "settings": { "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", "configurationFunction": "PassiveConfiguration.ps1\\Passiveconfiguration", "Properties": { "DomainName": "[parameters('existingDomainFQDN')]", "AdminCreds": { "UserName": "[parameters('existingDomainAdminUsername')]", "Password": "PrivateSettingsRef:DomainAdminPassword" }, "Primaryname": "[parameters('existingPrimaryName')]" } }, "protectedSettings": { "Items": { "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" } } } }, { "condition": "[equals(parameters('RoleType'),'MP')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "name": "[concat(parameters('machineName'),'/WorkFlow-MP')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" ], "properties": { "publisher": "Microsoft.Powershell", "type": "DSC", "typeHandlerVersion": "2.21", "autoUpgradeMinorVersion": true, "settings": { "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", "configurationFunction": "MPConfiguration.ps1\\MPconfiguration", "Properties": { "DomainName": "[parameters('existingDomainFQDN')]", "AdminCreds": { "UserName": "[parameters('existingDomainAdminUsername')]", "Password": "PrivateSettingsRef:DomainAdminPassword" }, "PrimaryName": "[parameters('existingPrimaryName')]" } }, "protectedSettings": { "Items": { "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" } } } }, { "condition": "[equals(parameters('RoleType'),'DP')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "name": "[concat(parameters('machineName'),'/WorkFlow-DP')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" ], "properties": { "publisher": "Microsoft.Powershell", "type": "DSC", "typeHandlerVersion": "2.21", "autoUpgradeMinorVersion": true, "settings": { "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", "configurationFunction": "DPConfiguration.ps1\\DPconfiguration", "Properties": { "DomainName": "[parameters('existingDomainFQDN')]", "AdminCreds": { "UserName": "[parameters('existingDomainAdminUsername')]", "Password": "PrivateSettingsRef:DomainAdminPassword" }, "Primaryname": "[parameters('existingPrimaryName')]" } }, "protectedSettings": { "Items": { "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" } } } }, { "condition": "[equals(parameters('RoleType'),'SUP')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "name": "[concat(parameters('machineName'),'/WorkFlow-SUP')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" ], "properties": { "publisher": "Microsoft.Powershell", "type": "DSC", "typeHandlerVersion": "2.21", "autoUpgradeMinorVersion": true, "settings": { "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", "configurationFunction": "SUPConfiguration.ps1\\SUPconfiguration", "Properties": { "DomainName": "[parameters('existingDomainFQDN')]", "AdminCreds": { "UserName": "[parameters('existingDomainAdminUsername')]", "Password": "PrivateSettingsRef:DomainAdminPassword" }, "Primaryname": "[parameters('existingPrimaryName')]" } }, "protectedSettings": { "Items": { "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" } } } }, { "condition": "[equals(parameters('RoleType'),'General')]", "type": "Microsoft.Compute/virtualMachines/extensions", "apiVersion": "2018-06-01", "name": "[concat(parameters('machineName'),'/WorkFlow-General')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Compute/virtualMachines/',parameters('machineName'))]" ], "properties": { "publisher": "Microsoft.Powershell", "type": "DSC", "typeHandlerVersion": "2.21", "autoUpgradeMinorVersion": true, "settings": { "modulesUrl": "[Uri(parameters('existingStorageUrl'),concat('scripts/DSCConfiguration.zip',parameters('existingSASKey')))]", "configurationFunction": "GeneralConfiguration.ps1\\Generalconfiguration", "Properties": { "DomainName": "[parameters('existingDomainFQDN')]", "AdminCreds": { "UserName": "[parameters('existingDomainAdminUsername')]", "Password": "PrivateSettingsRef:DomainAdminPassword" }, "Primaryname": "[parameters('existingPrimaryName')]" } }, "protectedSettings": { "Items": { "DomainAdminPassword": "[parameters('existingDomainAdminPassword')]" } } } }, { "type": "Microsoft.Network/networkInterfaces", "apiVersion": "2018-08-01", "name": "[concat(toLower(parameters('machineName')), '-ni')]", "location": "[parameters('location')]", "dependsOn": [ "[concat('Microsoft.Network/networkSecurityGroups/', parameters('machineName'), '-nsg')]" ], "properties": { "ipConfigurations": [ { "name": "ipconfig1", "properties": { "subnet": { "id": "[variables('networkSettings').subnetRef]" }, "privateIPAllocationMethod": "[variables('networkSettings').privateIPAllocationMethod]", "privateIPAddressVersion": "[variables('networkSettings').privateIPAddressVersion]" } } ], "networkSecurityGroup": { "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/networkSecurityGroups', concat(parameters('machineName'), '-nsg'))]" } } }, { "type": "Microsoft.Network/networkSecurityGroups", "apiVersion": "2018-08-01", "name": "[concat(parameters('machineName'), '-nsg')]", "location": "[parameters('location')]", "properties": { "securityRules": [ { "name": "[variables('securityGroupRule').name]", "properties": { "priority": "[variables('securityGroupRule').priority]", "sourceAddressPrefix": "[variables('securityGroupRule').sourceAddressPrefix]", "protocol": "[variables('securityGroupRule').protocol]", "destinationPortRange": "[variables('securityGroupRule').destinationPortRange]", "access": "[variables('securityGroupRule').access]", "direction": "[variables('securityGroupRule').direction]", "sourcePortRange": "[variables('securityGroupRule').sourcePortRange]", "destinationAddressPrefix": "[variables('securityGroupRule').destinationAddressPrefix]" } } ] } } ], "outputs": { } }