Last active
April 25, 2017 20:27
-
-
Save rnkhouse/aea0a8fd395da37b19466348b919d620 to your computer and use it in GitHub Desktop.
2 VMs with Internal Load Balancer and load balancing rules (DBserver - Backend)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", | |
"contentVersion": "1.0.0.0", | |
"parameters": { | |
"location": { | |
"type": "String" | |
}, | |
"virtualNetworkName": { | |
"type": "string", | |
"metadata": { | |
"description": "This is the name of the Virtual Network" | |
} | |
}, | |
"networkInterfaceName": { | |
"type": "string", | |
"metadata": { | |
"description": "This is the prefix name of the Network interfaces" | |
} | |
}, | |
"loadBalancerName": { | |
"type": "string", | |
"metadata": { | |
"description": "This is the name of the load balancer" | |
} | |
}, | |
"adminUsername": { | |
"type": "string", | |
"metadata": { | |
"description": "Admin username" | |
} | |
}, | |
"adminPublicKey": { | |
"type": "string", | |
"metadata": { | |
"description": "SSH Public Key" | |
} | |
}, | |
"imagePublisher": { | |
"type": "string", | |
"defaultValue": "Canonical", | |
"metadata": { | |
"description": "Image Publisher" | |
} | |
}, | |
"vmNamePrefix": { | |
"type": "string", | |
"metadata": { | |
"description": "Prefix to use for VM names" | |
} | |
}, | |
"imageOffer": { | |
"type": "string", | |
"defaultValue": "UbuntuServer", | |
"metadata": { | |
"description": "Image Offer" | |
} | |
}, | |
"imageSKU": { | |
"type": "string", | |
"defaultValue": "14.04.5-LTS", | |
"metadata": { | |
"description": "Image SKU" | |
} | |
}, | |
"vmStorageAccountContainerName": { | |
"type": "string", | |
"defaultValue": "vhds", | |
"metadata": { | |
"description": "This is the storage account container name" | |
} | |
}, | |
"storageAccountName": { | |
"type": "string", | |
"metadata": { | |
"description": "Storage account name" | |
} | |
}, | |
"vmSize": { | |
"type": "string", | |
"defaultValue": "Standard_D1", | |
"metadata": { | |
"description": "This is the allowed list of VM sizes" | |
} | |
}, | |
"subnetName": { | |
"defaultValue": "subnet-2", | |
"type": "String" | |
} | |
}, | |
"variables": { | |
"availabilitySetName": "[concat(parameters('subnetName'),'-AVSET')]", | |
"addressPrefix": "1.0.0.0/16", | |
"subnetPrefix": "1.0.2.0/24", | |
"storageAccountType": "Standard_LRS", | |
"vnetID": "[resourceId(resourceGroup().name,'Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]", | |
"subnetRef": "[concat(variables('vnetID'),'/subnets/',parameters ('subnetName'))]", | |
"numberOfInstances": 2, | |
"lbID": "[resourceId('Microsoft.Network/loadBalancers',parameters('loadBalancerName'))]" | |
}, | |
"resources": [ | |
{ | |
"apiVersion": "2015-05-01-preview", | |
"type": "Microsoft.Storage/storageAccounts", | |
"name": "[parameters('storageAccountName')]", | |
"location": "[parameters('location')]", | |
"properties": { | |
"accountType": "[variables('storageAccountType')]" | |
} | |
}, | |
{ | |
"apiVersion": "2016-04-30-preview", | |
"type": "Microsoft.Compute/availabilitySets", | |
"name": "[variables('availabilitySetName')]", | |
"location": "[parameters('location')]", | |
"properties": { | |
"platformFaultDomainCount": "2", | |
"platformUpdateDomainCount": "2", | |
"managed": "true" | |
} | |
}, | |
{ | |
"apiVersion": "2015-05-01-preview", | |
"type": "Microsoft.Network/virtualNetworks/subnets", | |
"name": "[concat(parameters('virtualNetworkName'), '/', parameters('subnetName'))]", | |
"location": "[parameters('location')]", | |
"properties": { | |
"addressPrefix": "[variables('subnetPrefix')]" | |
} | |
}, | |
{ | |
"apiVersion": "2015-05-01-preview", | |
"type": "Microsoft.Network/networkInterfaces", | |
"name": "[concat(parameters('networkInterfaceName'), copyindex())]", | |
"location": "[parameters('location')]", | |
"copy": { | |
"name": "nicLoop", | |
"count": "[variables('numberOfInstances')]" | |
}, | |
"dependsOn": [ | |
"[concat('Microsoft.Network/loadBalancers/', parameters('loadBalancerName'))]" | |
], | |
"properties": { | |
"ipConfigurations": [ | |
{ | |
"name": "ipconfig1", | |
"properties": { | |
"privateIPAllocationMethod": "Dynamic", | |
"subnet": { | |
"id": "[variables('subnetRef')]" | |
}, | |
"loadBalancerBackendAddressPools": [ | |
{ | |
"id": "[concat(variables('lbID'), '/backendAddressPools/BackendPool1')]" | |
} | |
] | |
} | |
} | |
] | |
} | |
}, | |
{ | |
"apiVersion": "2015-05-01-preview", | |
"type": "Microsoft.Network/loadBalancers", | |
"name": "[parameters('loadBalancerName')]", | |
"location": "[parameters('location')]", | |
"dependsOn": [], | |
"properties": { | |
"frontendIPConfigurations": [ | |
{ | |
"properties": { | |
"subnet": { | |
"id": "[variables('subnetRef')]" | |
}, | |
"privateIPAddress": "1.0.2.50", | |
"privateIPAllocationMethod": "Static" | |
}, | |
"name": "LoadBalancerFrontend" | |
} | |
], | |
"backendAddressPools": [ | |
{ | |
"name": "BackendPool1" | |
} | |
], | |
"loadBalancingRules": [ | |
{ | |
"properties": { | |
"frontendIPConfiguration": { | |
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/frontendIpConfigurations/LoadBalancerFrontend')]" | |
}, | |
"backendAddressPool": { | |
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/backendAddressPools/BackendPool1')]" | |
}, | |
"probe": { | |
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', parameters('loadBalancerName')), '/probes/lbprobe')]" | |
}, | |
"protocol": "Tcp", | |
"frontendPort": 80, | |
"backendPort": 80, | |
"idleTimeoutInMinutes": 15 | |
}, | |
"Name": "lbrule" | |
} | |
], | |
"probes": [ | |
{ | |
"properties": { | |
"protocol": "Tcp", | |
"port": 80, | |
"intervalInSeconds": 15, | |
"numberOfProbes": 2 | |
}, | |
"name": "lbprobe" | |
} | |
] | |
} | |
}, | |
{ | |
"apiVersion": "2016-04-30-preview", | |
"type": "Microsoft.Compute/virtualMachines", | |
"name": "[concat(parameters('vmNamePrefix'), copyindex())]", | |
"copy": { | |
"name": "virtualMachineLoop", | |
"count": "[variables('numberOfInstances')]" | |
}, | |
"location": "[parameters('location')]", | |
"dependsOn": [ | |
"[concat('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", | |
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'), copyindex())]", | |
"[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]" | |
], | |
"properties": { | |
"availabilitySet": { | |
"id": "[resourceId('Microsoft.Compute/availabilitySets',variables('availabilitySetName'))]" | |
}, | |
"hardwareProfile": { | |
"vmSize": "[parameters('vmSize')]" | |
}, | |
"osProfile": { | |
"computerName": "[concat(parameters('vmNamePrefix'), copyIndex())]", | |
"adminUsername": "[parameters('adminUsername')]", | |
"linuxConfiguration": { | |
"disablePasswordAuthentication": "true", | |
"ssh": { | |
"publicKeys": [ | |
{ | |
"path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]", | |
"keyData": "[parameters('adminPublicKey')]" | |
} | |
] | |
} | |
} | |
}, | |
"storageProfile": { | |
"imageReference": { | |
"publisher": "[parameters('imagePublisher')]", | |
"offer": "[parameters('imageOffer')]", | |
"sku": "[parameters('imageSKU')]", | |
"version": "latest" | |
}, | |
"osDisk": { | |
"createOption": "FromImage" | |
} | |
}, | |
"networkProfile": { | |
"networkInterfaces": [ | |
{ | |
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('networkInterfaceName'),copyindex()))]" | |
} | |
] | |
}, | |
"diagnosticsProfile": { | |
"bootDiagnostics": { | |
"enabled": "true", | |
"storageUri": "[concat('http://',parameters('storageAccountName'),'.blob.core.windows.net')]" | |
} | |
} | |
} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment