Skip to content

Instantly share code, notes, and snippets.

@amegianeg
Last active March 16, 2017 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amegianeg/1a36ff30da4b65de125340dbedbbf0cd to your computer and use it in GitHub Desktop.
Save amegianeg/1a36ff30da4b65de125340dbedbbf0cd to your computer and use it in GitHub Desktop.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"outputs": {
"ConnectToThisCluster": {
"type": "string",
"value": "[concat('docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -e DOCKER_HOST dockercloud/client ', variables('DockerCloudClusterName'))]"
},
"DefaultDNSTarget": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress]"
},
"SSH Targets": {
"type": "string",
"value": "[concat('https://', variables('portalFQDN'), '/#resource/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbSSHName'), '/inboundNatRules')]"
}
},
"parameters": {
"DockerCloudAPIKey": {
"metadata": {
"description": "Docker ID API key to use during registration"
},
"type": "securestring"
},
"DockerCloudClusterName": {
"metadata": {
"description": "Name of the cluster (namespace/cluster_name) to be used when registering this Swarm with Docker Cloud\n\nMust be in the format 'namespace/cluster_name' and must only contain letters, digits and hyphens"
},
"type": "string"
},
"DockerCloudRestHost": {
"defaultValue": "https://cloud.docker.com",
"metadata": {
"description": "Docker Cloud rest API endpoint"
},
"type": "string"
},
"DockerCloudUsername": {
"metadata": {
"description": "Docker ID username to use during registration\n\nMust only contain letters or digits"
},
"type": "string"
},
"DockerIDJWKURL": {
"defaultValue": "https://id.docker.com/api/id/v1/authz/certs",
"metadata": {
"description": "ID JWK certificate URL"
},
"type": "string"
},
"DockerIDJWTURL": {
"defaultValue": "https://id.docker.com/api/id/v1/authz/token",
"metadata": {
"description": "ID JWT token service URL"
},
"type": "string"
},
"adServicePrincipalAppID": {
"metadata": {
"description": "AD ServicePrincipal App ID"
},
"type": "string"
},
"adServicePrincipalAppSecret": {
"metadata": {
"description": "AD ServicePrincipal App Secret"
},
"type": "securestring"
},
"enableSystemPrune": {
"allowedValues": [
"yes",
"no"
],
"defaultValue": "no",
"metadata": {
"description": "Cleans up unused images, containers, networks and volumes"
},
"type": "string"
},
"managerCount": {
"allowedValues": [
1,
3,
5
],
"defaultValue": 1,
"type": "int"
},
"managerVMSize": {
"allowedValues": [
"Standard_A0",
"Standard_A1",
"Standard_A2",
"Standard_A3",
"Standard_A4",
"Standard_A5",
"Standard_A6",
"Standard_A7",
"Standard_A8",
"Standard_A9",
"Standard_A10",
"Standard_A11",
"Standard_D1",
"Standard_D2",
"Standard_D3",
"Standard_D4",
"Standard_D11",
"Standard_D12",
"Standard_D13",
"Standard_D14",
"Standard_D1_v2",
"Standard_D2_v2",
"Standard_D3_v2",
"Standard_D4_v2",
"Standard_D5_v2",
"Standard_D11_v2",
"Standard_D12_v2",
"Standard_D13_v2",
"Standard_D14_v2",
"Standard_G1",
"Standard_G2",
"Standard_G3",
"Standard_G4",
"Standard_G5",
"Standard_DS1",
"Standard_DS2",
"Standard_DS3",
"Standard_DS4",
"Standard_DS11",
"Standard_DS12",
"Standard_DS13",
"Standard_DS14",
"Standard_GS1",
"Standard_GS2",
"Standard_GS3",
"Standard_GS4",
"Standard_GS5"
],
"defaultValue": "Standard_D2_v2",
"metadata": {
"description": "The size of the created Manager machines"
},
"type": "string"
},
"sshPublicKey": {
"metadata": {
"description": "The SSH public key used to authenticate with the created swarm. Usually available in $HOME/.ssh/id_rsa.pub file"
},
"type": "string"
},
"swarmName": {
"defaultValue": "dockerswarm",
"metadata": {
"description": "Define how the swarm resources should be named."
},
"type": "string"
},
"workerCount": {
"allowedValues": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
],
"defaultValue": 1,
"metadata": {
"description": "Number of Worker nodes"
},
"type": "int"
},
"workerVMSize": {
"allowedValues": [
"Standard_A0",
"Standard_A1",
"Standard_A2",
"Standard_A3",
"Standard_A4",
"Standard_A5",
"Standard_A6",
"Standard_A7",
"Standard_A8",
"Standard_A9",
"Standard_A10",
"Standard_A11",
"Standard_D1",
"Standard_D2",
"Standard_D3",
"Standard_D4",
"Standard_D11",
"Standard_D12",
"Standard_D13",
"Standard_D14",
"Standard_D1_v2",
"Standard_D2_v2",
"Standard_D3_v2",
"Standard_D4_v2",
"Standard_D5_v2",
"Standard_D11_v2",
"Standard_D12_v2",
"Standard_D13_v2",
"Standard_D14_v2",
"Standard_G1",
"Standard_G2",
"Standard_G3",
"Standard_G4",
"Standard_G5",
"Standard_DS1",
"Standard_DS2",
"Standard_DS3",
"Standard_DS4",
"Standard_DS11",
"Standard_DS12",
"Standard_DS13",
"Standard_DS14",
"Standard_GS1",
"Standard_GS2",
"Standard_GS3",
"Standard_GS4",
"Standard_GS5"
],
"defaultValue": "Standard_D2_v2",
"metadata": {
"description": "The size of the created machines"
},
"type": "string"
}
},
"resources": [
{
"apiVersion": "2015-06-15",
"copy": {
"count": "[length(variables('uniqueStringArray'))]",
"name": "storageLoop"
},
"location": "[variables('storageLocation')]",
"name": "[concat(variables('uniqueStringArray')[copyIndex()], variables('storageAccountSuffix'))]",
"properties": {
"accountType": "Standard_LRS"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "2015-06-15",
"location": "[variables('storageLocation')]",
"name": "[variables('swarmLogsStorageAccount')]",
"properties": {
"accountType": "Standard_LRS"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Storage/storageAccounts"
},
{
"apiVersion": "[variables('apiVersion')]",
"location": "[variables('storageLocation')]",
"name": "[variables('virtualNetworkName')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('subnetPrefix')]",
"[variables('managerAddressPrefix')]"
]
},
"subnets": [
{
"name": "[variables('subnetName')]",
"properties": {
"addressPrefix": "[variables('subnetPrefix')]"
}
}
]
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Network/virtualNetworks"
},
{
"apiVersion": "[variables('apiVersion')]",
"dependsOn": [
"[variables('vnetID')]",
"[variables('lbSSHID')]",
"storageLoop"
],
"location": "[variables('storageLocation')]",
"name": "[variables('vmssManagersName')]",
"plan": {
"name": "[variables('imageSku')]",
"product": "[variables('imageOffer')]",
"publisher": "[variables('imagePublisher')]"
},
"properties": {
"overprovision": false,
"upgradePolicy": {
"mode": "Manual"
},
"virtualMachineProfile": {
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'))]"
}
},
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "managerNodeNic",
"properties": {
"ipConfigurations": [
{
"name": "mgripconfig",
"privateIPAllocationMethod": "dynamic",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbSSHBackendAddressPoolID')]"
}
],
"loadBalancerInboundNatPools": [
{
"id": "[variables('lbSSHNATPoolID')]"
}
],
"subnet": {
"id": "[variables('subnetRef')]"
}
}
}
],
"primary": true
}
}
]
},
"osProfile": {
"adminUsername": "[variables('adminUsername')]",
"computerNamePrefix": "[variables('managerVMNamePrefix')]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export ROLE=\"MANAGER\"', '\n', 'export LB_IP=\"', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress, '\"', '\n', variables('customData')))]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"keyData": "[variables('sshRSAPublicKey')]",
"path": "[variables('sshKeyPath')]"
}
]
}
}
},
"storageProfile": {
"imageReference": "[variables('imageReference')]",
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"name": "[concat(variables('managerVMNamePrefix'), 'vmssosdisk')]",
"vhdContainers": [
"[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]"
]
}
}
}
},
"sku": {
"capacity": "[variables('managerCount')]",
"name": "[variables('managerVMSize')]",
"tier": "Standard"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Compute/virtualMachineScaleSets"
},
{
"apiVersion": "[variables('apiVersion')]",
"dependsOn": [
"[variables('vnetID')]",
"[variables('lbID')]",
"storageLoop"
],
"location": "[variables('storageLocation')]",
"name": "[variables('vmssName')]",
"plan": {
"name": "[variables('imageSku')]",
"product": "[variables('imageOffer')]",
"publisher": "[variables('imagePublisher')]"
},
"properties": {
"overprovision": false,
"upgradePolicy": {
"mode": "Manual"
},
"virtualMachineProfile": {
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'))]"
}
},
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "workerNodeNic",
"properties": {
"ipConfigurations": [
{
"name": "nicipconfig",
"privateIPAllocationMethod": "dynamic",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[ variables('lbBackendAddressPoolID')]"
}
],
"subnet": {
"id": "[variables('subnetRef')]"
}
}
}
],
"primary": true
}
}
]
},
"osProfile": {
"adminUsername": "[variables('adminUsername')]",
"computerNamePrefix": "[variables('workerVMNamePrefix')]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export ROLE=\"WORKER\"', '\n', 'export LB_IP=\"', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress, '\"', '\n', variables('customData')))]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"keyData": "[variables('sshRSAPublicKey')]",
"path": "[variables('sshKeyPath')]"
}
]
}
}
},
"storageProfile": {
"imageReference": "[variables('imageReference')]",
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"name": "[concat(variables('workerVMNamePrefix'), 'vmssosdisk', 0)]",
"vhdContainers": [
"[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]",
"[concat('https://', variables('uniqueStringArray')[1], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]",
"[concat('https://', variables('uniqueStringArray')[2], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]",
"[concat('https://', variables('uniqueStringArray')[3], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]",
"[concat('https://', variables('uniqueStringArray')[4], variables('storageAccountSuffix'), variables('storageAccountDNSSuffix'), '/', variables('vhdContainerName'))]"
]
}
}
}
},
"sku": {
"capacity": "[variables('workerCount')]",
"name": "[variables('workerVMSize')]",
"tier": "Standard"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Compute/virtualMachineScaleSets"
},
{
"apiVersion": "[variables('apiVersion')]",
"location": "[variables('storageLocation')]",
"name": "[variables('lbPublicIPAddressName')]",
"properties": {
"publicIPAllocationMethod": "Static"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Network/publicIPAddresses"
},
{
"apiVersion": "[variables('apiVersion')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', variables('lbPublicIPAddressName'))]"
],
"location": "[resourceGroup().location]",
"name": "[variables('lbName')]",
"properties": {
"backendAddressPools": [
{
"name": "default"
}
],
"frontendIPConfigurations": [
{
"name": "default",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))]"
}
}
}
],
"probes": [
{
"name": "default",
"properties": {
"intervalInSeconds": 10,
"numberOfProbes": 2,
"port": 44554,
"protocol": "Tcp"
}
}
]
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Network/loadBalancers"
},
{
"apiVersion": "[variables('apiVersion')]",
"location": "[variables('storageLocation')]",
"name": "[variables('lbSSHPublicIPAddressName')]",
"properties": {
"publicIPAllocationMethod": "Static"
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Network/publicIPAddresses"
},
{
"apiVersion": "[variables('apiVersion')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', variables('lbSSHPublicIPAddressName'))]"
],
"location": "[resourceGroup().location]",
"name": "[variables('lbSSHName')]",
"properties": {
"backendAddressPools": [
{
"name": "default"
}
],
"frontendIPConfigurations": [
{
"name": "default",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbSSHPublicIPAddressName'))]"
}
}
}
],
"inboundNatPools": [
{
"name": "default",
"properties": {
"backendPort": 22,
"frontendIPConfiguration": {
"id": "[variables('lbSSHFrontEndIPConfigID')]"
},
"frontendPortRangeEnd": "[variables('natSSHEndPort')]",
"frontendPortRangeStart": "[variables('natSSHStartPort')]",
"protocol": "tcp"
}
}
],
"probes": [
{
"name": "default",
"properties": {
"intervalInSeconds": 10,
"numberOfProbes": 2,
"port": 22,
"protocol": "Tcp"
}
}
]
},
"tags": {
"channel": "[variables('channel')]",
"provider": "[toUpper(variables('DockerProviderTag'))]"
},
"type": "Microsoft.Network/loadBalancers"
}
],
"variables": {
"Description": "Docker for Azure 17.03.0 (17.03.0-ce-azure1)",
"DockerProviderTag": "8CF0E79C-DF97-4992-9B59-602DB544D354",
"accountID": "[subscription().subscriptionId]",
"adServicePrincipalAppID": "[parameters('adServicePrincipalAppID')]",
"adServicePrincipalAppSecret": "[parameters('adServicePrincipalAppSecret')]",
"adServicePrincipalTenantID": "[subscription().tenantId]",
"adminUsername": "docker",
"apiVersion": "2016-03-30",
"basePrefix": "[parameters('swarmName')]",
"channel": "stable",
"customData": "[concat('export ACCOUNT_ID=\"', variables('accountID'), '\"', '\n', 'export REGION=\"', variables('storageLocation'), '\"', '\n', 'export SUB_ID=\"', variables('accountID'), '\"', '\n', 'export GROUP_NAME=\"', variables('groupName'), '\"', '\n', 'export LB_NAME=\"', variables('lbName'), '\"', '\n', 'export APP_ID=\"', variables('adServicePrincipalAppID'), '\"', '\n', 'export APP_SECRET=\"', variables('adServicePrincipalAppSecret'), '\"', '\n', 'export TENANT_ID=\"', variables('adServicePrincipalTenantID'), '\"', '\n', 'export SWARM_INFO_STORAGE_ACCOUNT=\"', variables('swarmInfoStorageAccount'), '\"', '\n', 'export SWARM_LOGS_STORAGE_ACCOUNT=\"', variables('swarmLogsStorageAccount'), '\"', '\n', 'export PRIVATE_IP=$(ifconfig eth0 | grep \"inet addr:\" | cut -d: -f2 | cut -d\" \" -f1)\n', 'export AZURE_HOSTNAME=$(hostname)\n', '\n', 'docker run --label com.docker.editions.system --log-driver=json-file --restart=no -it -e LB_NAME -e SUB_ID -e ROLE -e REGION -e TENANT_ID -e APP_ID -e APP_SECRET -e ACCOUNT_ID -e GROUP_NAME -e PRIVATE_IP -e DOCKER_FOR_IAAS_VERSION -e SWARM_INFO_STORAGE_ACCOUNT -e SWARM_LOGS_STORAGE_ACCOUNT -e AZURE_HOSTNAME -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /var/lib/docker:/var/lib/docker -v /var/log:/var/log docker4x/init-azure:\"$DOCKER_FOR_IAAS_VERSION\"\n', '\n', 'export SWARM_NAME=\"', variables('dockerCloudClusterName'), '\"', '\n', 'export DOCKER_USER=\"', variables('dockerCloudUsername'), '\"', '\n', 'export DOCKER_PASS=\"', variables('dockerCloudAPIKey'), '\"', '\n', 'export DOCKERCLOUD_REST_HOST=\"', variables('dockerCloudRestHost'), '\"', '\n', 'export JWT_URL=\"', variables('dockerIDJWTURL'), '\"', '\n', 'export JWK_URL=\"', variables('dockerIDJWKURL'), '\"', '\n', '\n', '# cloud registration container\n', 'export IS_LEADER=$(docker node inspect self -f \"{{ .ManagerStatus.Leader }}\") \n', 'if [ \"$IS_LEADER\" == \"true\" ]; then\n', 'docker run --name=cloud_registration -v /var/run/docker.sock:/var/run/docker.sock -e DOCKER_USER -e DOCKER_PASS -e SWARM_NAME -e INTERNAL_ENDPOINT=\"$LB_IP\" -e DOCKERCLOUD_REST_HOST -e JWT_URL -e JWK_URL -e DEBUG=true docker4x/cloud-azure:$DOCKER_FOR_IAAS_VERSION\n', 'fi\n')]",
"dockerCloudAPIKey": "[parameters('DockerCloudAPIKey')]",
"dockerCloudClusterName": "[parameters('DockerCloudClusterName')]",
"dockerCloudRestHost": "[parameters('DockerCloudRestHost')]",
"dockerCloudUsername": "[parameters('DockerCloudUsername')]",
"dockerIDJWKURL": "[parameters('DockerIDJWKURL')]",
"dockerIDJWTURL": "[parameters('DockerIDJWTURL')]",
"groupName": "[resourceGroup().name]",
"imageOffer": "docker-ce",
"imagePublisher": "docker",
"imageReference": {
"offer": "[variables('imageOffer')]",
"publisher": "[variables('imagePublisher')]",
"sku": "[variables('imageSku')]",
"version": "[variables('imageVersion')]"
},
"imageSku": "docker-ce",
"imageVersion": "1.0.0",
"lbBackendAddressPoolID": "[concat(variables('lbID'),'/backendAddressPools/default')]",
"lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbName'))]",
"lbName": "externalLoadBalancer",
"lbPublicIPAddressName": "[concat(variables('basePrefix'), '-', variables('lbName'), '-public-ip')]",
"lbSSHBackendAddressPoolID": "[concat(variables('lbSSHID'),'/backendAddressPools/default')]",
"lbSSHFrontEndIPConfigID": "[concat(variables('lbSSHID'),'/frontendIPConfigurations/default')]",
"lbSSHID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbSSHName'))]",
"lbSSHNATPoolID": "[concat(variables('lbSSHID'),'/inboundNatPools/default')]",
"lbSSHName": "externalSSHLoadBalancer",
"lbSSHPublicIPAddressName": "[concat(variables('basePrefix'), '-', variables('lbSSHName'), '-public-ip')]",
"managerAddressPrefix": "172.16.0.0/24",
"managerCount": "[parameters('managerCount')]",
"managerEndpointDNSNamePrefix": "manager",
"managerFirstAddr": 5,
"managerVMNamePrefix": "swarm-manager",
"managerVMSize": "[parameters('managerVMSize')]",
"natSSHEndPort": 50100,
"natSSHStartPort": 50000,
"portalFQDN": "portal.azure.com",
"sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]",
"sshRSAPublicKey": "[parameters('sshPublicKey')]",
"storageAccountDNSSuffix": ".blob.core.windows.net",
"storageAccountSuffix": "docker",
"storageLocation": "[resourceGroup().location]",
"subnetName": "[concat(variables('basePrefix'), '-subnet')]",
"subnetPrefix": "10.0.0.0/8",
"subnetRef": "[concat(variables('vnetID'),'/subnets/', variables('subnetName'))]",
"swarmInfoStorageAccount": "[concat(variables('uniqueStringArray')[0], variables('storageAccountSuffix'))]",
"swarmInfoTable": "swarminfo",
"swarmLogsStorageAccount": "[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'))), 'logs')]",
"uniqueStringArray": [
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '0')))]",
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '1')))]",
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '2')))]",
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '3')))]",
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '4')))]"
],
"vhdContainerName": "dockervhd",
"virtualNetworkName": "[concat(variables('basePrefix'), '-vnet')]",
"vmssManagersName": "swarm-manager-vmss",
"vmssName": "swarm-worker-vmss",
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]",
"workerCount": "[parameters('workerCount')]",
"workerVMNamePrefix": "swarm-worker",
"workerVMSize": "[parameters('workerVMSize')]"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment