696 строки
31 KiB
JSON
696 строки
31 KiB
JSON
{
|
|
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
|
"contentVersion": "1.0.0.0",
|
|
"parameters": {
|
|
"linuxAdminUsername": {
|
|
"type": "string",
|
|
"defaultValue": "adminuser",
|
|
"metadata": {
|
|
"description": "User name for the Linux Virtual Machines (SSH or Password).Default value is adminuser"
|
|
}
|
|
},
|
|
"linuxAdminPassword": {
|
|
"type": "securestring",
|
|
"defaultValue": "[concat('Subscription#',substring(resourcegroup().id,15,36))]",
|
|
"metadata": {
|
|
"description": "Password for the Linux Virtual Machine. Default value is 'Subscription#<subscription id>'. Not Required. If not set, you must provide a SSH key."
|
|
}
|
|
},
|
|
"sshRSAPublicKey": {
|
|
"type": "string",
|
|
"defaultValue": "",
|
|
"metadata": {
|
|
"description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key."
|
|
}
|
|
},
|
|
"windowsAdminUsername": {
|
|
"type": "string",
|
|
"defaultValue": "adminuser",
|
|
"metadata": {
|
|
"description": "User name for the Windows Jumpbox Virtual Machine (Password Only Supported).Default value is adminuser"
|
|
}
|
|
},
|
|
"windowsAdminPassword": {
|
|
"type": "securestring",
|
|
"defaultValue": "[concat('Subscription#',substring(resourcegroup().id,15,36))]",
|
|
"metadata": {
|
|
"description": "Password for the Windows Jumpbox Virtual Machine. Default value is 'Subscription#<subscription id>'."
|
|
}
|
|
},
|
|
"agentVMSize": {
|
|
"type": "string",
|
|
"defaultValue": "Standard_A1",
|
|
"metadata": {
|
|
"description": "The size of the Agent Virtual Machine. Ex: Standard_XX where XX can A1, A2, A3 etc"
|
|
}
|
|
},
|
|
"agentCount": {
|
|
"type": "int",
|
|
"defaultValue": 1,
|
|
"metadata": {
|
|
"description": "The number of swarm agents for the cluster. This value can be from 1 to 100"
|
|
}
|
|
},
|
|
"masterVMSize": {
|
|
"type": "string",
|
|
"defaultValue": "Standard_A1",
|
|
"metadata": {
|
|
"description": "The size of the Master Virtual Machine.Ex: Standard_XX where XX can A1, A2, A3 etc"
|
|
}
|
|
},
|
|
"masterCount": {
|
|
"type": "int",
|
|
"defaultValue": 1,
|
|
"allowedValues": [
|
|
1,
|
|
3,
|
|
5
|
|
],
|
|
"metadata": {
|
|
"description": "The number of swarm masters for the cluster."
|
|
}
|
|
},
|
|
"linuxPublisher": {
|
|
"type": "string",
|
|
"defaultValue": "Canonical",
|
|
"metadata": {
|
|
"description": "This is the publisher of the image used by the linux cluster"
|
|
}
|
|
},
|
|
"linuxOffer": {
|
|
"type": "string",
|
|
"defaultValue": "UbuntuServer",
|
|
"metadata": {
|
|
"description": "This is the offer of the image used by the linux cluster"
|
|
}
|
|
},
|
|
"linuxSku": {
|
|
"type": "string",
|
|
"defaultValue": "14.04-LTS",
|
|
"metadata": {
|
|
"description": "This is the linux sku used by the linux cluster"
|
|
}
|
|
},
|
|
"linuxVersion": {
|
|
"type": "string",
|
|
"defaultValue": "latest",
|
|
"metadata": {
|
|
"description": "This is the linux version used by the linux cluster"
|
|
}
|
|
},
|
|
"windowsJumpboxPublisher": {
|
|
"type": "string",
|
|
"defaultValue": "MicrosoftWindowsServer",
|
|
"metadata": {
|
|
"description": "This is the windows publisher used by the windows jumpbox"
|
|
}
|
|
},
|
|
"windowsJumpboxOffer": {
|
|
"type": "string",
|
|
"defaultValue": "WindowsServer",
|
|
"metadata": {
|
|
"description": "This is the windows offer used by the windows jumpbox"
|
|
}
|
|
},
|
|
"windowsJumpboxSku": {
|
|
"type": "string",
|
|
"defaultValue": "2016-Datacenter",
|
|
"metadata": {
|
|
"description": "This is the windows sku used by the windows jumpbox"
|
|
}
|
|
},
|
|
"setSSHKeysLinuxConfiguration": {
|
|
"type": "int",
|
|
"defaultValue": 0,
|
|
"allowedValues": [ 0, 1 ],
|
|
"metadata": {
|
|
"description": "This setting controls whether Linux configuration with SSH Key is passed in VM PUT Payload. Defaults to 1. If SSH Key is blank, this must be set to 0."
|
|
}
|
|
},
|
|
"vmsPerStorageAccount": {
|
|
"type": "int",
|
|
"defaultValue": 40,
|
|
"metadata": {
|
|
"description": "This specifies the number of VMs per storage accounts"
|
|
}
|
|
},
|
|
"configureScriptsRootLocation": {
|
|
"type": "string",
|
|
"metadata": {
|
|
"description": "The root location for all the configuring scripts"
|
|
},
|
|
"defaultValue": "https://raw.githubusercontent.com/Azure/AzureStack-QuickStart-Templates/master/docker-swarm-ubuntu/parts/"
|
|
}
|
|
},
|
|
"variables": {
|
|
"adminUsername": "[parameters('linuxAdminUsername')]",
|
|
"adminPassword": "[parameters('linuxAdminPassword')]",
|
|
"orchestratorName": "swarm",
|
|
"nameSuffix": "[replace(replace(substring(tolower(uniqueString(resourceGroup().id)),0,5), '-', ''), '.','')]",
|
|
"jumpboxEndpointDNSName": "[tolower(concat('jumpbox', variables('nameSuffix')))]",
|
|
"agentCount": "[parameters('agentCount')]",
|
|
"masterCount": "[parameters('masterCount')]",
|
|
"agentVMSize": "[parameters('agentVMSize')]",
|
|
"sshRSAPublicKey": "[parameters('sshRSAPublicKey')]",
|
|
"linuxPublisher": "[parameters('linuxPublisher')]",
|
|
"linuxOffer": "[parameters('linuxOffer')]",
|
|
"linuxSku": "[parameters('linuxSku')]",
|
|
"linuxVersion": "[parameters('linuxVersion')]",
|
|
"windowsJumpboxPublisher": "[parameters('windowsJumpboxPublisher')]",
|
|
"windowsJumpboxOffer": "[parameters('windowsJumpboxOffer')]",
|
|
"windowsJumpboxSku": "[parameters('windowsJumpboxSku')]",
|
|
"windowsAdminUsername": "[parameters('windowsAdminUsername')]",
|
|
"windowsAdminPassword": "[parameters('windowsAdminPassword')]",
|
|
"vmsPerStorageAccount": "[parameters('vmsPerStorageAccount')]",
|
|
"storageLocation": "[resourceGroup().location]",
|
|
|
|
"sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]",
|
|
"linuxConfigurations": [
|
|
{ },
|
|
{
|
|
"disablePasswordAuthentication": true,
|
|
"ssh": {
|
|
"publicKeys": [
|
|
{
|
|
"path": "[variables('sshKeyPath')]",
|
|
"keyData": "[variables('sshRSAPublicKey')]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"linuxConfiguration": "[variables('linuxConfigurations')[parameters('setSSHKeysLinuxConfiguration')]]",
|
|
|
|
|
|
"jumpboxPublicIPAddressName": "[concat(variables('orchestratorName'), '-jumpbox-ip-', '-', variables('nameSuffix'))]",
|
|
"osImagePublisher": "[variables('linuxPublisher')]",
|
|
"osImageOffer": "[variables('linuxOffer')]",
|
|
"osImageSKU": "[variables('linuxSku')]",
|
|
"osImageVersion": "[variables('linuxVersion')]",
|
|
|
|
"virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]",
|
|
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]",
|
|
"subnetName": "[concat(variables('orchestratorName'), '-subnet-', variables('nameSuffix'))]",
|
|
"subnetRef": "[concat(variables('vnetID'),'/subnets/',variables('subnetName'))]",
|
|
"addressPrefix": "10.0.0.0/16",
|
|
"subnetPrefix": "10.0.0.0/18",
|
|
"baseSubnet": "[split(variables('subnetPrefix'),'0/18')[0]]",
|
|
"storageAccountType": "Standard_LRS",
|
|
"storageAccountPrefixes": [
|
|
"0",
|
|
"6",
|
|
"c",
|
|
"i",
|
|
"o",
|
|
"u",
|
|
"1",
|
|
"7",
|
|
"d",
|
|
"j",
|
|
"p",
|
|
"v",
|
|
"2",
|
|
"8",
|
|
"e",
|
|
"k",
|
|
"q",
|
|
"w",
|
|
"3",
|
|
"9",
|
|
"f",
|
|
"l",
|
|
"r",
|
|
"x",
|
|
"4",
|
|
"a",
|
|
"g",
|
|
"m",
|
|
"s",
|
|
"y",
|
|
"5",
|
|
"b",
|
|
"h",
|
|
"n",
|
|
"t",
|
|
"z"
|
|
],
|
|
"storageAccountPrefixesCount": "[length(variables('storageAccountPrefixes'))]",
|
|
"storageAccountBaseName": "[concat(variables('orchestratorName'), 'sa')]",
|
|
"masterStorageAccountName": "[concat(variables('storageAccountBaseName'),'master', variables('nameSuffix'))]",
|
|
"agentStorageAccountName": "[concat(variables('storageAccountBaseName'),'agent', variables('nameSuffix'))]",
|
|
"jumpboxNSGName": "[concat(variables('orchestratorName'), '-jumpbox-nsg-', variables('nameSuffix'))]",
|
|
"jumpboxNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('jumpboxNSGName'))]",
|
|
"clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddr'), ' ',variables('adminUsername'), ' ','disabled', ' ', variables('baseSubnet'))]",
|
|
"jumpboxAddr": 4,
|
|
"jumpboxVMName": "[concat('jumpboxVM-', variables('nameSuffix'))]",
|
|
"jumpboxVMSize": "Standard_A1",
|
|
"masterNSGName": "[concat(variables('orchestratorName'), '-master-nsg-', variables('nameSuffix'))]",
|
|
"masterNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('masterNSGName'))]",
|
|
"masterVMNamePrefix": "[concat(variables('orchestratorName'), '-masterVM-', variables('nameSuffix'), '-')]",
|
|
"masterFirstAddr": 5,
|
|
"agentNSGName": "[concat(variables('orchestratorName'), '-agent-nsg-', variables('nameSuffix'))]",
|
|
"agentNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('agentNSGName'))]",
|
|
"agentFirstAddr": 20,
|
|
"agentVMNamePrefix": "[concat(variables('orchestratorName'), '-agentVM-', variables('nameSuffix'), '-')]",
|
|
"agentStorageAccountsCount": "[add(div(variables('agentCount'), variables('vmsPerStorageAccount')), mod(add(mod(variables('agentCount'), variables('vmsPerStorageAccount')),2), add(mod(variables('agentCount'), variables('vmsPerStorageAccount')),1)))]",
|
|
"agentsPerIPv4Octet": 200,
|
|
"swarmScriptName": "configure-swarm-azurestack.sh"
|
|
},
|
|
"resources": [
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/virtualNetworks",
|
|
"name": "[variables('virtualNetworkName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"properties": {
|
|
"addressSpace": {
|
|
"addressPrefixes": [
|
|
"[variables('addressPrefix')]"
|
|
]
|
|
},
|
|
"subnets": [
|
|
{
|
|
"name": "[variables('subnetName')]",
|
|
"properties": {
|
|
"addressPrefix": "[variables('subnetPrefix')]"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"type": "Microsoft.Storage/storageAccounts",
|
|
"name": "[variables('masterStorageAccountName')]",
|
|
"apiVersion": "2015-05-01-preview",
|
|
"location": "[variables('storageLocation')]",
|
|
"properties": {
|
|
"accountType": "[variables('storageAccountType')]"
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/publicIPAddresses",
|
|
"name": "[variables('jumpboxPublicIPAddressName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"properties": {
|
|
"publicIPAllocationMethod": "Dynamic",
|
|
"dnsSettings": {
|
|
"domainNameLabel": "[variables('jumpboxEndpointDNSName')]"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkSecurityGroups",
|
|
"name": "[variables('jumpboxNSGName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"properties": {
|
|
"securityRules": [
|
|
{
|
|
"name": "ssh",
|
|
"properties": {
|
|
"description": "Allow RDP",
|
|
"protocol": "Tcp",
|
|
"sourcePortRange": "*",
|
|
"destinationPortRange": "3389",
|
|
"sourceAddressPrefix": "*",
|
|
"destinationAddressPrefix": "*",
|
|
"access": "Allow",
|
|
"priority": 200,
|
|
"direction": "Inbound"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkInterfaces",
|
|
"name": "[concat(variables('jumpboxVMName'), '-nic')]",
|
|
"location": "[resourceGroup().location]",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/publicIPAddresses',variables('jumpboxPublicIPAddressName'))]",
|
|
"[variables('vnetID')]",
|
|
"[variables('jumpboxNSGID')]"
|
|
],
|
|
"properties": {
|
|
"networkSecurityGroup": {
|
|
"id": "[variables('jumpboxNSGID')]"
|
|
},
|
|
"ipConfigurations": [
|
|
{
|
|
"name": "ipConfig",
|
|
"properties": {
|
|
"privateIPAllocationMethod": "Static",
|
|
"privateIPAddress": "[concat(variables('baseSubnet'), variables('jumpboxAddr'))]",
|
|
"publicIPAddress": {
|
|
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('jumpboxPublicIPAddressName'))]"
|
|
},
|
|
"subnet": {
|
|
"id": "[variables('subnetRef')]"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-06-15",
|
|
"type": "Microsoft.Compute/virtualMachines",
|
|
"name": "[variables('jumpboxVMName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"dependsOn": [
|
|
"[concat('Microsoft.Network/networkInterfaces/', variables('jumpboxVMName'), '-nic')]",
|
|
"[variables('masterStorageAccountName')]"
|
|
],
|
|
"properties": {
|
|
"hardwareProfile": {
|
|
"vmSize": "[variables('jumpboxVMSize')]"
|
|
},
|
|
"osProfile": {
|
|
"computerName": "[variables('jumpboxVMName')]",
|
|
"adminUsername": "[variables('windowsAdminUsername')]",
|
|
"adminPassword": "[variables('windowsAdminPassword')]"
|
|
},
|
|
"storageProfile": {
|
|
"imageReference": {
|
|
"publisher": "[variables('windowsJumpboxPublisher')]",
|
|
"offer": "[variables('windowsJumpboxOffer')]",
|
|
"sku": "[variables('windowsJumpboxSku')]",
|
|
"version": "latest"
|
|
},
|
|
"osDisk": {
|
|
"name": "[concat(variables('jumpboxVMName'),'-osdisk')]",
|
|
"vhd": {
|
|
"uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).primaryEndpoints.blob, 'vhds/', variables('jumpboxVMName'), '-osdisk.vhd')]"
|
|
},
|
|
"caching": "ReadWrite",
|
|
"createOption": "FromImage"
|
|
}
|
|
},
|
|
"networkProfile": {
|
|
"networkInterfaces": [
|
|
{
|
|
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('jumpboxVMName'), '-nic'))]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkSecurityGroups",
|
|
"name": "[variables('masterNSGName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"properties": {
|
|
"securityRules": [
|
|
{
|
|
"name": "ssh",
|
|
"properties": {
|
|
"description": "Allow SSH",
|
|
"protocol": "Tcp",
|
|
"sourcePortRange": "*",
|
|
"destinationPortRange": "22",
|
|
"sourceAddressPrefix": "*",
|
|
"destinationAddressPrefix": "*",
|
|
"access": "Allow",
|
|
"priority": 200,
|
|
"direction": "Inbound"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkInterfaces",
|
|
"name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "nicLoopNode",
|
|
"count": "[variables('masterCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[variables('vnetID')]",
|
|
"[variables('masterNSGID')]"
|
|
],
|
|
"properties": {
|
|
"networkSecurityGroup": {
|
|
"id": "[variables('masterNSGID')]"
|
|
},
|
|
"ipConfigurations": [
|
|
{
|
|
"name": "ipConfigNode",
|
|
"properties": {
|
|
"privateIPAllocationMethod": "Static",
|
|
"privateIPAddress": "[concat(variables('baseSubnet'), copyIndex(variables('masterFirstAddr')))]",
|
|
"subnet": {
|
|
"id": "[variables('subnetRef')]"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-06-15",
|
|
"type": "Microsoft.Compute/virtualMachines",
|
|
"name": "[concat(variables('masterVMNamePrefix'), copyIndex())]",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "vmLoopNode",
|
|
"count": "[variables('masterCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]",
|
|
"[variables('masterStorageAccountName')]"
|
|
],
|
|
"properties": {
|
|
"hardwareProfile": {
|
|
"vmSize": "[parameters('masterVMSize')]"
|
|
},
|
|
"osProfile": {
|
|
"computerName": "[concat(variables('masterVMNamePrefix'), copyIndex())]",
|
|
"adminUsername": "[variables('adminUsername')]",
|
|
"adminPassword": "[variables('adminPassword')]",
|
|
"linuxConfiguration": "[variables('linuxConfiguration')]"
|
|
},
|
|
"storageProfile": {
|
|
"imageReference": {
|
|
"publisher": "[variables('osImagePublisher')]",
|
|
"offer": "[variables('osImageOffer')]",
|
|
"sku": "[variables('osImageSKU')]",
|
|
"version": "[variables('osImageVersion')]"
|
|
},
|
|
"osDisk": {
|
|
"name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]",
|
|
"vhd": {
|
|
"uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]"
|
|
},
|
|
"caching": "ReadWrite",
|
|
"createOption": "FromImage"
|
|
}
|
|
},
|
|
"networkProfile": {
|
|
"networkInterfaces": [
|
|
{
|
|
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]",
|
|
"apiVersion": "2015-06-15",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "vmLoopNode",
|
|
"count": "[variables('masterCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[concat('Microsoft.Compute/virtualMachines/', variables('masterVMNamePrefix'), copyIndex())]"
|
|
],
|
|
"properties": {
|
|
"publisher": "Microsoft.OSTCExtensions",
|
|
"type": "CustomScriptForLinux",
|
|
"typeHandlerVersion": "1.3",
|
|
"autoUpgradeMinorVersion": "true",
|
|
"settings": {
|
|
"fileUris": [ "[concat(parameters('configureScriptsRootLocation'), variables('swarmScriptName'))]" ],
|
|
"commandToExecute": "[concat('/bin/bash -c \"/bin/bash configure-swarm-azurestack.sh ', variables('clusterInstallParameters'), ' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "Microsoft.Storage/storageAccounts",
|
|
"name": "[concat(variables('storageAccountPrefixes')[mod(copyIndex(),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(copyIndex(),variables('storageAccountPrefixesCount'))],variables('agentStorageAccountName'),copyIndex(1))]",
|
|
"apiVersion": "2015-05-01-preview",
|
|
"location": "[variables('storageLocation')]",
|
|
"copy": {
|
|
"name": "vmLoopNode",
|
|
"count": "[variables('agentStorageAccountsCount')]"
|
|
},
|
|
"properties": {
|
|
"accountType": "[variables('storageAccountType')]"
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkSecurityGroups",
|
|
"name": "[variables('agentNSGName')]",
|
|
"location": "[resourceGroup().location]",
|
|
"properties": {
|
|
"securityRules": [
|
|
{
|
|
"name": "http",
|
|
"properties": {
|
|
"description": "Allow HTTP",
|
|
"protocol": "Tcp",
|
|
"sourcePortRange": "*",
|
|
"destinationPortRange": "80",
|
|
"sourceAddressPrefix": "*",
|
|
"destinationAddressPrefix": "*",
|
|
"access": "Allow",
|
|
"priority": 210,
|
|
"direction": "Inbound"
|
|
}
|
|
},
|
|
{
|
|
"name": "https",
|
|
"properties": {
|
|
"description": "Allow HTTPS",
|
|
"protocol": "Tcp",
|
|
"sourcePortRange": "*",
|
|
"destinationPortRange": "443",
|
|
"sourceAddressPrefix": "*",
|
|
"destinationAddressPrefix": "*",
|
|
"access": "Allow",
|
|
"priority": 220,
|
|
"direction": "Inbound"
|
|
}
|
|
},
|
|
{
|
|
"name": "Tcp8080",
|
|
"properties": {
|
|
"description": "Allow port 8080",
|
|
"protocol": "Tcp",
|
|
"sourcePortRange": "*",
|
|
"destinationPortRange": "8080",
|
|
"sourceAddressPrefix": "*",
|
|
"destinationAddressPrefix": "*",
|
|
"access": "Allow",
|
|
"priority": 230,
|
|
"direction": "Inbound"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-05-01-preview",
|
|
"type": "Microsoft.Network/networkInterfaces",
|
|
"name": "[concat(variables('agentVMNamePrefix'), 'nic-', copyIndex())]",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "nicLoopNode",
|
|
"count": "[variables('agentCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[variables('vnetID')]",
|
|
"[variables('agentNSGID')]"
|
|
],
|
|
"properties": {
|
|
"networkSecurityGroup": {
|
|
"id": "[variables('agentNSGID')]"
|
|
},
|
|
"ipConfigurations": [
|
|
{
|
|
"name": "ipConfigNode",
|
|
"properties": {
|
|
"privateIPAllocationMethod": "Static",
|
|
"privateIPAddress": "[concat(split(variables('subnetPrefix'),'0.0/18')[0], div(copyIndex(),variables('agentsPerIPv4Octet')), '.', add(mod(copyIndex(),variables('agentsPerIPv4Octet')), variables('agentFirstAddr')))]",
|
|
"subnet": {
|
|
"id": "[variables('subnetRef')]"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "2015-06-15",
|
|
"type": "Microsoft.Compute/virtualMachines",
|
|
"name": "[concat(variables('agentVMNamePrefix'), copyIndex())]",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "vmLoopNode",
|
|
"count": "[variables('agentCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(div(copyIndex(),variables('vmsPerStorageAccount')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(div(copyIndex(),variables('vmsPerStorageAccount')),variables('storageAccountPrefixesCount'))],variables('agentStorageAccountName'),add(1,div(copyIndex(),variables('vmsPerStorageAccount'))))]",
|
|
"[concat('Microsoft.Network/networkInterfaces/', variables('agentVMNamePrefix'), 'nic-', copyIndex())]"
|
|
],
|
|
"properties": {
|
|
"hardwareProfile": {
|
|
"vmSize": "[variables('agentVMSize')]"
|
|
},
|
|
"osProfile": {
|
|
"computerName": "[concat(variables('agentVMNamePrefix'), copyIndex())]",
|
|
"adminUsername": "[variables('adminUsername')]",
|
|
"adminPassword": "[variables('adminPassword')]",
|
|
"linuxConfiguration": "[variables('linuxConfiguration')]"
|
|
},
|
|
"storageProfile": {
|
|
"imageReference": {
|
|
"publisher": "[variables('osImagePublisher')]",
|
|
"offer": "[variables('osImageOffer')]",
|
|
"sku": "[variables('osImageSKU')]",
|
|
"version": "[variables('osImageVersion')]"
|
|
},
|
|
"osDisk": {
|
|
"name": "[concat(variables('agentVMNamePrefix'), copyIndex(),'-osdisk')]",
|
|
"vhd": {
|
|
"uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(div(copyIndex(),variables('vmsPerStorageAccount')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(div(copyIndex(),variables('vmsPerStorageAccount')),variables('storageAccountPrefixesCount'))],variables('agentStorageAccountName'),add(1,div(copyIndex(),variables('vmsPerStorageAccount')))), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).primaryEndpoints.blob, 'vhds/', variables('agentVMNamePrefix'), copyIndex(), '-osdisk.vhd')]"
|
|
},
|
|
"caching": "ReadWrite",
|
|
"createOption": "FromImage"
|
|
}
|
|
},
|
|
"networkProfile": {
|
|
"networkInterfaces": [
|
|
{
|
|
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentVMNamePrefix'), 'nic-', copyIndex()))]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "Microsoft.Compute/virtualMachines/extensions",
|
|
"name": "[concat(variables('agentVMNamePrefix'), copyIndex(), '/configureagent')]",
|
|
"apiVersion": "2015-06-15",
|
|
"location": "[resourceGroup().location]",
|
|
"copy": {
|
|
"name": "vmLoopNode",
|
|
"count": "[variables('agentCount')]"
|
|
},
|
|
"dependsOn": [
|
|
"[concat('Microsoft.Compute/virtualMachines/', variables('agentVMNamePrefix'), copyIndex())]"
|
|
],
|
|
"properties": {
|
|
"publisher": "Microsoft.OSTCExtensions",
|
|
"type": "CustomScriptForLinux",
|
|
"typeHandlerVersion": "1.3",
|
|
"autoUpgradeMinorVersion": "true",
|
|
"settings": {
|
|
"fileUris": [ "[concat(parameters('configureScriptsRootLocation'), variables('swarmScriptName'))]" ],
|
|
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash configure-swarm-azurestack.sh ', variables('clusterInstallParameters'), ' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"outputs": {
|
|
}
|
|
} |