Created
March 20, 2017 20:50
-
-
Save doodlemania2/24db6f29e4ae55d9eb6e57a24a926149 to your computer and use it in GitHub Desktop.
VMSS+ManagedDisks+CustomImage+ARMTemplate
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": "http://schema.management.azure.com/schemas/2015-01-01-preview/deploymentTemplate.json", | |
"contentVersion": "1.0.0.0", | |
"parameters": { | |
"vmSku": { | |
"defaultValue": "Standard_DS2_V2", | |
"type": "String", | |
"metadata": { | |
"description": "Size of VMs in the VM Scale Set." | |
} | |
}, | |
"vmssName": { | |
"maxLength": 61, | |
"type": "String", | |
"metadata": { | |
"description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended." | |
} | |
}, | |
"instanceCount": { | |
"maxValue": 100, | |
"type": "Int", | |
"metadata": { | |
"description": "Number of VM instances (100 or less)." | |
} | |
}, | |
"adminUsername": { | |
"type": "String", | |
"metadata": { | |
"description": "Admin username on all VMs." | |
} | |
}, | |
"adminPassword": { | |
"type": "SecureString", | |
"metadata": { | |
"description": "Admin password on all VMs." | |
} | |
}, | |
"osType": { | |
"allowedValues": [ | |
"Windows", | |
"Linux" | |
], | |
"type": "String" | |
} | |
}, | |
"variables": { | |
"namingInfix": "[toLower(substring(concat(parameters('vmssName'), uniqueString(resourceGroup().id)), 0, 9))]", | |
"longNamingInfix": "[toLower(parameters('vmssName'))]", | |
"vhdContainerName": "[concat(variables('namingInfix'), 'vhd')]", | |
"addressPrefix": "10.0.0.0/16", | |
"subnetPrefix": "10.0.0.0/24", | |
"virtualNetworkName": "[concat(variables('namingInfix'), 'vnet')]", | |
"publicIPAddressName": "[concat(variables('namingInfix'), 'pip')]", | |
"subnetName": "[concat(variables('namingInfix'), 'subnet')]", | |
"loadBalancerName": "[concat(variables('namingInfix'), 'lb')]", | |
"publicIPAddressID": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]", | |
"lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('loadBalancerName'))]", | |
"natPoolName": "[concat(variables('namingInfix'), 'natpool')]", | |
"bePoolName": "[concat(variables('namingInfix'), 'bepool')]", | |
"natStartPort": 50000, | |
"natEndPort": 50119, | |
"natBackendPort": 22, | |
"nicName": "[concat(variables('namingInfix'), 'nic')]", | |
"ipConfigName": "[concat(variables('namingInfix'), 'ipconfig')]", | |
"frontEndIPConfigID": "[concat(variables('lbID'),'/frontendIPConfigurations/loadBalancerFrontEnd')]", | |
"computeApiVersion": "2016-04-30-preview", | |
"networkApiVersion": "2016-03-30" | |
}, | |
"resources": [ | |
{ | |
"type": "Microsoft.Network/virtualNetworks", | |
"name": "[variables('virtualNetworkName')]", | |
"apiVersion": "[variables('networkApiVersion')]", | |
"location": "[resourceGroup().location]", | |
"properties": { | |
"addressSpace": { | |
"addressPrefixes": [ | |
"[variables('addressPrefix')]" | |
] | |
}, | |
"subnets": [ | |
{ | |
"name": "[variables('subnetName')]", | |
"properties": { | |
"addressPrefix": "[variables('subnetPrefix')]" | |
} | |
} | |
] | |
} | |
}, | |
{ | |
"type": "Microsoft.Network/publicIPAddresses", | |
"name": "[variables('publicIPAddressName')]", | |
"apiVersion": "[variables('networkApiVersion')]", | |
"location": "[resourceGroup().location]", | |
"properties": { | |
"publicIPAllocationMethod": "Dynamic", | |
"dnsSettings": { | |
"domainNameLabel": "[variables('longNamingInfix')]" | |
} | |
} | |
}, | |
{ | |
"type": "Microsoft.Network/loadBalancers", | |
"name": "[variables('loadBalancerName')]", | |
"apiVersion": "[variables('networkApiVersion')]", | |
"location": "[resourceGroup().location]", | |
"properties": { | |
"frontendIPConfigurations": [ | |
{ | |
"name": "LoadBalancerFrontEnd", | |
"properties": { | |
"publicIPAddress": { | |
"id": "[variables('publicIPAddressID')]" | |
} | |
} | |
} | |
], | |
"backendAddressPools": [ | |
{ | |
"name": "[variables('bePoolName')]" | |
} | |
], | |
"inboundNatPools": [ | |
{ | |
"name": "[variables('natPoolName')]", | |
"properties": { | |
"frontendIPConfiguration": { | |
"id": "[variables('frontEndIPConfigID')]" | |
}, | |
"protocol": "tcp", | |
"frontendPortRangeStart": "[variables('natStartPort')]", | |
"frontendPortRangeEnd": "[variables('natEndPort')]", | |
"backendPort": "[variables('natBackendPort')]" | |
} | |
} | |
] | |
}, | |
"dependsOn": [ | |
"[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]" | |
] | |
}, | |
{ | |
"type": "Microsoft.Compute/virtualMachineScaleSets", | |
"sku": { | |
"name": "[parameters('vmSku')]", | |
"tier": "Standard", | |
"capacity": "[parameters('instanceCount')]" | |
}, | |
"name": "[variables('namingInfix')]", | |
"apiVersion": "[variables('computeApiVersion')]", | |
"location": "[resourceGroup().location]", | |
"properties": { | |
"overprovision": "true", | |
"upgradePolicy": { | |
"mode": "Manual" | |
}, | |
"virtualMachineProfile": { | |
"storageProfile": { | |
"imageReference": { | |
"id": "/subscriptions/<subid>/resourceGroups/<rgname>/providers/Microsoft.Compute/images/<imagename>" | |
} | |
}, | |
"osProfile": { | |
"computerNamePrefix": "[variables('namingInfix')]", | |
"adminUsername": "[parameters('adminUsername')]", | |
"adminPassword": "[parameters('adminPassword')]" | |
}, | |
"networkProfile": { | |
"networkInterfaceConfigurations": [ | |
{ | |
"name": "[variables('nicName')]", | |
"properties": { | |
"primary": "true", | |
"ipConfigurations": [ | |
{ | |
"name": "[variables('ipConfigName')]", | |
"properties": { | |
"subnet": { | |
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'), '/subnets/', variables('subnetName'))]" | |
}, | |
"loadBalancerBackendAddressPools": [ | |
{ | |
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/backendAddressPools/', variables('bePoolName'))]" | |
} | |
], | |
"loadBalancerInboundNatPools": [ | |
{ | |
"id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('loadBalancerName'), '/inboundNatPools/', variables('natPoolName'))]" | |
} | |
] | |
} | |
} | |
] | |
} | |
} | |
] | |
} | |
} | |
}, | |
"dependsOn": [ | |
"[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]", | |
"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]" | |
] | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
Can we use this template for a custom Linux image. Also, how can we update the template to require for an SSH key instead of password for accessing admin user.
Thanks in advance!