diff --git a/acs-engine.go b/acs-engine.go index 9c627603c..ad5cc557f 100644 --- a/acs-engine.go +++ b/acs-engine.go @@ -166,17 +166,17 @@ func main() { if !*noPrettyPrint { if template, err = acsengine.PrettyPrintArmTemplate(template); err != nil { - fmt.Fprintf(os.Stderr, "error pretty printing template %s", err.Error()) + fmt.Fprintf(os.Stderr, "error pretty printing template: %s \n", err.Error()) os.Exit(1) } if parameters, err = acsengine.PrettyPrintJSON(parameters); err != nil { - fmt.Fprintf(os.Stderr, "error pretty printing template %s", err.Error()) + fmt.Fprintf(os.Stderr, "error pretty printing template parameters: %s \n", err.Error()) os.Exit(1) } } if err = writeArtifacts(containerService, apiVersion, template, parameters, *artifactsDir, certsGenerated, *parametersOnly); err != nil { - fmt.Fprintf(os.Stderr, "error writing artifacts %s", err.Error()) + fmt.Fprintf(os.Stderr, "error writing artifacts: %s \n", err.Error()) os.Exit(1) } } diff --git a/docs/README.md b/docs/README.md index b9b3a289a..804b29484 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,6 +11,7 @@ This cluster definition examples demonstrate how to create a customized Docker E * [DC/OS Walkthrough](dcos.md) - shows how to create a DC/OS enabled Docker cluster on Azure * [Kubernetes Walkthrough](kubernetes.md) - shows how to create a Kubernetes enabled Docker cluster on Azure * [Swarm Walkthrough](swarm.md) - shows how to create a Swarm enabled Docker cluster on Azure +* [DockerCE Walkthrough](swarmmode.md) - shows how to create a DockerCE cluster on Azure * [Custom VNET](../examples/vnet) - shows how to use a custom VNET * [Attached Disks](../examples/disks-storageaccount) - shows how to attach up to 4 disks per node * [Managed Disks](../examples/disks-managed) (under private preview) - shows how to use managed disks diff --git a/docs/clusterdefinition.md b/docs/clusterdefinition.md index 6f6cb1db4..bb361748b 100644 --- a/docs/clusterdefinition.md +++ b/docs/clusterdefinition.md @@ -22,6 +22,7 @@ Here are the valid values for the orchestrator types: 1. `DCOS` - this represents the [DC/OS orchestrator](dcos.md). [Older versions of DCOS173 and DCOS184 may be specified](../examples/dcos-versions). 2. `Kubernetes` - this represents the [Kubernetes orchestrator](kubernetes.md). 3. `Swarm` - this represents the [Swarm orchestrator](swarm.md). +4. `DockerCE` - this represents the [DockerCE/Swarm Mode orchestrator](swarmmode.md). ### masterProfile `masterProfile` describes the settings for master configuration. @@ -108,6 +109,8 @@ Here are the valid values for the orchestrator types: 1. `DCOS` - this represents the [DC/OS orchestrator](dcos.md). 2. `Swarm` - this represents the [Swarm orchestrator](swarm.md). +3. `Kubernetes` - this represents the [Kubernetes orchestrator](kubernetes.md). +4. `DockerCE` - this represents the [DockerCE/Swarm Mode orchestrator](swarmmode.md). ### masterProfile `masterProfile` describes the settings for master configuration. diff --git a/docs/images/dockernodels.png b/docs/images/dockernodels.png new file mode 100644 index 000000000..d53e50d57 Binary files /dev/null and b/docs/images/dockernodels.png differ diff --git a/docs/images/dockerserviceps.png b/docs/images/dockerserviceps.png new file mode 100644 index 000000000..87d5135ab Binary files /dev/null and b/docs/images/dockerserviceps.png differ diff --git a/docs/images/dockerservicescale.png b/docs/images/dockerservicescale.png new file mode 100644 index 000000000..1d3e38ddc Binary files /dev/null and b/docs/images/dockerservicescale.png differ diff --git a/docs/swarm.md b/docs/swarm.md index d023aac81..02abf2b8f 100644 --- a/docs/swarm.md +++ b/docs/swarm.md @@ -14,7 +14,7 @@ Here are the steps to deploy a simple Swarm cluster: Once your Swarm cluster has been deployed you will have a resource group containing: -1. a set of 1,3, or 5 masters in a master availability set. Each master's SSH can be accessed via the public dns address at ports 2200..2204 +1. a set of 1,3, or 5 masters in a master availability set. Each master's SSH can be accessed via the public dns address at ports 2200..2204. First master's SSH can also be accessed via public dns address on port 22. 2. a set of agents in a VM scale set (VMSS). The agent VMs can be accessed through a master. See [agent forwarding](ssh.md#key-management-and-agent-forwarding-with-windows-pageant) for an example of how to do this. @@ -43,34 +43,34 @@ After completing this walkthrough you will know how to: ![Image of docker scaling](images/findingoutputs.png) - 3. SSH to port 2200 of the master FQDN. See [agent forwarding](ssh.md#key-management-and-agent-forwarding-with-windows-pageant) for an example of how to do this. + 2. SSH to port 2200 of the master FQDN. See [agent forwarding](ssh.md#key-management-and-agent-forwarding-with-windows-pageant) for an example of how to do this. - 4. Set the DOCKER_HOST environment variable to `:2375`: e.g. ```export DOCKER_HOST=:2375``` + 3. Set the DOCKER_HOST environment variable to `:2375`: e.g. ```export DOCKER_HOST=:2375``` - 5. Type `docker info` to see the status of the agent nodes. + 4. Type `docker info` to see the status of the agent nodes. ![Image of docker info](images/dockerinfo.png) - 6. Type `docker run -it hello-world` to see the hello-world test app run on one of the agents (the '-it' switches ensure output is displayed on your client) + 5. Type `docker run -it hello-world` to see the hello-world test app run on one of the agents (the '-it' switches ensure output is displayed on your client) - 7. Now let's create a simple web app and expose to the world. Start by using your favorite linux file editor to create a file named `docker-compose.yml` with the following contents: - ```yaml - web: - image: "yeasy/simple-web" - ports: - - "80:80" - restart: "always" + 6. Now let's create a simple web app and expose to the world. Start by using your favorite linux file editor to create a file named `docker-compose.yml` with the following contents: ``` - 8. type `docker-compose up -d` to create the simple web server. This will take a few minutes to pull the image + web: + image: "yeasy/simple-web" + ports: + - "80:80" + restart: "always" + ``` + 7. type `docker-compose up -d` to create the simple web server. This will take a few minutes to pull the image - 9. once completed, type `docker ps` to see the running image. + 8. once completed, type `docker ps` to see the running image. ![Image of docker ps](images/dockerps.png) - 10. in your web browser hit the AGENTFQDN endpoint (**not the master FQDN**) you recorded in step #1 and you should see the following page, with a counter that increases on each refresh. + 9. in your web browser hit the AGENTFQDN endpoint (**not the master FQDN**) you recorded in step #1 and you should see the following page, with a counter that increases on each refresh. ![Image of the web page](images/swarmbrowser.png) - 11. You can now scale the web application. For example, if you have 3 agents, you can type `docker-compose scale web=**3**`, and this will scale to the rest of your agents. Note that in this example you can only scale up to the number of agents that you have since each container requires port 80, so if you deployed a single agent, you won't be able to scale up. The Azure load balancer will automatically pick up the new containers. + 10. You can now scale the web application. For example, if you have 3 agents, you can type `docker-compose scale web=**3**`, and this will scale to the rest of your agents. Note that in this example you can only scale up to the number of agents that you have since each container requires port 80, so if you deployed a single agent, you won't be able to scale up. The Azure load balancer will automatically pick up the new containers. ![Image of docker scaling](images/dockercomposescale.png) diff --git a/docs/swarmmode.md b/docs/swarmmode.md new file mode 100644 index 000000000..422641708 --- /dev/null +++ b/docs/swarmmode.md @@ -0,0 +1,73 @@ +# Microsoft Azure Container Service Engine - DockerCE/Swarm Mode Walkthrough + +## Deployment + +Here are the steps to deploy a simple DockerCE cluster: + +1. [install acs-engine](acsengine.md#downloading-and-building-acs-engine) +2. [generate your ssh key](ssh.md#ssh-key-generation) +3. edit the [DockerCE example](../examples/swarmmode.json) and fill in the blank strings +4. [generate the template](acsengine.md#generating-a-template) +5. [deploy the output azuredeploy.json and azuredeploy.parameters.json](../README.md#deployment-usage) + +## Walkthrough + +Once your DockerCE/Swarm Mode cluster has been deployed you will have a resource group containing: + +1. a set of 1,3, or 5 masters in a master availability set. Each master's SSH can be accessed via the public dns address at ports 2200..2204. First master's SSH can also be accessed via public dns address on port 22. + +2. a set of agents in a VM scale set (VMSS). The agent VMs can be accessed through a master. See [agent forwarding](ssh.md#key-management-and-agent-forwarding-with-windows-pageant) for an example of how to do this. + +The following image shows the architecture of a container service cluster with 3 masters, and 3 agents: + + ![Image of Swarm container service on azure](images/swarm.png) + + All VMs are in the same VNET where the masters are on private subnet 172.16.0.0/24 and the agents are on the private subnet, 10.0.0.0/16, and fully accessible to each other. + +## Create your First Two DockerCE/Swarm Mode Docker services: hello-world, and Docker web app + +After completing this walkthrough you will know how to: + * display information from Swarm Mode, + * deploy a simple Docker hello-world app using docker-compose, + * and deploy a simple Docker web app publically available to the world. + + + 1. After successfully deploying the template write down the two output master and agent FQDNs (Fully Qualified Domain Name). + 1. If using Powershell or CLI, the output parameters are the last values printed. + 2. If using Portal, to get the output you need to: + 1. navigate to "resource group" + 2. click on the resource group you just created + 3. then click on "Succeeded" under *last deployment* + 4. then click on the "Microsoft.Template" + 5. now you can copy the output FQDNs and sample SSH commands + + ![Image of docker scaling](images/findingoutputs.png) + + 2. SSH to port 2200 of the master FQDN. See [agent forwarding](ssh.md#key-management-and-agent-forwarding-with-windows-pageant) for an example of how to do this. + + 3. Type `docker node ls` to view the list of nodes (and their status) in the Swarm. + ![Image of docker node ls](images/dockernodels.png) + + 4. Type `docker run -it hello-world` to see the hello-world test app run on one of the agents (the '-it' switches ensure output is displayed on your client) + + 5. Now let's create a simple service in a swarm and expose it to the world. Type `docker service create --name fe --publish 80:80 yeasy/simple-web` + + 6. Once completed, type `docker service ps fe` to see the running service. + + ![Image of docker service ps](images/dockerserviceps.png) + + 7. In your web browser hit the AGENTFQDN endpoint (**not the master FQDN**) you recorded in step #1 and you should see the following page, with a counter that increases on each refresh. + + ![Image of the web page](images/swarmbrowser.png) + + 8. You can now scale the service. You can type `docker service scale fe=5`, and this will scale to the rest of your agents. Note that in this example you can only scale up to the number of agents that you have since each container requires port 80, so if you deployed a single agent, you won't be able to scale up. The Azure load balancer will automatically pick up the new containers. + + ![Image of service scaling](images/dockerservicescale.png) + +# Learning More + +Here are recommended links to learn more about Swarm Mode, Docker, and Docker Compose: + +1. [Docker](https://docs.docker.com/) - learn more through Docker documentation. + +2. [Docker Swarm Mode](https://docs.docker.com/engine/swarm/) - learn more about Docker Swarm Mode. \ No newline at end of file diff --git a/examples/README.md b/examples/README.md index 3519ce596..38b450c44 100644 --- a/examples/README.md +++ b/examples/README.md @@ -11,6 +11,7 @@ This cluster definition examples demonstrate how to create a customized Docker E * [DC/OS Walkthrough](../docs/dcos.md) - shows how to create a DC/OS enabled Docker cluster on Azure * [Kubernetes Walkthrough](../docs/kubernetes.md) - shows how to create a Kubernetes enabled Docker cluster on Azure * [Swarm Walkthrough](../docs/swarm.md) - shows how to create a Swarm enabled Docker cluster on Azure +* [DockerCE Walkthrough](../docs/swarmmode.md) - shows how to create a DockerCE cluster on Azure * [Custom VNET](vnet) - shows how to use a custom VNET * [Attached Disks](disks-storageaccount) - shows how to attach up to 4 disks per node * [Managed Disks](disks-managed) (under private preview) - shows how to use managed disks diff --git a/examples/disks-managed/swarm-vmas.json b/examples/disks-managed/swarm-vmas.json index 12356e5b5..3fb4909d7 100644 --- a/examples/disks-managed/swarm-vmas.json +++ b/examples/disks-managed/swarm-vmas.json @@ -31,10 +31,6 @@ ] } ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, "linuxProfile": { "adminUsername": "azureuser", "ssh": { diff --git a/examples/disks-managed/swarm-vmss.json b/examples/disks-managed/swarm-vmss.json index 893f879bf..912f778b4 100644 --- a/examples/disks-managed/swarm-vmss.json +++ b/examples/disks-managed/swarm-vmss.json @@ -31,10 +31,6 @@ ] } ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, "linuxProfile": { "adminUsername": "azureuser", "ssh": { diff --git a/examples/disks-managed/swarmmode-vmas.json b/examples/disks-managed/swarmmode-vmas.json new file mode 100644 index 000000000..1ae6dacc8 --- /dev/null +++ b/examples/disks-managed/swarmmode-vmas.json @@ -0,0 +1,45 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 1, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "ManagedDisks" + }, + { + "name": "agentpool2", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "ManagedDisks", + "dnsPrefix": "", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/disks-managed/swarmmode-vmss.json b/examples/disks-managed/swarmmode-vmss.json new file mode 100644 index 000000000..3db041f8c --- /dev/null +++ b/examples/disks-managed/swarmmode-vmss.json @@ -0,0 +1,45 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 1, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "ManagedDisks" + }, + { + "name": "agentpool2", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "ManagedDisks", + "dnsPrefix": "", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/disks-storageaccount/swarmmode.json b/examples/disks-storageaccount/swarmmode.json new file mode 100644 index 000000000..c7873f1b0 --- /dev/null +++ b/examples/disks-storageaccount/swarmmode.json @@ -0,0 +1,47 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agent128", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [128, 128, 128, 128] + }, + { + "name": "agent1public", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [1], + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/keyvaultcerts/swarmmode.json b/examples/keyvaultcerts/swarmmode.json new file mode 100644 index 000000000..c7873f1b0 --- /dev/null +++ b/examples/keyvaultcerts/swarmmode.json @@ -0,0 +1,47 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agent128", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [128, 128, 128, 128] + }, + { + "name": "agent1public", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [1], + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/largeclusters/swarmmode-vmas.json b/examples/largeclusters/swarmmode-vmas.json new file mode 100644 index 000000000..fa2e4e08f --- /dev/null +++ b/examples/largeclusters/swarmmode-vmas.json @@ -0,0 +1,97 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentprivate0", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate1", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate2", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate3", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate4", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate5", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate6", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate7", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate8", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate9", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate10", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentprivate11", + "count": 100, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/largeclusters/swarmmode.json b/examples/largeclusters/swarmmode.json new file mode 100644 index 000000000..92058b81f --- /dev/null +++ b/examples/largeclusters/swarmmode.json @@ -0,0 +1,85 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 1, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentprivate0", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate1", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate2", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate3", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate4", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate5", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate6", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate7", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate8", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate9", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate10", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentprivate11", + "count": 100, + "vmSize": "Standard_D2_v2" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/swarmmode.json b/examples/swarmmode.json new file mode 100644 index 000000000..9e1346202 --- /dev/null +++ b/examples/swarmmode.json @@ -0,0 +1,36 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/examples/vnet/swarmmodevnet.json b/examples/vnet/swarmmodevnet.json new file mode 100644 index 000000000..746aa596e --- /dev/null +++ b/examples/vnet/swarmmodevnet.json @@ -0,0 +1,45 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "", + "vmSize": "Standard_D2_v2", + "vnetSubnetId": "/subscriptions/b52fce95-de5f-4b37-afca-db203a5d0b6a/resourceGroups/anhoweExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleMasterSubnet", + "firstConsecutiveStaticIP": "10.100.0.5" + }, + "agentPoolProfiles": [ + { + "name": "agentprivate", + "count": 3, + "vmSize": "Standard_D2_v2", + "vnetSubnetId": "/subscriptions/b52fce95-de5f-4b37-afca-db203a5d0b6a/resourceGroups/anhoweExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet" + }, + { + "name": "agentpublic", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "", + "vnetSubnetId": "/subscriptions/b52fce95-de5f-4b37-afca-db203a5d0b6a/resourceGroups/anhoweExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "" + } + ] + } + } + } +} \ No newline at end of file diff --git a/parts/configure-swarm-cluster.sh b/parts/configure-swarm-cluster.sh index 1d05f4ade..eadb26255 100644 --- a/parts/configure-swarm-cluster.sh +++ b/parts/configure-swarm-cluster.sh @@ -275,7 +275,7 @@ fi echo "processes at end of script" ps ax date -echo "completed mesos cluster configuration" +echo "completed Swarm cluster configuration" echo "restart system to install any remaining software" if isagent ; then diff --git a/parts/configure-swarmmode-cluster.sh b/parts/configure-swarmmode-cluster.sh new file mode 100644 index 000000000..7a017640d --- /dev/null +++ b/parts/configure-swarmmode-cluster.sh @@ -0,0 +1,283 @@ +#!/bin/bash + +########################################################### +# Configure Swarm Mode One Box +# +# This installs the following components +# - Docker +# - Docker Compose +# - Swarm Mode masters +# - Swarm Mode agents +########################################################### + +set -x + +echo "starting Swarm Mode cluster configuration" +date +ps ax + +DOCKER_COMPOSE_VERSION="1.9.0" +############# +# Parameters +############# + +MASTERCOUNT=${1} +MASTERPREFIX=${2} +MASTERFIRSTADDR=${3} +AZUREUSER=${4} +POSTINSTALLSCRIPTURI=${5} +BASESUBNET=${6} +VMNAME=`hostname` +VMNUMBER=`echo $VMNAME | sed 's/.*[^0-9]\([0-9]\+\)*$/\1/'` +VMPREFIX=`echo $VMNAME | sed 's/\(.*[^0-9]\)*[0-9]\+$/\1/'` + +echo "Master Count: $MASTERCOUNT" +echo "Master Prefix: $MASTERPREFIX" +echo "Master First Addr: $MASTERFIRSTADDR" +echo "vmname: $VMNAME" +echo "VMNUMBER: $VMNUMBER, VMPREFIX: $VMPREFIX" +echo "BASESUBNET: $BASESUBNET" +echo "AZUREUSER: $AZUREUSER" + +################### +# Common Functions +################### + +ensureAzureNetwork() +{ + # ensure the network works + networkHealthy=1 + for i in {1..12}; do + wget -O/dev/null http://bing.com + if [ $? -eq 0 ] + then + # hostname has been found continue + networkHealthy=0 + echo "the network is healthy" + break + fi + sleep 10 + done + if [ $networkHealthy -ne 0 ] + then + echo "the network is not healthy, aborting install" + ifconfig + ip a + exit 2 + fi + # ensure the host ip can resolve + networkHealthy=1 + for i in {1..120}; do + hostname -i + if [ $? -eq 0 ] + then + # hostname has been found continue + networkHealthy=0 + echo "the network is healthy" + break + fi + sleep 1 + done + if [ $networkHealthy -ne 0 ] + then + echo "the network is not healthy, cannot resolve ip address, aborting install" + ifconfig + ip a + exit 2 + fi +} +ensureAzureNetwork +HOSTADDR=`hostname -i` + +ismaster () +{ + if [ "$MASTERPREFIX" == "$VMPREFIX" ] + then + return 0 + else + return 1 + fi +} +if ismaster ; then + echo "this node is a master" +fi + +isagent() +{ + if ismaster ; then + return 1 + else + return 0 + fi +} +if isagent ; then + echo "this node is an agent" +fi + +MASTER0IPADDR="${BASESUBNET}${MASTERFIRSTADDR}" + +###################### +# resolve self in DNS +###################### + +echo "$HOSTADDR $VMNAME" | sudo tee -a /etc/hosts + +################ +# Install Docker +################ + +echo "Installing and configuring Docker" + +installDocker() +{ + for i in {1..10}; do + wget --tries 4 --retry-connrefused --waitretry=15 -qO- https://get.docker.com | sh + if [ $? -eq 0 ] + then + # hostname has been found continue + echo "Docker installed successfully" + break + fi + sleep 10 + done +} +time installDocker + +sudo usermod -aG docker $AZUREUSER + +echo "Updating Docker daemon options" + +updateDockerDaemonOptions() +{ + sudo mkdir -p /etc/systemd/system/docker.service.d + # Start Docker and listen on :2375 (no auth, but in vnet) and + # also have it bind to the unix socket at /var/run/docker.sock + sudo bash -c 'echo "[Service] + ExecStart= + ExecStart=/usr/bin/docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock + " > /etc/systemd/system/docker.service.d/override.conf' +} +time updateDockerDaemonOptions + +echo "Installing Docker Compose" +installDockerCompose() +{ + # sudo -i + + for i in {1..10}; do + wget --tries 4 --retry-connrefused --waitretry=15 -qO- https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose + if [ $? -eq 0 ] + then + # hostname has been found continue + echo "docker-compose installed successfully" + break + fi + sleep 10 + done +} +time installDockerCompose +chmod +x /usr/local/bin/docker-compose + +sudo systemctl daemon-reload +sudo service docker restart + +ensureDocker() +{ + # ensure that docker is healthy + dockerHealthy=1 + for i in {1..3}; do + sudo docker info + if [ $? -eq 0 ] + then + # hostname has been found continue + dockerHealthy=0 + echo "Docker is healthy" + sudo docker ps -a + break + fi + sleep 10 + done + if [ $dockerHealthy -ne 0 ] + then + echo "Docker is not healthy" + fi +} +ensureDocker + +############################################## +# configure init rules restart all processes +############################################## + +if ismaster ; then + if [ "$HOSTADDR" = "$MASTER0IPADDR" ]; then + echo "Creating a new Swarm on first master" + docker swarm init --advertise-addr $(hostname -i):2377 --listen-addr $(hostname -i):2377 + else + echo "Secondary master attempting to join an existing Swarm" + swarmmodetoken="" + swarmmodetokenAcquired=1 + for i in {1..120}; do + swarmmodetoken=$(docker -H $MASTER0IPADDR:2375 swarm join-token -q manager) + if [ $? -eq 0 ]; then + swarmmodetokenAcquired=0 + break + fi + sleep 5 + done + if [ $swarmmodetokenAcquired -ne 0 ] + then + echo "Secondary master couldn't connect to Swarm, aborting install" + exit 2 + fi + docker swarm join --token $swarmmodetoken $MASTER0IPADDR:2377 + fi +fi + +if ismaster ; then + echo "Having ssh listen to port 2222 as well as 22" + sudo sed -i "s/^Port 22$/Port 22\nPort 2222/1" /etc/ssh/sshd_config +fi + +if ismaster ; then + echo "Setting availability of master node: '$VMNAME' to pause" + docker node update --availability pause $VMNAME +fi + +if isagent ; then + echo "Agent attempting to join an existing Swarm" + swarmmodetoken="" + swarmmodetokenAcquired=1 + for i in {1..120}; do + swarmmodetoken=$(docker -H $MASTER0IPADDR:2375 swarm join-token -q worker) + if [ $? -eq 0 ]; then + swarmmodetokenAcquired=0 + break + fi + sleep 5 + done + if [ $swarmmodetokenAcquired -ne 0 ] + then + echo "Agent couldn't join Swarm, aborting install" + exit 2 + fi + docker swarm join --token $swarmmodetoken $MASTER0IPADDR:2377 +fi + +if [ $POSTINSTALLSCRIPTURI != "disabled" ] +then + echo "downloading, and kicking off post install script" + /bin/bash -c "wget --tries 20 --retry-connrefused --waitretry=15 -qO- $POSTINSTALLSCRIPTURI | nohup /bin/bash >> /var/log/azure/cluster-bootstrap-postinstall.log 2>&1 &" +fi + +echo "processes at end of script" +ps ax +date +echo "completed Swarm Mode cluster configuration" + +echo "restart system to install any remaining software" +if isagent ; then + shutdown -r now +else + # wait 1 minute to restart master + /bin/bash -c "shutdown -r 1 &" +fi diff --git a/parts/masteroutputs.t b/parts/masteroutputs.t index 8a66dc899..07ba2f8d2 100644 --- a/parts/masteroutputs.t +++ b/parts/masteroutputs.t @@ -3,8 +3,9 @@ "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" } {{if GetClassicMode}} + , {{if RequiresFakeAgentOutput}} - ,"agentFQDN": { + "agentFQDN": { "type": "string", "value": "" }, diff --git a/parts/swarmagentresourcesclassic.t b/parts/swarmagentresourcesclassic.t index b2746cdb0..3b6d8decd 100644 --- a/parts/swarmagentresourcesclassic.t +++ b/parts/swarmagentresourcesclassic.t @@ -127,7 +127,11 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", +{{if IsSwarmMode}} + {{GetAgentSwarmModeCustomData}} +{{else}} {{GetAgentSwarmCustomData}} +{{end}} "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/parts/swarmagentresourcesvmas.t b/parts/swarmagentresourcesvmas.t index c325cd20e..a86b48e34 100644 --- a/parts/swarmagentresourcesvmas.t +++ b/parts/swarmagentresourcesvmas.t @@ -181,7 +181,11 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex())]", - {{GetAgentSwarmCustomData}} +{{if IsSwarmMode}} + {{GetAgentSwarmModeCustomData}} +{{else}} + {{GetAgentSwarmCustomData}} +{{end}} "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/parts/swarmagentresourcesvmss.t b/parts/swarmagentresourcesvmss.t index e0b33be47..060b387f3 100644 --- a/parts/swarmagentresourcesvmss.t +++ b/parts/swarmagentresourcesvmss.t @@ -126,7 +126,11 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", - {{GetAgentSwarmCustomData}} +{{if IsSwarmMode}} + {{GetAgentSwarmModeCustomData}} +{{else}} + {{GetAgentSwarmCustomData}} +{{end}} "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/parts/swarmmasterresources.t b/parts/swarmmasterresources.t index f8353c8ef..e51d4e816 100644 --- a/parts/swarmmasterresources.t +++ b/parts/swarmmasterresources.t @@ -95,6 +95,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -106,7 +124,8 @@ "[variables('vnetID')]", {{end}} "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -120,11 +139,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -170,7 +185,11 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - {{GetMasterSwarmCustomData}} + {{if .OrchestratorProfile.IsSwarmMode}} + {{GetMasterSwarmModeCustomData}} + {{else}} + {{GetMasterSwarmCustomData}} + {{end}} "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/parts/swarmmastervars.t b/parts/swarmmastervars.t index a20f67a0e..e1ae3e55f 100644 --- a/parts/swarmmastervars.t +++ b/parts/swarmmastervars.t @@ -8,9 +8,14 @@ {{if .HasManagedDisks}} "apiVersionStorageManagedDisks": "2016-04-30-preview", {{end}} - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", +{{if .OrchestratorProfile.IsSwarmMode}} + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", +{{else}} + "configureClusterScriptFile": "configure-swarm-cluster.sh", +{{end}} + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentMaxVMs": 100, "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", {{if .LinuxProfile.HasSecrets}} @@ -35,8 +40,12 @@ ], {{end}} "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", +{{if GetClassicMode}} + "masterCount": "[parameters('masterCount')]", +{{else}} "masterCount": {{.MasterProfile.Count}}, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", +{{end}} + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", @@ -65,10 +74,47 @@ "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", "masterVMSize": "[parameters('masterVMSize')]", "nameSuffix": "[parameters('nameSuffix')]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterLbInboundNatRules":[ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "orchestratorName": "swarm", "osImageOffer": "UbuntuServer", "osImagePublisher": "Canonical", +{{if .OrchestratorProfile.IsSwarmMode}} + "osImageSKU": "16.04.0-LTS", +{{else}} "osImageSKU": "14.04.4-LTS", +{{end}} "osImageVersion": "latest", "postInstallScriptURI": "disabled", "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", diff --git a/pkg/acsengine/engine.go b/pkg/acsengine/engine.go index 4f617d02d..76e62d8c7 100644 --- a/pkg/acsengine/engine.go +++ b/pkg/acsengine/engine.go @@ -34,6 +34,7 @@ const ( const ( swarmProvision = "configure-swarm-cluster.sh" swarmWindowsProvision = "Install-ContainerHost-And-Join-Swarm.ps1" + swarmModeProvision = "configure-swarmmode-cluster.sh" ) const ( @@ -80,6 +81,7 @@ var commonTemplateFiles = []string{agentOutputs, agentParams, classicParams, mas var dcosTemplateFiles = []string{dcosAgentResourcesVMAS, dcosAgentResourcesVMSS, dcosAgentVars, dcosBaseFile, dcosMasterResources, dcosMasterVars} var kubernetesTemplateFiles = []string{kubernetesBaseFile, kubernetesAgentResourcesVMAS, kubernetesAgentVars, kubernetesMasterResources, kubernetesMasterVars, kubernetesParams} var swarmTemplateFiles = []string{swarmBaseFile, swarmAgentResourcesVMAS, swarmAgentVars, swarmAgentResourcesVMSS, swarmAgentResourcesClassic, swarmBaseFile, swarmMasterResources, swarmMasterVars, swarmWinAgentResourcesVMAS, swarmWinAgentResourcesVMSS, windowsParams} +var swarmModeTemplateFiles = []string{swarmBaseFile, swarmAgentResourcesVMAS, swarmAgentVars, swarmAgentResourcesVMSS, swarmAgentResourcesClassic, swarmBaseFile, swarmMasterResources, swarmMasterVars, swarmWinAgentResourcesVMAS, swarmWinAgentResourcesVMSS} func (t *TemplateGenerator) verifyFiles() error { allFiles := append(commonTemplateFiles, dcosTemplateFiles...) @@ -144,7 +146,7 @@ func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerServ return "", "", certsGenerated, err } var parametersMap map[string]interface{} - if parametersMap, err = getParameters(properties); err != nil { + if parametersMap, err = getParameters(properties, t.ClassicMode); err != nil { return "", "", certsGenerated, err } var parameterBytes []byte @@ -197,6 +199,9 @@ func prepareTemplateFiles(properties *api.Properties) ([]string, string, error) } else if properties.OrchestratorProfile.OrchestratorType == api.Kubernetes { files = append(commonTemplateFiles, kubernetesTemplateFiles...) baseFile = kubernetesBaseFile + } else if properties.OrchestratorProfile.OrchestratorType == api.DockerCE { + files = append(commonTemplateFiles, swarmModeTemplateFiles...) + baseFile = swarmBaseFile } else { return nil, "", fmt.Errorf("orchestrator '%s' is unsupported", properties.OrchestratorProfile.OrchestratorType) } @@ -204,7 +209,7 @@ func prepareTemplateFiles(properties *api.Properties) ([]string, string, error) return files, baseFile, nil } -func getParameters(properties *api.Properties) (map[string]interface{}, error) { +func getParameters(properties *api.Properties, isClassicMode bool) (map[string]interface{}, error) { parametersMap := map[string]interface{}{} // Master Parameters @@ -217,6 +222,9 @@ func getParameters(properties *api.Properties) (map[string]interface{}, error) { } addValue(parametersMap, "firstConsecutiveStaticIP", properties.MasterProfile.FirstConsecutiveStaticIP) addValue(parametersMap, "masterVMSize", properties.MasterProfile.VMSize) + if isClassicMode { + addValue(parametersMap, "masterCount", properties.MasterProfile.Count) + } addValue(parametersMap, "sshRSAPublicKey", properties.LinuxProfile.SSH.PublicKeys[0].KeyData) for i, s := range properties.LinuxProfile.Secrets { addValue(parametersMap, fmt.Sprintf("linuxKeyVaultID%d", i), s.SourceVault.ID) @@ -291,6 +299,9 @@ func (t *TemplateGenerator) getTemplateFuncMap(properties *api.Properties) map[s "RequiresFakeAgentOutput": func() bool { return properties.OrchestratorProfile.OrchestratorType == api.Kubernetes }, + "IsSwarmMode": func() bool { + return properties.OrchestratorProfile.IsSwarmMode() + }, "IsPublic": func(ports []int) bool { return len(ports) > 0 }, @@ -408,6 +419,18 @@ func (t *TemplateGenerator) getTemplateFuncMap(properties *api.Properties) map[s } return str }, + "GetMasterSwarmModeCustomData": func() string { + files := []string{swarmModeProvision} + str := buildYamlFileWithWriteFiles(files) + str = escapeSingleLine(str) + return fmt.Sprintf("\"customData\": \"[base64('%s')]\",", str) + }, + "GetAgentSwarmModeCustomData": func() string { + files := []string{swarmModeProvision} + str := buildYamlFileWithWriteFiles(files) + str = escapeSingleLine(str) + return fmt.Sprintf("\"customData\": \"[base64(concat('%s',variables('agentRunCmdFile'),variables('agentRunCmd')))]\",", str) + }, "AnyAgentHasDisks": func() bool { for _, agentProfile := range properties.AgentPoolProfiles { if agentProfile.HasDisks() { diff --git a/pkg/acsengine/engine_test.go b/pkg/acsengine/engine_test.go index e5a9c3b8d..79b2587b8 100644 --- a/pkg/acsengine/engine_test.go +++ b/pkg/acsengine/engine_test.go @@ -44,11 +44,16 @@ func TestExpected(t *testing.T) { expectedJsonStr := strings.Replace(string(expectedJson), "\r", "", -1) expectedParamsStr := strings.Replace(string(expectedParams), "\r", "", -1) + isClassicMode := false + if strings.Contains(tuple.GetExpectedArmTemplateFilename(), "_classicmode_expected") { + isClassicMode = true + } + // test the output container service 3 times: // 1. first time tests loaded containerService // 2. second time tests generated containerService // 3. third time tests the generated containerService from the generated containerService - templateGenerator, e3 := InitializeTemplateGenerator(false) + templateGenerator, e3 := InitializeTemplateGenerator(isClassicMode) if e3 != nil { t.Error(e3.Error()) continue diff --git a/pkg/acsengine/templates.go b/pkg/acsengine/templates.go index 12802ef26..35ce4aed7 100644 --- a/pkg/acsengine/templates.go +++ b/pkg/acsengine/templates.go @@ -5,6 +5,7 @@ // ../../parts/agentparams.t // ../../parts/classicparams.t // ../../parts/configure-swarm-cluster.sh +// ../../parts/configure-swarmmode-cluster.sh // ../../parts/dcosagentresourcesvmas.t // ../../parts/dcosagentresourcesvmss.t // ../../parts/dcosagentvars.t @@ -126,7 +127,7 @@ func installContainerhostAndJoinSwarmPs1() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "Install-ContainerHost-And-Join-Swarm.ps1", size: 6132, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "Install-ContainerHost-And-Join-Swarm.ps1", size: 6132, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -146,7 +147,7 @@ func agentoutputsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "agentoutputs.t", size: 212, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "agentoutputs.t", size: 212, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -166,7 +167,7 @@ func agentparamsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "agentparams.t", size: 1422, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "agentparams.t", size: 1422, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -186,12 +187,12 @@ func classicparamsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "classicparams.t", size: 5128, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "classicparams.t", size: 5128, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _configureSwarmClusterSh = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x59\xef\x72\xdb\xb8\x11\xff\xae\x19\xbd\xc3\x1e\xcd\x39\xdb\x97\x50\x94\x94\xe4\xda\x2a\xa3\x74\x1c\x47\x69\x3c\x3d\x5b\x1e\xc9\xbe\x76\x1a\xdf\xc5\x30\xb9\x92\x50\x93\x00\x0f\x00\x65\xbb\x3e\xbd\x7b\x07\x00\x41\x91\x12\xe5\xcb\xb5\x49\x67\xaa\x4c\x2c\x72\xb1\xc0\xfe\xf9\x2d\x76\x17\xd0\xde\x37\xe1\x0d\x65\xe1\x0d\x91\x8b\x76\xab\xdd\x92\xa8\x20\xb8\xd7\x4f\x18\x2d\x38\x78\x52\x11\xa1\x28\x9b\x83\xbc\x23\x22\x85\x28\xc9\xa5\x42\x01\x11\x67\x33\x3a\xcf\x05\x51\x94\x33\xaf\xdd\x8a\x89\xc2\x76\x2b\x93\x40\xcc\xdc\xe9\xdf\x8e\x26\xa7\x9f\x7e\x1c\x4d\xa6\x27\xe3\xb3\xa1\x67\xe6\x0e\x7a\x9d\x5e\xa7\xeb\xb5\x5b\xef\xc6\xc7\x7f\x1d\x4d\x3e\x1d\x8f\x4f\xcf\xc7\xd3\xd1\x9a\xab\xd7\xf9\xbe\xd3\xf7\xda\xad\xbd\xea\xa7\xdd\xda\x83\x73\x22\x48\x8a\x0a\x85\xdc\x1a\x6c\xb7\x4e\x8f\xa6\x17\xa3\xc9\xf1\xf8\xf2\xec\x62\xe8\x3f\xf6\x56\x8e\x72\x3e\x19\xbd\x3f\xf9\xfb\xd0\x7f\xec\x97\xa4\xf7\x27\x93\xe9\xc5\xd1\xbb\x77\x93\xa1\xff\xf8\x62\xd5\x6e\x1d\xfd\xe3\x72\x32\xba\x9c\x8e\xf4\xfb\xcb\x55\xbb\x75\x3e\x9e\x5e\x9c\x9c\x4d\x2f\x8e\x7e\xf8\x61\x7a\x3c\x39\x39\xbf\xb8\x9c\x9c\x0c\xfd\xc7\x57\xab\x76\xeb\xed\xd1\x74\x34\xbd\x7c\x7b\x36\xd2\x42\xbe\x5f\xb5\x5b\x3f\x9e\x9e\x1d\x9d\x8e\x86\xd7\x0b\x2e\x15\x23\x29\x5e\x1b\xd2\xe5\xe9\xdb\xd1\x64\x78\x6d\x5c\xe7\x5b\x16\xf8\x15\x24\xc6\xb0\x2f\xc3\xce\x77\x1f\x7f\xee\x06\x7f\xfa\xe9\xea\xe0\xa3\xf9\x7a\x76\x75\xf8\x9d\x1f\x5e\xf5\xc2\x7d\x33\xb9\x50\x78\xc7\xe4\xab\x83\x72\xfa\xe1\x77\xc5\xfc\x72\xb2\x03\xeb\x94\x18\x70\x8e\x79\xce\xd4\x00\xfc\x8a\x6b\xbc\x0d\x96\x73\x81\x33\x7a\x5f\xf2\x58\xd9\x9b\x4c\xef\xa9\x90\x0a\x8e\xe2\x58\x94\x8c\xa5\x0b\x4b\xde\x65\xaa\xcd\x1f\x38\x8d\x4b\xba\xf3\x86\x1d\x31\x8f\xcf\xc1\x59\x69\x88\x1b\x42\xd7\x2e\x1e\x80\xbf\x7e\x29\xc7\x4b\xb4\x06\xe0\x97\xcf\x9e\x36\x7e\x6f\xfb\xa3\xc3\xe6\x98\xa7\x29\x67\xf0\x3e\x67\x91\x8e\xd2\xcd\xe0\x59\x87\x10\x32\x99\x0b\x3c\xfa\x57\x2e\xf0\x0c\xd5\x1d\x17\xb7\x07\x87\xed\xd6\x63\xbb\x05\xb0\x07\x76\x10\xd4\x02\x41\x63\x0d\xda\x5a\xa0\x12\x04\x4a\x9e\x2c\xc9\x4d\x82\x9a\x4f\x0f\x4d\x0c\x05\x3f\x20\x49\xd4\xe2\x61\xd8\xd3\xf4\x19\x17\x40\x81\x32\x78\xec\x75\x3a\xbd\x7e\x77\xf5\x1a\x62\xae\x07\xec\x14\xe7\x35\x4b\xa1\x33\xf8\x08\xfe\x9f\x21\xc0\x5f\xa0\x0b\x3f\x59\xa2\x5a\x20\xb3\x4f\x5a\x1b\x17\x6e\xb0\x20\x12\x6e\x10\x19\xcc\x78\xce\x62\xbd\x1f\x15\x65\x39\x3a\xce\x06\x7d\xba\x6e\xcc\xba\xb3\x6e\x90\xb5\x06\xa5\xe7\x98\x6e\x04\x92\x5b\xfb\x32\xa3\xf6\x5b\x26\x88\x19\x18\xb3\x62\xce\x8c\x28\xab\xf1\xb6\x30\x08\x18\x3a\x13\xd6\x06\x58\xc1\x6b\xa1\x31\x47\x09\x8c\x2b\x27\xfd\x39\x90\x1b\x6e\xb3\x0d\x65\x52\x91\x24\x29\xd4\xc1\x7b\xaa\xac\x60\xad\xcb\x16\x2e\xcc\x82\x06\xfa\x8f\xd4\xa3\x05\xe1\x29\x24\x2a\x40\xdc\xcd\x75\xce\x1b\x87\x31\x2e\x43\x96\x27\x09\x2c\x94\xca\x06\xa1\x4e\x8b\xf3\x4e\xc4\xd3\x2f\x0e\xce\x86\x7a\x0d\xc0\x38\x8b\xa8\x84\x85\xe5\xfa\x0c\x60\xba\xdb\xc8\xd4\x25\x3d\x85\xca\x86\x54\x8d\x4a\x21\x79\x27\x2a\x74\x66\xab\x40\xf1\x96\x01\xa9\xa0\xd5\x77\x68\x35\xed\x21\x9a\x41\x44\x98\x83\xfd\x33\x11\xdb\xdc\x3b\xc6\xd3\x01\xfd\x7f\x41\xe7\x6b\x81\x13\x11\x56\xd9\x42\x06\x86\x38\x16\x28\xe5\x7f\x89\xdb\xaa\x29\x2f\xb6\x5b\x1f\xc6\x45\x09\xbd\xae\x60\x60\x4a\x10\x95\xa9\x2d\x1b\x65\xf2\x34\x66\x7a\xf5\x12\x03\xc3\x21\x78\xeb\xe4\xbf\x69\xaf\x40\x95\x0b\x06\xc6\xe9\x98\x48\xac\x51\x7b\x15\xdd\xe8\x0c\x4a\x81\xaf\xcb\x05\x9c\xbb\x8c\x93\x62\x93\xa7\x09\x58\x2e\xaf\xdd\xb2\xc9\x83\x4a\x32\x47\xa6\xaa\x5a\x36\xac\x54\x17\xba\xa5\x4a\x77\x53\x15\xb3\xe6\x6f\x68\xc2\xc0\x70\x95\x9a\x44\x9c\xc9\x3c\x91\x4a\x94\xba\x58\x0a\x11\x73\x39\xf4\xbc\xda\x1e\xb8\x96\x26\xb2\xfd\x83\x83\x4a\x55\x0f\x7a\x87\x87\xd7\xf0\xda\x86\x96\xd5\xcf\x8e\x8e\x8f\x2f\x46\x17\xc3\x6b\xbc\xcf\xc4\x56\xe5\x86\x67\xe0\x6b\xc4\x34\xf7\xc9\xb9\xc1\xd2\xf3\x1f\xd7\x05\x77\xe5\x3f\x56\x16\x59\x79\x36\xe1\x96\x68\xba\x62\xee\x99\xbd\xe6\x75\xbd\xa6\xdd\x56\xb5\xc3\x7f\x5c\xbf\xad\x82\x1b\xce\x95\x54\x82\x64\x01\xde\x67\x18\xa9\x5a\x97\x02\x5e\x7d\xeb\x34\x8b\xf4\xe9\xef\x94\x49\xe2\x25\x0a\x45\x25\x82\x6f\x0d\x76\x72\xd6\xb0\x3e\x35\x5d\xa0\x12\x0f\xc1\x3f\x39\x65\x9b\xf3\xad\x9e\x6e\x57\xdb\xc6\x6d\x3d\xd3\x04\x87\x43\xd9\x2c\xec\x1f\x94\x90\x1f\xba\xa6\xb4\xfb\x24\x06\x25\x6a\xab\x5d\x9d\x4e\xd1\xec\xb8\xfd\x2f\x31\x99\xe9\x78\x79\x77\x36\xdd\xcd\xee\x5a\x2a\xdf\xed\xe6\xb2\x7b\xd3\x0d\x67\x1e\x73\x50\x88\x10\x10\x08\x51\x45\xa1\xde\xe8\xb2\x49\xba\x96\x7b\x62\x53\x0b\xbc\xe3\xd1\x2d\x8a\x26\x1e\x27\xac\xe0\xd4\xf9\x88\xd8\xb4\x6b\x4e\x10\xfa\x3d\x36\x93\x8d\x85\x45\xaa\xb2\xcb\x95\xfb\xa2\x5e\x0a\xba\x5b\xc5\x3b\x50\x82\xa2\x84\x97\x10\x14\x68\x45\x9c\x31\x81\xb3\x5c\x77\xcf\x41\x70\x47\xa8\x32\xf4\x61\xef\x15\x04\xbf\x8c\x03\x53\xe2\xe5\x20\x0c\xe7\xa8\x3a\x56\xba\xae\xf4\xda\xfa\xc5\x17\x2f\x28\xd6\x7c\x6b\x91\x4b\xc5\x18\x83\xcc\xa3\x08\xa5\x9c\xe5\x49\xf2\x3b\xab\xfb\xaa\xdd\x52\x54\x77\xa1\x55\x5f\xb5\x5b\x06\xb8\x5c\xa2\x48\x79\x0c\x01\xf9\x4b\xe1\xd6\x4a\xb7\xbc\x23\x57\xed\xc1\x54\x9f\xf2\x0a\x0c\x0d\x3a\x09\x95\x0a\x19\x70\x06\x83\xfe\x8b\x3f\xbc\x82\x03\xc6\x81\xe4\x6a\xf1\x1c\x6e\x72\xa5\x81\x58\x32\x54\x87\x65\xd4\xef\x17\x67\xba\xf1\xf9\xc5\x74\xe8\x05\x1f\x20\x67\xf4\x7e\x10\x86\xe1\x92\x88\x50\xe4\x2c\x2c\x7c\x2c\x79\x74\x0b\xc1\x07\xe8\x76\xcc\x3f\xbb\x76\x10\x14\xa7\xca\x40\x2a\x2e\x70\x68\xf7\xc8\x20\x0c\xf7\xfd\xda\x16\x19\xfc\xf1\x55\xb7\x5b\xe1\x2e\xb7\xf5\xb0\x8c\x63\xb3\xe0\xbe\xb7\xdf\x14\xc6\x31\xce\x48\x9e\xa8\x42\x15\x97\x83\xb7\x62\xb3\x70\x5a\xc4\xd3\x8c\x4b\xf4\x36\x22\xf2\xd8\x92\xff\x07\x81\x49\xd5\x22\xbf\xd1\x41\x59\x28\x1c\x16\x1a\x85\x02\x13\x24\x12\x65\x18\xf3\x3b\x96\x70\x12\x87\x7e\xf3\x89\xba\x98\x18\x14\x13\x83\xeb\xdc\x96\x6b\x79\x5d\x3e\xa6\xd7\xf0\x06\xc2\x5c\x8a\x30\xe1\x11\x49\xcc\x4d\x40\x7d\xd6\x57\xda\x0d\x75\x21\x5f\x6f\x57\x1c\x3b\x2b\xa2\x85\xde\x15\xcf\xee\x7f\xcb\xda\x62\x1b\x49\x14\x4b\x1a\xa1\x8b\x06\x81\xe6\x1e\x64\x7d\x58\xdc\xc8\x4f\x95\x16\x97\x28\x37\x69\xdd\x1e\x5a\x25\x35\x71\x77\x83\xfb\xa2\x12\x3b\x46\x05\xb7\x0a\x9b\xf1\x2f\x0e\x42\x5d\x99\x6e\x73\xa6\xda\xee\x6e\xab\x7a\x65\x12\x02\xf2\x1f\x1d\x4a\x6a\xc2\x9f\x6a\x7b\xd7\x8a\x54\x3a\x5e\x6f\xab\x41\x75\xf9\x6f\x57\xbd\xdb\xf5\xd1\xe5\xcb\x55\x21\x1d\x36\x54\x81\xc8\x13\x94\x0e\x6d\xd0\x75\x2d\x13\x5c\xc7\x23\x36\xdf\x1e\x3c\xb9\xfa\xae\x26\x35\xbd\x8d\xa9\x80\x20\x83\x30\x26\x8a\x84\x36\xdd\xad\x7b\xc6\x22\xfd\x19\x7f\xa5\x64\x8e\x03\xb8\xf2\x32\xc1\xe7\x82\xe6\x69\xc1\x7c\xe5\xd9\x66\x31\x4d\x09\x8b\x07\x10\xe8\x68\x45\x01\x81\xe9\x34\xdd\xd5\x51\xad\x13\x01\xc8\xb8\x50\x72\x60\xdd\x1b\xc0\x95\xa7\x93\xa9\xc9\xa8\x57\x5e\x85\xf8\x42\x13\x5f\x6c\x11\x7b\x9a\xd8\x6b\x24\x86\x79\x9c\x6d\x0c\xf4\xf5\x40\xbf\x91\xb8\xc5\xfd\x52\x0b\x7c\xe9\x04\x2e\x79\x92\xa7\x58\x55\xb3\xea\xa3\x81\x79\xb1\x9c\x05\x46\xda\x39\x24\xb9\x23\x0f\x52\x93\xed\x3d\x63\xcd\x73\x7e\xed\x2a\x72\xc3\x71\x29\x61\x64\x8e\x26\x37\x67\x09\x8d\xcc\x65\x26\x04\xd5\x7e\xb1\x56\x58\x20\x08\x62\x2a\x23\xbe\x44\xf1\x10\xf0\x4c\xc1\xed\xb2\x93\x11\xb5\x18\x16\x19\x5a\xbb\x5f\x42\x59\xbe\x1a\xaa\x57\x13\x10\x7a\x65\xb3\xbc\x55\x2e\xa1\xec\xb6\x3a\x5c\x45\xbc\xc1\x3d\xa6\xb2\x19\xf1\x83\xca\xf3\x13\x3e\xf2\x74\xc6\xe7\x99\x0a\x89\x3e\xd7\x69\xcf\x2a\x42\x19\x0a\xb9\x91\x0a\x3b\x0f\x69\x62\x5b\xff\x2c\x97\x8b\x78\xc7\x9c\x75\x66\x2b\x73\x79\x9e\x41\x10\x5b\x43\xb3\xb8\x1a\xd6\x69\x96\xa0\xd2\x29\xde\x5d\x29\x17\x99\xc4\xde\x2c\x73\x66\xee\x07\x36\x0f\x6b\x4f\x1c\xf3\x3e\x90\xa5\xb9\x98\x96\x0b\xd7\xae\x28\x6e\xbc\x0b\xfd\x7e\xbf\x0f\x44\xc2\x1d\x26\x89\xfe\xee\xf7\x8d\x3f\x8a\xcc\x1e\x03\x04\x14\x3c\x19\xfe\x7c\x6e\x99\xfd\xb0\x78\xb8\x62\xe7\x6e\x7a\xd8\xf3\x6c\xdb\x20\xe5\x42\xff\x8f\x3f\xb9\x43\x73\xa9\xd8\x47\xf0\x9b\x6e\x8c\xe1\x9b\x21\x78\x31\x95\xe4\x26\xc1\xd8\x9c\x54\xea\x6a\xbb\xb2\x4d\xd9\xfc\xb9\xe9\xb5\x6e\x69\x74\xab\x0d\xe1\xb3\x19\x64\xe6\x7a\xa4\xe8\xa9\x65\x24\x68\xa6\x8c\xea\xe5\x1d\x3d\x04\x11\x78\xb5\xde\xa2\xdf\xfd\xec\xe6\xa2\x59\xdf\x5f\x81\xf1\x45\x9e\x55\x64\xbc\x79\x03\xa6\x73\x4b\xf8\xdc\x41\x5e\xf4\x5c\xeb\xe3\x9b\xd6\xb4\x50\xb4\x93\xf0\x39\xf4\xdf\x7c\xdb\x83\x6f\xbd\x7a\x5f\x55\x66\x4f\x20\x0a\x90\xc5\xc0\x67\x6b\xab\x8a\x5f\x0b\xec\x4f\x07\x9b\x41\x92\xa2\xe4\x72\xe7\xcf\x0d\x8e\xdf\x65\x6a\xf9\x20\x15\xa6\x1a\x7f\xe7\x3b\xc2\x1e\x40\x60\x4a\x28\x33\x31\xc2\x67\xea\x8e\x08\xd3\xce\x35\x75\xc0\x72\x91\x2b\x8d\x0b\x04\x02\x18\xbf\x6b\xb7\xdc\xc9\x70\x0f\xb4\x17\xa1\x07\x29\x65\xb9\x42\x2d\xc1\xc9\xb4\x51\xb9\x0d\x4e\x75\xad\xb5\x47\xfe\x1d\x00\x00\xff\xff\xdc\x86\x4e\xab\x67\x19\x00\x00") +var _configureSwarmClusterSh = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x59\xef\x72\xdb\xb8\x11\xff\xae\x19\xbd\xc3\x1e\xcd\x39\xdb\x97\x50\x94\x94\xe4\xda\x2a\xa3\x74\x1c\x47\x69\x3c\x3d\x5b\x1e\xc9\xbe\x76\x1a\xdf\xc5\x30\xb9\x92\x50\x93\x00\x0f\x00\x65\xbb\x3e\xbd\x7b\x07\x00\x41\x91\x12\xe5\xcb\xb5\x49\x67\xaa\x4c\x2c\x72\xb1\xc0\xfe\xf9\x2d\x76\x17\xd0\xde\x37\xe1\x0d\x65\xe1\x0d\x91\x8b\x76\xab\xdd\x92\xa8\x20\xb8\xd7\x4f\x18\x2d\x38\x78\x52\x11\xa1\x28\x9b\x83\xbc\x23\x22\x85\x28\xc9\xa5\x42\x01\x11\x67\x33\x3a\xcf\x05\x51\x94\x33\xaf\xdd\x8a\x89\xc2\x76\x2b\x93\x40\xcc\xdc\xe9\xdf\x8e\x26\xa7\x9f\x7e\x1c\x4d\xa6\x27\xe3\xb3\xa1\x67\xe6\x0e\x7a\x9d\x5e\xa7\xeb\xb5\x5b\xef\xc6\xc7\x7f\x1d\x4d\x3e\x1d\x8f\x4f\xcf\xc7\xd3\xd1\x9a\xab\xd7\xf9\xbe\xd3\xf7\xda\xad\xbd\xea\xa7\xdd\xda\x83\x73\x22\x48\x8a\x0a\x85\xdc\x1a\x6c\xb7\x4e\x8f\xa6\x17\xa3\xc9\xf1\xf8\xf2\xec\x62\xe8\x3f\xf6\x56\x8e\x72\x3e\x19\xbd\x3f\xf9\xfb\xd0\x7f\xec\x97\xa4\xf7\x27\x93\xe9\xc5\xd1\xbb\x77\x93\xa1\xff\xf8\x62\xd5\x6e\x1d\xfd\xe3\x72\x32\xba\x9c\x8e\xf4\xfb\xcb\x55\xbb\x75\x3e\x9e\x5e\x9c\x9c\x4d\x2f\x8e\x7e\xf8\x61\x7a\x3c\x39\x39\xbf\xb8\x9c\x9c\x0c\xfd\xc7\x57\xab\x76\xeb\xed\xd1\x74\x34\xbd\x7c\x7b\x36\xd2\x42\xbe\x5f\xb5\x5b\x3f\x9e\x9e\x1d\x9d\x8e\x86\xd7\x0b\x2e\x15\x23\x29\x5e\x1b\xd2\xe5\xe9\xdb\xd1\x64\x78\x6d\x5c\xe7\x5b\x16\xf8\x15\x24\xc6\xb0\x2f\xc3\xce\x77\x1f\x7f\xee\x06\x7f\xfa\xe9\xea\xe0\xa3\xf9\x7a\x76\x75\xf8\x9d\x1f\x5e\xf5\xc2\x7d\x33\xb9\x50\x78\xc7\xe4\xab\x83\x72\xfa\xe1\x77\xc5\xfc\x72\xb2\x03\xeb\x94\x18\x70\x8e\x79\xce\xd4\x00\xfc\x8a\x6b\xbc\x0d\x96\x73\x81\x33\x7a\x5f\xf2\x58\xd9\x9b\x4c\xef\xa9\x90\x0a\x8e\xe2\x58\x94\x8c\xa5\x0b\x4b\xde\x65\xaa\xcd\x1f\x38\x8d\x4b\xba\xf3\x86\x1d\x31\x8f\xcf\xc1\x59\x69\x88\x1b\x42\xd7\x2e\x1e\x80\xbf\x7e\x29\xc7\x4b\xb4\x06\xe0\x97\xcf\x9e\x36\x7e\x6f\xfb\xa3\xc3\xe6\x98\xa7\x29\x67\xf0\x3e\x67\x91\x8e\xd2\xcd\xe0\x59\x87\x10\x32\x99\x0b\x3c\xfa\x57\x2e\xf0\x0c\xd5\x1d\x17\xb7\x07\x87\xed\xd6\x63\xbb\x05\xb0\x07\x76\x10\xd4\x02\x41\x63\x0d\xda\x5a\xa0\x12\x04\x4a\x9e\x2c\xc9\x4d\x82\x9a\x4f\x0f\x4d\x0c\x05\x3f\x20\x49\xd4\xe2\x61\xd8\xd3\xf4\x19\x17\x40\x81\x32\x78\xec\x75\x3a\xbd\x7e\x77\xf5\x1a\x62\xae\x07\xec\x14\xe7\x35\x4b\xa1\x33\xf8\x08\xfe\x9f\x21\xc0\x5f\xa0\x0b\x3f\x59\xa2\x5a\x20\xb3\x4f\x5a\x1b\x17\x6e\xb0\x20\x12\x6e\x10\x19\xcc\x78\xce\x62\xbd\x1f\x15\x65\x39\x3a\xce\x06\x7d\xba\x6e\xcc\xba\xb3\x6e\x90\xb5\x06\xa5\xe7\x98\x6e\x04\x92\x5b\xfb\x32\xa3\xf6\x5b\x26\x88\x19\x18\xb3\x62\xce\x8c\x28\xab\xf1\xb6\x30\x08\x18\x3a\x13\xd6\x06\x58\xc1\x6b\xa1\x31\x47\x09\x8c\x2b\x27\xfd\x39\x90\x1b\x6e\xb3\x0d\x65\x52\x91\x24\x29\xd4\xc1\x7b\xaa\xac\x60\xad\xcb\x16\x2e\xcc\x82\x06\xfa\x8f\xd4\xa3\x05\xe1\x29\x24\x2a\x40\xdc\xcd\x75\xce\x1b\x87\x31\x2e\x43\x96\x27\x09\x2c\x94\xca\x06\xa1\x4e\x8b\xf3\x4e\xc4\xd3\x2f\x0e\xce\x86\x7a\x0d\xc0\x38\x8b\xa8\x84\x85\xe5\xfa\x0c\x60\xba\xdb\xc8\xd4\x25\x3d\x85\xca\x86\x54\x8d\x4a\x21\x79\x27\x2a\x74\x66\xab\x40\xf1\x96\x01\xa9\xa0\xd5\x77\x68\x35\xed\x21\x9a\x41\x44\x98\x83\xfd\x33\x11\xdb\xdc\x3b\xc6\xd3\x01\xfd\x7f\x41\xe7\x6b\x81\x13\x11\x56\xd9\x42\x06\x86\x38\x16\x28\xe5\x7f\x89\xdb\xaa\x29\x2f\xb6\x5b\x1f\xc6\x45\x09\xbd\xae\x60\x60\x4a\x10\x95\xa9\x2d\x1b\x65\xf2\x34\x66\x7a\xf5\x12\x03\xc3\x21\x78\xeb\xe4\xbf\x69\xaf\x40\x95\x0b\x06\xc6\xe9\x98\x48\xac\x51\x7b\x15\xdd\xe8\x0c\x4a\x81\xaf\xcb\x05\x9c\xbb\x8c\x93\x62\x93\xa7\x09\x58\x2e\xaf\xdd\xb2\xc9\x83\x4a\x32\x47\xa6\xaa\x5a\x36\xac\x54\x17\xba\xa5\x4a\x77\x53\x15\xb3\xe6\x6f\x68\xc2\xc0\x70\x95\x9a\x44\x9c\xc9\x3c\x91\x4a\x94\xba\x58\x0a\x11\x73\x39\xf4\xbc\xda\x1e\xb8\x96\x26\xb2\xfd\x83\x83\x4a\x55\x0f\x7a\x87\x87\xd7\xf0\xda\x86\x96\xd5\xcf\x8e\x8e\x8f\x2f\x46\x17\xc3\x6b\xbc\xcf\xc4\x56\xe5\x86\x67\xe0\x6b\xc4\x34\xf7\xc9\xb9\xc1\xd2\xf3\x1f\xd7\x05\x77\xe5\x3f\x56\x16\x59\x79\x36\xe1\x96\x68\xba\x62\xee\x99\xbd\xe6\x75\xbd\xa6\xdd\x56\xb5\xc3\x7f\x5c\xbf\xad\x82\x1b\xce\x95\x54\x82\x64\x01\xde\x67\x18\xa9\x5a\x97\x02\x5e\x7d\xeb\x34\x8b\xf4\xe9\xef\x94\x49\xe2\x25\x0a\x45\x25\x82\x6f\x0d\x76\x72\xd6\xb0\x3e\x35\x5d\xa0\x12\x0f\xc1\x3f\x39\x65\x9b\xf3\xad\x9e\x6e\x57\xdb\xc6\x6d\x3d\xd3\x04\x87\x43\xd9\x2c\xec\x1f\x94\x90\x1f\xba\xa6\xb4\xfb\x24\x06\x25\x6a\xab\x5d\x9d\x4e\xd1\xec\xb8\xfd\x2f\x31\x99\xe9\x78\x79\x77\x36\xdd\xcd\xee\x5a\x2a\xdf\xed\xe6\xb2\x7b\xd3\x0d\x67\x1e\x73\x50\x88\x10\x10\x08\x51\x45\xa1\xde\xe8\xb2\x49\xba\x96\x7b\x62\x53\x0b\xbc\xe3\xd1\x2d\x8a\x26\x1e\x27\xac\xe0\xd4\xf9\x88\xd8\xb4\x6b\x4e\x10\xfa\x3d\x36\x93\x8d\x85\x45\xaa\xb2\xcb\x95\xfb\xa2\x5e\x0a\xba\x5b\xc5\x3b\x50\x82\xa2\x84\x97\x10\x14\x68\x45\x9c\x31\x81\xb3\x5c\x77\xcf\x41\x70\x47\xa8\x32\xf4\x61\xef\x15\x04\xbf\x8c\x03\x53\xe2\xe5\x20\x0c\xe7\xa8\x3a\x56\xba\xae\xf4\xda\xfa\xc5\x17\x2f\x28\xd6\x7c\x6b\x91\x4b\xc5\x18\x83\xcc\xa3\x08\xa5\x9c\xe5\x49\xf2\x3b\xab\xfb\xaa\xdd\x52\x54\x77\xa1\x55\x5f\xb5\x5b\x06\xb8\x5c\xa2\x48\x79\x0c\x01\xf9\x4b\xe1\xd6\x4a\xb7\xbc\x23\x57\xed\xc1\x54\x9f\xf2\x0a\x0c\x0d\x3a\x09\x95\x0a\x19\x70\x06\x83\xfe\x8b\x3f\xbc\x82\x03\xc6\x81\xe4\x6a\xf1\x1c\x6e\x72\xa5\x81\x58\x32\x54\x87\x65\xd4\xef\x17\x67\xba\xf1\xf9\xc5\x74\xe8\x05\x1f\x20\x67\xf4\x7e\x10\x86\xe1\x92\x88\x50\xe4\x2c\x2c\x7c\x2c\x79\x74\x0b\xc1\x07\xe8\x76\xcc\x3f\xbb\x76\x10\x14\xa7\xca\x40\x2a\x2e\x70\x68\xf7\xc8\x20\x0c\xf7\xfd\xda\x16\x19\xfc\xf1\x55\xb7\x5b\xe1\x2e\xb7\xf5\xb0\x8c\x63\xb3\xe0\xbe\xb7\xdf\x14\xc6\x31\xce\x48\x9e\xa8\x42\x15\x97\x83\xb7\x62\xb3\x70\x5a\xc4\xd3\x8c\x4b\xf4\x36\x22\xf2\xd8\x92\xff\x07\x81\x49\xd5\x22\xbf\xd1\x41\x59\x28\x1c\x16\x1a\x85\x02\x13\x24\x12\x65\x18\xf3\x3b\x96\x70\x12\x87\x7e\xf3\x89\xba\x98\x18\x14\x13\x83\xeb\xdc\x96\x6b\x79\x5d\x3e\xa6\xd7\xf0\x06\xc2\x5c\x8a\x30\xe1\x11\x49\xcc\x4d\x40\x7d\xd6\x57\xda\x0d\x75\x21\x5f\x6f\x57\x1c\x3b\x2b\xa2\x85\xde\x15\xcf\xee\x7f\xcb\xda\x62\x1b\x49\x14\x4b\x1a\xa1\x8b\x06\x81\xe6\x1e\x64\x7d\x58\xdc\xc8\x4f\x95\x16\x97\x28\x37\x69\xdd\x1e\x5a\x25\x35\x71\x77\x83\xfb\xa2\x12\x3b\x46\x05\xb7\x0a\x9b\xf1\x2f\x0e\x42\x5d\x99\x6e\x73\xa6\xda\xee\x6e\xab\x7a\x65\x12\x02\xf2\x1f\x1d\x4a\x6a\xc2\x9f\x6a\x7b\xd7\x8a\x54\x3a\x5e\x6f\xab\x41\x75\xf9\x6f\x57\xbd\xdb\xf5\xd1\xe5\xcb\x55\x21\x1d\x36\x54\x81\xc8\x13\x94\x0e\x6d\xd0\x75\x2d\x13\x5c\xc7\x23\x36\xdf\x1e\x3c\xb9\xfa\xae\x26\x35\xbd\x8d\xa9\x80\x20\x83\x30\x26\x8a\x84\x36\xdd\xad\x7b\xc6\x22\xfd\x19\x7f\xa5\x64\x8e\x03\xb8\xf2\x32\xc1\xe7\x82\xe6\x69\xc1\x7c\xe5\xd9\x66\x31\x4d\x09\x8b\x07\x10\xe8\x68\x45\x01\x81\xe9\x34\xdd\xd5\x51\xad\x13\x01\xc8\xb8\x50\x72\x60\xdd\x1b\xc0\x95\xa7\x93\xa9\xc9\xa8\x57\x5e\x85\xf8\x42\x13\x5f\x6c\x11\x7b\x9a\xd8\x6b\x24\x86\x79\x9c\x6d\x0c\xf4\xf5\x40\xbf\x91\xb8\xc5\xfd\x52\x0b\x7c\xe9\x04\x2e\x79\x92\xa7\x58\x55\xb3\xea\xa3\x81\x79\xb1\x9c\x05\x46\xda\x39\x24\xb9\x23\x0f\x52\x93\xed\x3d\x63\xcd\x73\x7e\xed\x2a\x72\xc3\x71\x29\x61\x64\x8e\x26\x37\x67\x09\x8d\xcc\x65\x26\x04\xd5\x7e\xb1\x56\x58\x20\x08\x62\x2a\x23\xbe\x44\xf1\x10\xf0\x4c\xc1\xed\xb2\x93\x11\xb5\x18\x16\x19\x5a\xbb\x5f\x42\x59\xbe\x1a\xaa\x57\x13\x10\x7a\x65\xb3\xbc\x55\x2e\xa1\xec\xb6\x3a\x5c\x45\xbc\xc1\x3d\xa6\xb2\x19\xf1\x83\xca\xf3\x13\x3e\xf2\x74\xc6\xe7\x99\x0a\x89\x3e\xd7\x69\xcf\x2a\x42\x19\x0a\xb9\x91\x0a\x3b\x0f\x69\x62\x5b\xff\x2c\x97\x8b\x78\xc7\x9c\x75\x66\x2b\x73\x79\x9e\x41\x10\x5b\x43\xb3\xb8\x1a\xd6\x69\x96\xa0\xd2\x29\xde\x5d\x29\x17\x99\xc4\xde\x2c\x73\x66\xee\x07\x36\x0f\x6b\x4f\x1c\xf3\x3e\x90\xa5\xb9\x98\x96\x0b\xd7\xae\x28\x6e\xbc\x0b\xfd\x7e\xbf\x0f\x44\xc2\x1d\x26\x89\xfe\xee\xf7\x8d\x3f\x8a\xcc\x1e\x03\x04\x14\x3c\x19\xfe\x7c\x6e\x99\xfd\xb0\x78\xb8\x62\xe7\x6e\x7a\xd8\xf3\x6c\xdb\x20\xe5\x42\xff\x8f\x3f\xb9\x43\x73\xa9\xd8\x47\xf0\x9b\x6e\x8c\xe1\x9b\x21\x78\x31\x95\xe4\x26\xc1\xd8\x9c\x54\xea\x6a\xbb\xb2\x4d\xd9\xfc\xb9\xe9\xb5\x6e\x69\x74\xab\x0d\xe1\xb3\x19\x64\xe6\x7a\xa4\xe8\xa9\x65\x24\x68\xa6\x8c\xea\xe5\x1d\x3d\x04\x11\x78\xb5\xde\xa2\xdf\xfd\xec\xe6\xa2\x59\xdf\x5f\x81\xf1\x45\x9e\x55\x64\xbc\x79\x03\xa6\x73\x4b\xf8\xdc\x41\x5e\xf4\x5c\xeb\xe3\x9b\xd6\xb4\x50\xb4\x93\xf0\x39\xf4\xdf\x7c\xdb\x83\x6f\xbd\x7a\x5f\x55\x66\x4f\x20\x0a\x90\xc5\xc0\x67\x6b\xab\x8a\x5f\x0b\xec\x4f\x07\x9b\x41\x32\x7d\xf2\xe7\x06\xc7\xef\x32\xb5\x7c\x90\x0a\x53\x8d\xbf\xf3\x1d\x61\x0f\x20\x30\x25\x94\x99\x18\xe1\x33\x75\x47\x84\x69\xe7\x9a\x3a\x60\xb9\xc8\x95\xc6\x05\x02\x01\x8c\xdf\xb5\x5b\xee\x64\xb8\x07\xda\x8b\xd0\x83\x94\xb2\x5c\xa1\x96\xe0\x64\xda\xa8\xdc\x06\xa7\xba\xd6\xda\x23\xff\x0e\x00\x00\xff\xff\x2e\x85\x5c\xb8\x67\x19\x00\x00") func configureSwarmClusterShBytes() ([]byte, error) { return bindataRead( @@ -206,7 +207,27 @@ func configureSwarmClusterSh() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "configure-swarm-cluster.sh", size: 6503, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "configure-swarm-cluster.sh", size: 6503, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _configureSwarmmodeClusterSh = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x59\x6d\x73\x1a\x39\x12\xfe\x4e\x15\xff\xa1\x77\x4c\xad\xed\x6c\x86\x01\xb2\xb9\xd4\x3a\x45\xae\x88\x4d\xce\xae\x5b\x1b\x17\xd8\x5b\x57\x67\x67\x63\x31\xd3\x80\xce\x83\x44\x24\x0d\xd8\xeb\xe5\xbf\x5f\xe9\x65\xde\x78\xb1\x9d\x4d\xf2\x61\x49\xc5\xcc\x68\x5a\xea\xa7\xbb\xf5\xb4\xba\x87\x9d\x1f\x82\x21\x65\xc1\x90\xc8\x49\xb5\x52\xad\xec\xfc\xf5\x4f\xb5\xb2\x03\x87\x9c\x8d\xe8\x38\x11\x08\x83\x05\x11\x53\x38\xe5\x11\x42\x8f\x21\xbc\xe7\x77\xd5\x8a\x11\xb9\x98\x50\x09\x94\x49\x45\xe2\x58\x82\x9a\x20\x8c\x78\x1c\xf3\x05\x65\x63\x08\xf9\x74\xc6\x19\x32\x25\xb5\xa4\x0f\x47\x3c\xbc\x45\x51\xbc\x86\x43\x2d\x22\xd1\x8e\x15\x94\x4c\x89\x54\x28\xe4\xda\x38\x19\xbb\xe5\xbe\xc6\xb0\x6a\x45\xa2\x02\xff\x4e\x5f\x61\x38\xe1\xe0\x49\x45\x84\xd2\x90\x0b\xaa\xc2\x38\xd1\x18\x20\x74\x4e\x20\x8a\x72\xe6\x55\x2b\x11\x51\x58\xad\xcc\x24\x10\xb3\xc0\x51\xef\xf0\xdf\xdd\xfe\xa7\xc3\xde\xe9\x79\x6f\xd0\xfd\xf4\x5b\xb7\x3f\x38\xe9\x9d\xb5\xbd\x66\xfd\x97\x7a\xc3\x5b\x41\xaa\xed\x39\x27\x82\x4c\xd1\x59\xb7\x0a\xec\xb4\x33\xb8\xe8\xf6\x0f\x7b\x97\x67\x17\xed\xda\x43\x73\x99\x8e\x9c\xf7\xbb\x1f\x4e\xfe\xd3\xae\x3d\xb4\xb2\xa1\x0f\x27\xfd\xc1\x45\xe7\xe8\xa8\xdf\xae\x3d\xbc\x5a\x56\x2b\x9d\xff\x5e\xf6\xbb\x97\x83\xae\xbe\xff\x79\x59\xad\x9c\xf7\x06\x17\x27\x67\x83\x8b\xce\xaf\xbf\x0e\x0e\xfb\x27\xe7\x17\x97\xfd\x93\x76\xed\xe1\xf5\xb2\x5a\x79\xdf\x19\x74\x07\x97\xef\xcf\xba\x5a\xc9\x3f\x96\xd5\xca\x6f\xa7\x67\x9d\xd3\x6e\xfb\x66\xc2\xa5\x62\x64\x8a\x37\x66\xe8\xf2\xf4\x7d\xb7\xdf\xbe\x31\x2e\xaa\x59\x11\xf8\x13\x24\x46\xb0\x2b\x83\xfa\x8b\xab\xdf\x1b\xfe\x2f\x1f\xaf\xf7\xae\xcc\xd7\x4f\xd7\xfb\x2f\x6a\xc1\x75\x33\xd8\x35\x93\x1d\xe0\x2d\x93\xaf\xf7\xb2\xe9\xfb\x2f\xdc\xfc\x6c\x72\x1a\x94\x53\xb3\x07\xe0\x90\x27\x4c\x1d\x40\xad\xe0\x1a\x6f\x45\xe4\x5c\xe0\x88\xde\x65\x32\x56\xf7\xaa\xd0\x07\x2a\xa4\x82\x4e\x14\x89\x4c\x30\x73\x61\x26\x3b\x9f\x6a\xf3\x0f\x52\xc4\xd9\x78\xea\x0d\xfb\xc4\x5c\xbe\x84\xd4\x4a\x33\xb8\xa2\x34\x77\xf1\x01\xd4\xf2\x9b\xec\x79\x16\xad\x03\xa8\x65\xd7\xde\x16\xce\x5a\x2e\x4e\xa7\x9c\xc1\x87\x84\x85\x7a\x23\x6e\xe6\x80\x71\x1e\x93\x89\xc0\xce\x1f\x89\xc0\x33\x54\x0b\x2e\x6e\xf7\xf6\xab\x95\x87\x6a\x05\x60\x07\xec\x43\xc3\x53\x66\x1f\x82\xfe\x23\xf5\x53\x37\x70\x8c\x24\x56\x93\xfb\x76\x53\x8f\x8d\xb8\x00\x0a\x94\xc1\x43\xb3\x5e\x6f\xb6\x96\x6f\x21\xe2\x7a\x1c\x60\x31\xd6\x1c\xea\x05\x11\xce\x03\x96\xc4\x31\x4c\x94\x9a\x1d\x04\x3a\xfd\x8c\xeb\x21\x9f\x5a\x29\x3a\x82\x2b\xa8\xfd\x13\x7c\xfc\x0c\x0d\xf8\x68\x07\xd5\x04\x99\xbd\xd2\x90\xd2\x3d\x07\x13\x22\x61\x88\xc8\x60\xc4\x13\x16\x69\xde\x29\xca\x12\x4c\x25\x57\xe0\x35\xd2\x71\xeb\xcf\xa2\x45\x54\xc2\xc4\x4a\x79\xa9\xd0\x50\x20\xb9\xb5\x37\x23\x6a\xbf\x65\x8c\x38\x83\xa6\x59\x27\xe2\xcc\xe8\xb1\x70\xcb\x9a\xc0\x67\x98\x62\xcf\x91\x6f\xd4\xca\xb8\x4a\x35\xbf\x04\x32\xe4\x36\xa7\xb8\xec\xe8\xa5\x1e\xb1\x09\xc5\xdd\xcd\x80\xb8\x05\xef\xa8\x82\x96\xf1\x39\x5d\x8b\x95\xf6\x91\x96\x0d\x09\x03\x81\x92\xc7\x73\x7c\x66\xc4\x1a\x85\x90\x65\x9e\xf6\xe9\xdf\x25\x3a\xdf\x2b\x38\x21\x61\xfa\xde\xf9\xd2\x84\x21\x8a\x04\x4a\xf9\x95\x71\x5b\x6e\xe2\x5f\xb5\x72\xdc\x73\xa9\xfa\xa6\x10\x03\x93\xea\xa8\xb4\x47\x1d\x64\x24\x35\x66\x7a\xe5\x54\x06\xed\x36\x78\x79\x92\x59\xb5\x57\xa0\x4a\x04\x03\xe3\x74\x8c\x25\x96\x46\x9b\x05\x6c\x74\x04\x99\xc2\xb7\xd9\x02\xa9\xbb\x8c\x93\x22\xd4\xce\x22\xee\x04\xf6\xaa\x15\x3d\x55\xe3\x34\x47\x6f\x11\xe5\x86\x95\xca\x4a\xd7\xa0\x34\x56\xa1\x98\x35\x9f\x40\xc2\xec\xa1\x9f\x21\xb1\x8e\x69\x9c\x9c\x1b\x87\x7a\xb5\x87\x3c\xbb\x2e\x6b\x0f\x2b\x89\x7d\xb9\x2d\xa5\xba\xac\x9a\x6e\x00\x89\xf1\x48\x93\xe6\xe8\x6c\xb0\x5d\x3c\xcd\xdd\xb5\x34\x9c\xd9\x31\xa1\x4f\xb6\x24\xe2\xa0\x10\xc1\x27\x10\xa0\x0a\x03\x1d\x69\xb9\x49\xbb\xd6\x7b\x62\xf7\x56\x5e\x12\x6d\x55\xe6\x24\xf5\x86\x24\x96\x77\xa6\x1a\xd1\xf7\x76\xb2\xb1\xd0\xed\x55\x3b\x92\x05\xa9\x9c\x0b\x1a\x6b\xd9\xdb\x57\x82\xa2\x84\x9f\xc1\xf7\x05\x2a\x71\xef\x87\x9c\x31\x81\xa3\x44\x1f\xd3\xbe\xbf\x20\x54\x99\xf1\x76\xf3\x35\xf8\x9f\x7b\xbe\xc9\xf1\xf2\x20\x08\xc6\xa8\xea\x91\xd1\xa5\x53\xbd\xb6\x7e\xf2\xcd\x33\x8a\x35\xdf\xd5\x89\xce\x3e\x8c\x40\x26\x61\x88\x52\x8e\x92\x38\xfe\xc2\xf4\xbe\xac\x56\x14\x9d\x22\x94\x7c\x65\xaa\x41\x1d\xba\x44\xa2\x98\xf2\x08\x7c\xf2\x2f\xb0\xa6\x15\x0e\xe6\x3c\x1c\x97\xb3\x88\xa8\xdc\xf9\x10\x11\xd4\xc7\x32\x9f\x99\x43\xd9\xc4\x22\xd1\x22\x68\x9f\x1f\x99\xc7\x3d\xfb\x34\x8b\x0b\xd8\xdd\x32\xbd\x8d\xa8\x00\x7f\x66\xf7\x8b\xbc\x97\x0a\xa7\x91\xfb\x0e\x9c\x7b\x25\x8a\x39\x0d\xb1\x1e\xd9\x79\x3b\x30\xd0\xa5\x6a\xaa\x5d\xef\x88\x98\x4a\x85\x0c\x38\x83\x83\xd6\xab\x37\xaf\x61\x8f\x71\x20\x89\x9a\xbc\x84\x61\xa2\x74\xf0\xe7\x0c\xd5\xbe\x16\x4d\x97\x20\xb1\xe4\x30\x21\x3a\xef\x29\x18\x52\x16\x81\xe2\xe6\x98\x49\x18\xbd\x03\xa9\x97\x56\x40\x14\x04\x73\x22\x02\x91\xb0\x0c\x0b\x0f\x6f\x0b\xf0\x75\x93\x01\x7e\x08\xbb\xd6\x33\x57\x03\x0b\xd5\x05\xbd\x7b\x87\xa1\xc1\xda\x5e\xbd\x0f\x12\x29\x4c\x97\x12\x95\x5c\xe8\x1f\x83\x0a\x75\x05\xd1\xa8\x9b\x7f\xd6\x1a\xff\xd8\xa0\x3a\x08\x82\x6d\x68\x3c\x78\xf7\x2c\x07\x06\x7c\x8e\x42\xd0\x08\xeb\x9a\x43\xbb\xf9\x7e\xd8\x1a\xaf\x8d\x24\x2c\x37\x2e\xde\x0a\xf5\xdc\x70\xa1\xe2\x32\xae\xf2\x4d\xe6\xfa\x9e\x84\xa4\x6a\x92\x0c\x35\x19\x9d\xdd\x41\x68\x91\x04\x02\x63\x24\x12\x65\x10\xf1\x05\x8b\x39\x89\x82\xda\xe6\x96\xc5\x4d\xf4\xdd\x44\xff\x26\xb1\xe7\x94\xbc\xc9\x2e\xa7\x37\xda\xd7\x3a\x7c\x31\x0f\x49\x5c\x08\x62\x3a\xeb\x3b\x65\x81\xb2\x92\xef\x97\x0d\xb2\x76\x34\x9c\xe8\x5c\xf0\xd3\xdd\x53\xd6\xba\xe4\x61\xb7\x5c\xa8\x62\xb7\x99\x7d\x81\xda\xd5\xe9\x53\xbb\x05\xd3\xb4\x22\xd0\xb4\x9b\x79\xad\xbe\x92\xb5\x0b\x95\x1f\x51\xe9\xa4\xbc\x6a\xb2\x26\xe8\xc1\xed\x75\xdf\xab\xc2\xce\x32\x10\xd2\x55\xd8\x88\x7f\xf3\x10\x95\xc1\x34\x36\xe7\xef\xf5\xa2\xaf\x88\x6b\x26\xc1\x27\x7f\xa9\x56\x2f\x29\x7f\xac\x1a\xcc\x81\x14\x0a\x41\x6f\xad\x6e\xcb\x4f\x85\xcd\x55\xc0\xb6\x8f\x3e\xd4\xc3\xec\x75\x09\x65\x54\x81\x48\x62\x94\x69\xb4\x41\x9f\xf6\x33\xc1\xf5\x6e\xc5\x2f\x7e\x81\x61\x8e\xf8\x2d\x15\x97\xab\x17\xd3\x9a\xc4\x83\x76\x56\x3d\xba\x22\xc9\x83\x8f\x6f\x4b\xb1\xcd\xbd\x72\x28\xd0\x1e\x67\x04\x18\x2e\xdc\xeb\x0f\xce\x60\x64\x9a\xe5\xac\x06\xcc\xa7\xb9\x80\x49\x23\x68\xcc\xf4\x7d\x12\xcd\x51\x28\x2a\xd1\xd7\x45\x34\xd4\xf6\x0a\x45\xee\xbe\x4e\xe3\x6f\xc0\xf7\xed\x31\xb5\x55\xc2\x85\x2a\xab\x18\x73\x88\x03\x0c\x39\x8b\x88\xb8\x77\x70\x80\x28\x85\xd3\x99\x41\xad\x38\xfc\x8f\x53\xa6\x8b\x44\xbc\xa3\x32\x7f\x85\x53\xc0\x6c\xa0\x4e\x79\x84\x8a\xdf\x22\x6b\x7b\x5b\x1f\x75\xc2\xcf\x09\x15\x18\x59\x3e\xd9\xcf\x23\xdd\xd4\x96\xf5\x6b\x7b\xce\x45\xfe\x31\x94\xc3\x60\x0f\x34\xeb\x39\x8d\xda\x37\x13\xc0\xff\x0c\x53\xc2\xc8\x18\xc5\x7e\x79\xe1\x15\x8a\xae\x87\xf0\x51\x23\x1a\xeb\x92\x05\x62\x65\xf6\xd1\x15\x63\x0c\xd1\x5e\xe7\x83\x29\xdb\x8a\x90\x36\x6b\x2c\x92\xcf\x7e\xd6\xf1\x6e\x89\x68\xc8\x93\x38\x62\xbb\x4a\x33\x88\x61\xa8\x74\x5c\x4d\x18\xb7\x76\x63\xd9\x82\x59\xf7\xb5\x6e\x4f\x69\xab\x9a\x6d\xe2\x3b\x97\xaf\x58\xb0\x21\x4e\x6f\xf2\xfc\xe3\xfa\x9f\x47\x3a\xa7\x63\x32\xd7\x08\xa5\x9c\xa4\xc5\x98\xe2\x30\xe3\x42\x41\xab\xd5\x6a\x01\x91\xb0\xc0\x38\xd6\xdf\xad\x96\xc1\xef\x4e\x85\x08\xc0\xa7\xe0\xc9\xe0\xf7\x73\x2b\x5c\x0b\xdc\xc5\x35\x3b\x4f\xa7\x07\x4d\xcf\x95\x37\x72\xa2\xff\x47\x9f\xd2\x3e\xf4\x69\x60\x03\x54\x96\xdc\x73\x42\x63\x32\xa4\x31\x55\xf7\xc0\x47\xa9\xdb\x75\x8b\x75\x00\xbb\xae\x89\xd9\x35\xa8\x49\x62\x8a\x9a\xcc\x7b\xa6\x0d\xb3\x15\x92\x66\x7a\x71\x21\x23\x9b\xb6\x40\x25\x38\xab\x6d\x5d\x8a\xa7\x63\xc6\xbf\x80\xbf\x5b\xb8\xfb\x38\x6f\x9f\xe0\xec\x37\xe0\xab\x6e\xea\x4b\x74\x7d\x06\x55\x9f\x47\xd3\x15\x8a\x16\xb7\x73\x89\x9a\x39\x2d\x9f\x4f\xc9\x32\xa6\x62\x44\x32\xfe\x99\x60\x3c\xcd\xbc\x22\xeb\x52\x88\x5f\xc9\xb6\x6c\xf7\x5c\x41\x6d\xd3\x9b\x6b\xf8\xa1\x0d\x5e\x44\x25\x19\xc6\x18\x99\x17\x20\xe5\xad\x9e\x56\xb7\x94\x8d\x5f\x9a\xb6\xe8\x96\x86\xb7\x1a\x3d\x1f\x8d\x60\x66\x5e\x9f\xb9\x96\x5b\x86\x82\xce\x94\xb1\x26\xfb\xad\x44\xb7\x31\x5e\xa9\x04\x6f\x35\x9e\x5d\x83\x6f\xc6\xfb\x27\x30\x3e\x49\x66\x05\x1d\xef\xde\xd9\x8e\x2a\xe6\xe3\x80\xfc\x91\x08\x0c\xdc\x4f\x0c\xfe\x90\x73\x25\x95\x20\x33\x5f\x23\x75\x40\xeb\x31\x1f\x43\xeb\xdd\x8f\x4d\xf8\x31\x7b\xf7\x61\x6d\xcd\xca\x08\xdd\xa4\x21\x8b\x34\xa5\x33\xab\xdc\x0f\x13\xf6\x57\x0a\x2b\xaf\xab\xd5\x18\x15\x46\xcf\xf9\x79\x23\x9d\x94\xd6\x2d\xb6\xb4\xd5\x4c\x4d\x1d\x48\xd8\x3d\x08\x9c\x12\xca\x4c\xd6\xe3\x23\xb5\x20\xc2\x74\x42\x9b\xb8\x2f\x27\x89\xd2\xc1\x01\x5f\x27\x93\x45\xb5\x92\x9e\xf1\x3b\xa0\x5d\x09\x4d\x98\x52\x96\x28\xd4\x1a\x52\x9d\x36\x3f\xad\x47\xa8\xb8\x56\xee\x96\xff\x07\x00\x00\xff\xff\xf4\x66\x3b\x46\xf4\x1a\x00\x00") + +func configureSwarmmodeClusterShBytes() ([]byte, error) { + return bindataRead( + _configureSwarmmodeClusterSh, + "configure-swarmmode-cluster.sh", + ) +} + +func configureSwarmmodeClusterSh() (*asset, error) { + bytes, err := configureSwarmmodeClusterShBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "configure-swarmmode-cluster.sh", size: 6900, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -226,7 +247,7 @@ func dcosagentresourcesvmasT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosagentresourcesvmas.t", size: 10285, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosagentresourcesvmas.t", size: 10285, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -246,7 +267,7 @@ func dcosagentresourcesvmssT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosagentresourcesvmss.t", size: 10402, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosagentresourcesvmss.t", size: 10402, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -266,7 +287,7 @@ func dcosagentvarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosagentvars.t", size: 2228, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosagentvars.t", size: 2228, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -286,7 +307,7 @@ func dcosbaseT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosbase.t", size: 1262, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosbase.t", size: 1262, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -306,7 +327,7 @@ func dcoscustomdata173T() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcoscustomdata173.t", size: 7704, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcoscustomdata173.t", size: 7704, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -326,7 +347,7 @@ func dcoscustomdata184T() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcoscustomdata184.t", size: 7868, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcoscustomdata184.t", size: 7868, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -346,7 +367,7 @@ func dcoscustomdata187T() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcoscustomdata187.t", size: 7658, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcoscustomdata187.t", size: 7658, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -366,7 +387,7 @@ func dcosmasterresourcesT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosmasterresources.t", size: 9733, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosmasterresources.t", size: 9733, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -386,7 +407,7 @@ func dcosmastervarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosmastervars.t", size: 4936, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosmastervars.t", size: 4936, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -406,7 +427,7 @@ func dcosprovisionSh() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dcosprovision.sh", size: 932, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "dcosprovision.sh", size: 932, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -426,7 +447,7 @@ func kubeconfigJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubeconfig.json", size: 983, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubeconfig.json", size: 983, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -446,7 +467,7 @@ func kubernetesagentcustomdataYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesagentcustomdata.yml", size: 4035, mode: os.FileMode(438), modTime: time.Unix(1485303202, 0)} + info := bindataFileInfo{name: "kubernetesagentcustomdata.yml", size: 4035, mode: os.FileMode(493), modTime: time.Unix(1485311337, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -466,7 +487,7 @@ func kubernetesagentresourcesvmasT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesagentresourcesvmas.t", size: 8594, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesagentresourcesvmas.t", size: 8594, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -486,7 +507,7 @@ func kubernetesagentvarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesagentvars.t", size: 1104, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesagentvars.t", size: 1104, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -506,7 +527,7 @@ func kubernetesbaseT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesbase.t", size: 1011, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesbase.t", size: 1011, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -526,7 +547,7 @@ func kubernetesmasteraddonsHeapsterDeploymentYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-heapster-deployment.yaml", size: 1727, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-heapster-deployment.yaml", size: 1727, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -546,7 +567,7 @@ func kubernetesmasteraddonsHeapsterServiceYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-heapster-service.yaml", size: 249, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-heapster-service.yaml", size: 249, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -566,7 +587,7 @@ func kubernetesmasteraddonsKubeDnsDeploymentYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-kube-dns-deployment.yaml", size: 2752, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-kube-dns-deployment.yaml", size: 2752, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -586,7 +607,7 @@ func kubernetesmasteraddonsKubeDnsServiceYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-kube-dns-service.yaml", size: 353, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-kube-dns-service.yaml", size: 353, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -606,7 +627,7 @@ func kubernetesmasteraddonsKubeProxyDaemonsetYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-kube-proxy-daemonset.yaml", size: 1222, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-kube-proxy-daemonset.yaml", size: 1222, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -626,7 +647,7 @@ func kubernetesmasteraddonsKubernetesDashboardDeploymentYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-kubernetes-dashboard-deployment.yaml", size: 772, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-kubernetes-dashboard-deployment.yaml", size: 772, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -646,7 +667,7 @@ func kubernetesmasteraddonsKubernetesDashboardServiceYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasteraddons-kubernetes-dashboard-service.yaml", size: 283, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasteraddons-kubernetes-dashboard-service.yaml", size: 283, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -666,7 +687,7 @@ func kubernetesmastercustomdataYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmastercustomdata.yml", size: 10730, mode: os.FileMode(438), modTime: time.Unix(1485303194, 0)} + info := bindataFileInfo{name: "kubernetesmastercustomdata.yml", size: 10730, mode: os.FileMode(493), modTime: time.Unix(1485311337, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -686,7 +707,7 @@ func kubernetesmastercustomscriptSh() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmastercustomscript.sh", size: 5313, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmastercustomscript.sh", size: 5313, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -706,7 +727,7 @@ func kubernetesmasterresourcesT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmasterresources.t", size: 12190, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmasterresources.t", size: 12190, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -726,7 +747,7 @@ func kubernetesmastervarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesmastervars.t", size: 6001, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesmastervars.t", size: 6001, mode: os.FileMode(493), modTime: time.Unix(1485216026, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -746,12 +767,12 @@ func kubernetesparamsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubernetesparams.t", size: 2013, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "kubernetesparams.t", size: 2013, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _masteroutputsT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x8f\x31\x4f\xf3\x30\x10\x86\xf7\xfc\x0a\xcb\x4b\x12\x29\x4a\xf7\x6e\xd1\xf7\xa9\x88\xa1\xa1\x50\x31\x21\x06\xc7\xbe\x44\x47\x13\x3b\xbd\x3b\x17\x50\x94\xff\x8e\x08\x61\x40\x0c\x48\xf5\xe8\xe7\xd5\x3d\xef\xab\x94\x52\x7a\x30\x2c\x40\xbb\xfb\xff\xb5\xde\xaa\x29\x51\xcb\xd3\xf2\x3e\x82\xde\x2a\xcd\x42\xe8\x3b\x5d\xa8\x6f\x70\x31\x7d\x5c\xc8\x13\x41\x0b\x04\xde\x42\x66\x83\xb7\x46\xb2\x74\x8f\x96\x02\x87\x56\xca\x1a\xe4\x35\xd0\x69\x33\xc6\xa6\x47\x7b\x7b\xa8\x9c\x23\x60\x06\xde\xa4\x85\xba\x18\x42\xd3\xf4\xc0\x59\xfa\x25\x3f\xfc\x4c\xd5\x66\x80\x34\xcf\xf3\xd2\x79\x3e\x82\x08\xfa\x8e\xcb\xf6\xec\xfc\xb3\x5e\x5a\xcc\xc9\x34\x61\xab\xd4\x0d\xc8\xbf\xde\x30\xa3\xdd\x07\x07\xf3\xbc\xc0\x05\x3d\xc0\x39\x22\x01\xef\xcc\x09\xaa\x0e\xbc\xdc\x45\x19\xa3\xac\x91\x42\x9b\xcf\xbf\xbf\x26\xff\x5a\xbc\xda\x8b\xd5\x03\xde\xad\x07\xb5\x43\xd3\xf9\xc0\x82\x96\x8f\x12\xc8\x74\x50\x59\x1b\xa2\x97\x47\xc2\xeb\x15\xfa\x25\x0e\x63\x13\xde\xae\x2d\x9a\xac\x1d\x3f\x02\x00\x00\xff\xff\x45\x02\xea\xef\xe7\x01\x00\x00") +var _masteroutputsT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x8f\x31\x4f\xc3\x30\x10\x85\xf7\xfc\x0a\xcb\x4b\x12\x29\x4a\xf7\x6e\x11\xa8\x88\xa1\xa1\x50\x31\x21\x06\xc7\xbe\x44\xa6\x89\x9d\xde\x9d\x0b\x28\xca\x7f\x47\x98\x64\x40\x0c\x48\xbd\xe1\x86\x7b\x4f\xf7\xbe\x27\x84\x10\x72\x50\xc4\x80\xbb\xc7\xdb\x5a\x6e\xc5\x94\x88\x38\x92\x3f\x47\x90\x5b\x21\x89\xd1\xba\x4e\x16\x62\x15\x2e\xaa\x0f\x51\x79\x41\x68\x01\xc1\x69\xc8\xb4\x77\x5a\x71\x96\xee\xad\x46\x4f\xbe\xe5\xb2\x06\x7e\xf7\x78\xda\x8c\xa1\xe9\xad\xbe\x3f\x54\xc6\x20\x10\x01\x6d\xd2\x42\x5c\x14\x5a\xd5\xf4\x40\x59\xfa\x13\x7e\xf8\xed\xaa\xd5\x00\x69\x9e\xe7\xa5\x71\x74\x04\x66\xeb\x3a\x2a\xdb\xb3\x71\xaf\x32\x52\xcc\xc9\x34\xd9\x56\x88\x3b\xe0\x9b\x5e\x11\x59\xbd\xf7\x06\xe6\x39\x8a\x45\xdc\xd1\xf0\x04\xe7\x60\x11\x68\xa7\x4e\x50\x75\xe0\xf8\x21\xf0\x18\x78\x31\x4a\xf5\x7d\xfa\xaf\xf7\x9f\xda\x0b\xc2\x1a\x03\xce\xac\xff\x8c\x55\x9d\xf3\xc4\x56\xd3\x91\x3d\xaa\x0e\x2a\xad\x7d\x70\xfc\x8c\xf6\xfa\x08\xf9\x16\x86\xb1\xf1\x1f\xd7\x82\x26\x0b\xe3\x57\x00\x00\x00\xff\xff\x27\xa6\x00\x23\xec\x01\x00\x00") func masteroutputsTBytes() ([]byte, error) { return bindataRead( @@ -766,7 +787,7 @@ func masteroutputsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "masteroutputs.t", size: 487, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "masteroutputs.t", size: 492, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -786,12 +807,12 @@ func masterparamsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "masterparams.t", size: 3359, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "masterparams.t", size: 3359, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swarmagentresourcesclassicT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x5a\x4d\x6f\xdb\x38\x10\xbd\xe7\x57\x10\xba\xc8\x02\x54\x67\xfb\xb1\x97\xde\xf2\xd1\x2d\x8c\xc6\xa9\x10\xb7\xd9\x43\xa0\x03\x2d\x8e\x6d\x22\x12\x29\x90\x94\x5b\xaf\xa1\xff\xbe\xa0\x64\x59\xa2\x44\xd9\x4e\x6b\x67\xd7\x3e\x04\xb5\x47\x9c\x19\x3e\x3e\x0e\xe7\x51\x5d\xaf\xe9\x0c\x0d\x47\x72\xa2\xb8\xc0\x73\xb8\x8a\x22\x9e\x31\x95\xe7\x17\x08\x21\xb4\x2e\xfe\x22\xe4\xe0\x94\x3e\x82\x90\x94\x33\xe7\x23\x72\x9e\x96\x58\x50\x3c\x8d\x41\x0e\xdc\xda\xb2\xf1\xe0\x7a\xa1\xe3\xa3\x6a\x60\xc4\xd3\x95\xf3\x71\xeb\xa8\xf8\x25\x63\xaa\xed\x65\xbd\x1e\xde\xe3\x04\xf2\xdc\x4c\x43\xde\xe8\xbf\x86\x47\x84\x1c\x86\x13\xd0\x0e\x96\xc9\x1d\xe7\xe9\x3d\x27\xe0\x6c\x8c\x79\x1d\x98\x40\x0a\x8c\xc8\xaf\x3a\xe1\xa7\x7a\xec\x53\xc4\x59\x84\xd5\xc0\x1d\xd3\x48\x70\xc9\x67\x6a\x78\x0f\xea\x07\x17\xcf\x97\x69\x36\x8d\x69\x34\x0a\xae\x08\x11\x20\x25\xc8\x4b\xd7\x47\x8d\x1c\x13\x2c\x15\x88\xc0\x7c\x4a\x67\xed\x7a\x5e\x58\x65\x10\xd6\x19\xc4\x3c\xc2\xaa\x42\x4c\x80\xe4\x99\x88\xe0\xb3\xe0\x59\x3a\xf0\x86\x95\xb1\x89\x55\x35\xaf\x2a\xc7\x46\x6c\x69\xc0\x12\x08\x98\xd1\x9f\x20\x5d\xef\x29\xe1\x64\xa0\x31\x1e\x31\x02\x3f\x07\x9e\xbf\x77\xcc\x06\x51\x2f\xdc\xff\xa8\xeb\x3d\x11\xba\x3c\xba\xfb\x6b\x2c\xe1\x26\xc6\x52\xd2\xa8\x44\xcf\xaf\x23\xbc\xf5\x0c\xf6\xa4\x82\xa7\x20\x14\x05\x69\x72\x08\x97\x9e\xbe\xad\x52\x68\x33\x69\x99\x4c\xe8\x3f\x20\xc7\x38\x75\x3d\x2b\xc3\x1e\xc7\xfa\x01\xd7\x0b\x87\x66\x5a\xda\x59\x68\x21\x92\xda\x04\xa9\x09\xb3\xe1\xe8\xa5\x39\x5e\x96\x63\x73\xff\x62\xbd\x06\x46\xf2\xfc\xa2\xd8\x5a\x23\x59\x32\x06\x0d\x03\x2e\x94\xfc\x95\x8d\x75\x0b\x33\x9c\xc5\xe6\x36\xf8\x0d\x76\xd9\x40\x69\xf1\xf9\x90\x35\x20\x4c\x4e\x40\x29\xca\xe6\xa6\x41\x9b\x78\x82\x29\xd3\xae\xee\xf0\x14\xe2\xde\xa8\x9f\x18\x49\x39\x65\xea\xf6\x7e\xa2\x7f\x28\x39\xe4\xd6\x9b\xa9\xb9\x0e\x3a\x93\x6a\xeb\xc5\xd5\xfc\xc6\xa0\x16\x9c\x68\xff\xb7\x2b\x86\x13\x1a\x1d\xb4\x7e\xbd\x1b\xbe\x5a\x41\x74\xa4\x35\x3a\x7e\x0d\xea\x5b\xb0\x23\x17\x20\x5b\xc4\xbb\xe9\xe1\xdc\x98\xe2\xe8\x19\x18\xd9\xa4\x18\x70\x1e\x4b\x03\x02\x64\xf0\x65\x7f\xe4\xeb\xd2\x9f\x76\x54\x25\xd1\x18\x9f\x6f\xff\x1d\x36\xe9\x32\x13\x9c\x29\x60\x64\x14\xdc\x70\x36\xa3\xf3\x4c\x14\x13\xfe\xbd\x4c\x2a\x67\x1d\x2c\x76\x23\xd2\x66\x70\x09\x8c\xe5\x11\x84\x1c\x4a\x8c\x05\x1b\x91\x83\x88\xe2\xfa\x2f\xa2\x49\x17\xbb\xf6\xb7\x1e\x54\x29\x9b\xf2\x8c\x91\x7b\xac\x1e\xb2\xb8\x98\xe5\x93\x61\x8f\x39\x26\xd7\x38\xc6\x2c\xa2\x6c\xbe\x7d\xa4\x89\xf7\x7a\xf0\x19\xd4\xdd\x75\x61\x43\x45\x9e\x9b\xda\xe8\xe5\x3d\x31\x53\xc1\xa7\x3d\x7e\x82\xc2\x64\x73\xf0\x92\x4a\x50\x27\x0d\xa2\x51\x05\xaa\x42\x5e\xd2\xa4\xea\x94\xc6\x98\xe1\x39\x90\x5b\x2a\x9f\xe5\x36\xe0\x4b\x3a\xa4\xa6\x83\x82\x43\x3a\x50\x2c\x21\xcf\xd1\xaf\x96\x9c\x2a\x55\xf4\xdf\xf5\x3f\x3b\x1b\x49\xfd\xf1\x6d\xc1\x7b\xce\xd2\x56\xe8\x9d\xed\xcf\x1f\xa7\x68\x7a\x8e\xe3\xb4\xdb\xea\xbc\x2d\x56\x6b\xd7\x72\x1c\x01\x91\xb7\xa7\x40\xe4\x38\x4e\xbb\x88\xbc\xfb\x0d\x44\x0e\x05\xe4\xdd\x29\x00\x39\x8e\xd3\x2e\x20\xef\x5f\x83\x22\xef\x4f\x81\xc8\x71\x9c\x76\x11\xf9\xf0\x1a\x88\x7c\x38\x05\x22\xc7\x71\xda\x45\xe4\xcf\xe2\x24\x37\x95\x06\xe3\x4a\xd7\xdf\x9b\x4c\x2a\x9e\x3c\xde\x7f\xfa\xb6\xad\xbd\xbe\xa9\x90\x18\xa8\xd1\xad\x5b\xd6\xec\x5d\x4a\x65\x7b\x02\xfb\xbd\xdd\x90\xe1\x06\x6d\x5b\xd0\xed\x89\x8b\xb5\x38\xd8\x7c\x6b\xde\x01\x08\x28\x7a\xb1\x49\xd1\xe1\x38\xa8\x21\x7a\x5d\x1c\x49\x60\x73\xca\xe0\x4d\x4f\xeb\xfb\x38\x6e\x8a\x05\x1f\xb9\x6f\x96\x89\x94\x8d\x9e\x30\xf7\x4f\x21\xc1\x0f\x88\xbf\xbf\x31\xce\xd2\xb9\xc0\x04\x02\x1e\xd3\x68\xd5\x96\x4d\x09\x27\x45\xf0\xab\x4c\xf1\x04\xab\x5a\xcd\xb4\x74\xd0\x92\x0a\x95\xe1\x78\x8c\xa3\x05\x65\x10\x08\x3e\xa3\x31\xb4\x9d\xb1\xf2\x54\xb7\x5b\x6b\xfb\x88\x29\x10\x33\x1c\xc1\xce\x1e\x19\x75\xfa\x64\x03\x2d\x46\xa3\x76\x23\xbc\x0b\x85\xc6\x13\x34\xdd\x1b\xb7\x2f\x7a\x37\x07\x9a\x46\x85\x33\x5b\x2e\xf6\x8c\x76\x28\x74\xeb\xf0\x66\x9f\x78\xbd\x57\xe3\x1c\x3a\x87\x0a\x0b\xb2\x8f\x79\xe5\x86\xf3\x91\x7b\x69\x11\x58\x7d\x4a\xd1\xa2\x9e\xba\x32\xa0\xf9\xe9\x9f\x7f\xe8\x1b\x2d\xb1\x75\x16\x32\x9b\x32\x50\x3d\xeb\xdd\x9e\xab\x75\x7b\x31\x50\x93\xc2\xc9\xa6\xba\xbc\x34\x4f\xfb\xef\xb6\x5f\x43\x2b\x51\x9c\x54\xd0\x04\x0b\xbd\x3d\x1d\x25\x32\xe8\x66\xd0\xf6\x65\x7e\x0f\x9b\x22\xca\x88\xe0\x70\xd9\xbb\x1f\x31\x49\x28\xfb\x2e\x41\xd8\x04\xa8\x61\xb4\xc9\xce\x88\x27\x69\xa6\x40\xd4\x95\xa9\x1f\xdf\xb1\x79\xd7\xd2\x72\xb5\x5e\x7f\x06\x75\x35\x07\xa6\x26\x3f\xb0\x48\xca\xd3\xe4\x16\x2b\xdc\x38\x0f\xca\x98\x31\x65\xd9\x4f\x63\xfb\xda\x24\x2f\xa1\x52\x67\x10\x60\x29\x7f\x70\x41\xae\x32\xb5\x00\xa6\x68\x5d\x97\x0b\x88\x3b\x0b\xe1\x48\xb9\xb0\xcb\xe3\x52\xa6\x7c\x81\x55\xdf\x76\xb3\x13\xcf\x79\x86\x95\x9e\x46\x81\x4b\x8a\x05\x4e\x40\x81\xd0\x47\xad\x5c\x3c\x4c\xae\x82\xca\xab\x05\x92\x3a\x34\x56\x8b\x36\xae\x52\x2e\xbe\xc0\x2a\xc0\x6a\xd1\x43\xd6\x2e\xf1\xc2\xc3\x35\xb8\x49\x9f\x4d\x57\xd0\xcb\x21\x9a\xe0\x39\x3c\xc0\x0c\x04\xb0\xa8\x6b\xd7\x04\x9c\xcd\x40\xb4\xa7\xc0\xe5\x48\x0f\xfc\xaa\x6d\xd6\xe9\x97\x98\xcb\x45\xef\xd0\xa0\xb2\xdb\x87\xcb\xe7\xac\x67\xe0\xe4\xcb\x77\xfb\x90\x65\xad\x7e\x63\xac\x40\x2a\x13\xda\xdc\xef\x92\x56\xaf\x6e\xa1\xa9\xd1\xb0\x55\xa0\x1c\x2e\xb5\xc1\x06\x48\x54\x1c\xa2\x73\x1d\xe7\x01\x30\xf9\x5b\x50\x65\x63\x63\xd1\xb0\xc0\xd7\xb4\x22\xed\x5f\x82\x27\xc5\x04\x0e\xd0\xbd\xe5\xc7\x6f\xbc\xb6\x90\x92\x4b\xa2\x13\xb2\xcc\x7b\x41\x6e\x38\x53\x98\x32\x10\x56\x82\x6f\x0f\x08\x51\xad\xf3\xe0\x14\x8a\xe9\xcc\x44\xb5\x71\xf4\x59\x5e\x49\x21\x6f\xb8\xa9\xea\xd5\x9d\xb3\x1c\x4e\x63\x3e\xf5\x91\x5b\x2e\x85\x6b\x48\x8c\xd7\xc5\xfa\xcc\xe4\xfa\x3e\xac\xff\xcf\x50\x9f\xd9\x45\xc0\x39\x43\x7d\x66\x37\x0c\xe7\x0c\xf5\x99\x5d\x5d\x1c\x03\xea\x16\xd2\xa1\x55\x98\xd8\x5f\x67\xe4\xdd\x37\x03\x65\x83\xd2\xbc\xa0\xc0\x29\x8e\xa8\x5a\xf5\x76\xd1\x3b\xff\x63\xc2\xee\xf7\xce\xc6\x10\x45\xcb\xa6\x6a\xa2\x30\x23\x58\x90\x83\x5e\x60\xde\x94\xdd\xfe\xa5\x79\x11\x30\x89\x70\x0c\x13\xd8\xbe\x88\xbe\xf8\x37\x00\x00\xff\xff\x05\x75\xc5\x98\xdb\x21\x00\x00") +var _swarmagentresourcesclassicT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xd4\x5a\x4d\x6f\xdb\x38\x10\xbd\xe7\x57\x10\xba\xc8\x02\x54\x67\xfb\xb1\x97\xde\xf2\xd1\x2d\x8c\xc6\xa9\x10\xb7\xd9\x43\xa0\x03\x2d\x8e\x6d\x22\x12\x29\x90\x94\x5b\xaf\xa1\xff\xbe\xa0\x64\x59\xa2\x44\xd9\x4e\x6b\x67\xd7\x3e\x04\xb5\x29\xce\x0c\xdf\x3c\x0e\xe7\x51\x5d\xaf\xe9\x0c\x0d\x47\x72\xa2\xb8\xc0\x73\xb8\x8a\x22\x9e\x31\x95\xe7\x17\x08\x21\xb4\x2e\xfe\x22\xe4\xe0\x94\x3e\x82\x90\x94\x33\xe7\x23\x72\x9e\x96\x58\x50\x3c\x8d\x41\x0e\xdc\x7a\x64\x63\xc1\xf5\x42\xc7\x47\xd5\xc4\x88\xa7\x2b\xe7\xe3\xd6\x50\xf1\x4b\xc6\x54\xdb\xca\x7a\x3d\xbc\xc7\x09\xe4\xb9\x19\x86\xbc\xd1\x7f\x0d\x8b\x08\x39\x0c\x27\xa0\x0d\x2c\x93\x3b\xce\xd3\x7b\x4e\xc0\xd9\x0c\xe6\xb5\x63\x02\x29\x30\x22\xbf\xea\x80\x9f\xea\xb9\x4f\x11\x67\x11\x56\x03\x77\x4c\x23\xc1\x25\x9f\xa9\xe1\x3d\xa8\x1f\x5c\x3c\x5f\xa6\xd9\x34\xa6\xd1\x28\xb8\x22\x44\x80\x94\x20\x2f\x5d\x1f\x35\x62\x4c\xb0\x54\x20\x02\xf3\x29\x1d\xb5\xeb\x79\x61\x15\x41\x58\x47\x10\xf3\x08\xab\x0a\x31\x01\x92\x67\x22\x82\xcf\x82\x67\xe9\xc0\x1b\x56\x83\x4d\xac\xaa\x75\x55\x31\x36\x7c\x4b\x03\x96\x40\xc0\x8c\xfe\x04\xe9\x7a\x4f\x09\x27\x03\x8d\xf1\x88\x11\xf8\x39\xf0\xfc\xbd\x73\x36\x88\x7a\xe1\xfe\x47\x5d\xef\x89\xd0\xe5\xd1\xcd\x5f\x63\x09\x37\x31\x96\x92\x46\x25\x7a\x7e\xed\xe1\xad\x67\xb0\x27\x15\x3c\x05\xa1\x28\x48\x93\x43\xb8\xb4\xf4\x6d\x95\x42\x9b\x49\xcb\x64\x42\xff\x01\x39\xc6\xa9\xeb\x59\x19\xf6\x38\xd6\x0f\xb8\x5e\x38\x34\xc3\xd2\xc6\x42\x0b\x91\xd4\xc6\x49\x4d\x98\x0d\x47\x2f\xcd\xf9\xb2\x9c\x9b\xfb\x17\xeb\x35\x30\x92\xe7\x17\xc5\xd6\x1a\xc9\x92\x31\x68\x18\x70\xa1\xe4\xaf\x6c\xac\x5b\x98\xe1\x2c\x36\xb7\xc1\x6f\xb0\xcb\x06\x4a\x8b\xcf\x87\xe4\x80\x30\x39\x01\xa5\x28\x9b\x9b\x03\x7a\x88\x27\x98\x32\x6d\xea\x0e\x4f\x21\xee\xf5\xfa\x89\x91\x94\x53\xa6\x6e\xef\x27\xfa\x87\x92\x43\x6e\xbd\x99\x9a\x79\xd0\x91\x54\x5b\x2f\xae\xd6\x37\x06\xb5\xe0\x44\xdb\xbf\x5d\x31\x9c\xd0\xe8\xa0\xfc\xf5\x6e\xf8\x2a\x83\xe8\x48\x39\x3a\x7e\x0d\xea\x4b\xd8\x91\x0b\x90\xcd\xe3\xdd\xf4\x70\x6e\x4c\x71\xf4\x0c\x8c\x6c\x42\x0c\x38\x8f\xa5\x01\x01\x32\xf8\xb2\xdf\xf3\x75\x69\x4f\x1b\xaa\x82\x68\xcc\xcf\xb7\xff\x0e\x9b\x74\x99\x09\xce\x14\x30\x32\x0a\x6e\x38\x9b\xd1\x79\x26\x8a\x05\xff\x5e\x24\x95\xb1\x0e\x16\xbb\x11\x69\x33\xb8\x04\xc6\xf2\x08\x42\x0e\x25\x46\xc2\x46\xe4\x20\xa2\xb8\xfe\x8b\x68\xd2\xc5\xae\xfd\xad\x07\x55\xca\xa6\x3c\x63\xe4\x1e\xab\x87\x2c\x2e\x56\xf9\x64\x8c\xc7\x1c\x93\x6b\x1c\x63\x16\x51\x36\xdf\x3e\xd2\xc4\x7b\x3d\xf8\x0c\xea\xee\xba\x18\x43\x45\x9c\x9b\xda\xe8\xe5\x3d\x3e\x53\xc1\xa7\x3d\x76\x82\x62\xc8\x66\xe0\x25\x95\xa0\x0e\x1a\x44\xa3\x0a\x54\x85\xbc\xa4\x49\xd5\x29\x8d\x31\xc3\x73\x20\xb7\x54\x3e\xcb\xad\xc3\x97\x74\x48\x4d\x03\x05\x87\xb4\xa3\x58\x42\x9e\xa3\x5f\x2d\x39\x55\xa8\xe8\xbf\xeb\x7f\x76\x36\x92\xfa\xe3\xdb\x9c\xf7\x9c\xa5\x2d\xd7\x3b\xdb\x9f\x3f\x4e\xd1\xf4\x1c\xc7\x68\xb7\xd5\x79\x5b\x64\x6b\x57\x3a\x8e\x80\xc8\xdb\x53\x20\x72\x1c\xa3\x5d\x44\xde\xfd\x06\x22\x87\x02\xf2\xee\x14\x80\x1c\xc7\x68\x17\x90\xf7\xaf\x41\x91\xf7\xa7\x40\xe4\x38\x46\xbb\x88\x7c\x78\x0d\x44\x3e\x9c\x02\x91\xe3\x18\xed\x22\xf2\x67\x71\x92\x9b\x4a\x83\x71\xa5\xeb\xef\x4d\x26\x15\x4f\x1e\xef\x3f\x7d\xdb\xd6\x5e\xdf\x54\x48\x0c\xd4\xe8\xd6\x2d\x6b\xf6\x2e\xa5\xb2\x3d\x81\xfd\xde\x6e\xc8\x30\x83\xb6\x2d\xe8\xf6\xc4\xc5\x5a\x1c\x6c\xbe\x35\xef\x00\x04\x14\xbd\xd8\xa4\xe8\x70\x1c\xd4\x10\xbd\x2e\x8e\x24\xb0\x39\x65\xf0\xa6\xa7\xf5\x7d\x1c\x37\xc5\x82\x8f\xdc\x37\xcb\x44\xca\x46\x4f\x98\xfb\xa7\x90\xe0\x07\xf8\xdf\xdf\x18\x67\xe9\x5c\x60\x02\x01\x8f\x69\xb4\x6a\xcb\xa6\x84\x93\xc2\xf9\x55\xa6\x78\x82\x55\xad\x66\x5a\x3a\x68\x49\x85\xca\x70\x3c\xc6\xd1\x82\x32\x08\x04\x9f\xd1\x18\xda\xc6\x58\x79\xaa\xdb\x47\xeb\xf1\x11\x53\x20\x66\x38\x82\x9d\x3d\x32\xea\xf4\xc9\x06\x5a\x8c\x46\xed\x46\x78\x17\x0a\x8d\x27\x68\xba\xd7\x6f\x9f\xf7\x6e\x0c\x34\x8d\x0a\x63\xb6\x58\xec\x11\xed\x50\xe8\xd6\xe9\xcd\x3e\xf1\x7a\xaf\xc6\x39\x74\x0d\x15\x16\x64\x1f\xf3\xca\x0d\xe7\x23\xf7\xd2\x22\xb0\xfa\x94\xa2\x45\x3d\x75\x65\x40\xf3\xd3\xbf\xfe\xd0\x37\x5a\x62\xeb\x2a\x64\x36\x65\xa0\x7a\xf2\xdd\x5e\xab\x75\x7b\x31\x50\x93\xc2\xc8\xa6\xba\xbc\x34\x4e\xfb\xef\xb6\x5f\x43\x2b\x51\x9c\x54\xd0\x04\x0b\xbd\x3d\x1d\x25\x32\xe8\x46\xd0\xb6\x65\x7e\x0f\x9b\x22\xca\xf0\xe0\x70\xd9\xbb\x1f\x31\x49\x28\xfb\x2e\x41\xd8\x04\xa8\x31\x68\x93\x9d\x11\x4f\xd2\x4c\x81\xa8\x2b\x53\x3f\xbe\x63\xf3\xae\xa5\xd0\x39\xc5\x36\x98\xfc\xc0\x22\x19\x73\x02\xad\xfc\xae\xd7\x9f\x41\x5d\xcd\x81\xa9\xed\x13\xe5\x21\x73\x8b\x15\xd6\x65\xbf\x92\x2f\xbb\x66\x75\x66\x74\x68\xe4\xc4\x94\x65\x3f\x8d\x7a\x60\xd3\xd0\x84\x4a\xbd\xa4\x00\x4b\xf9\x83\x0b\x72\x95\xa9\x05\x30\x45\xeb\x42\x5f\xe4\xac\x93\x59\x47\xca\x85\x5d\x6f\x97\xba\xe7\x0b\xac\xfa\xf6\xaf\x9d\xc9\xce\x33\xac\xf4\x72\x0a\xa0\x53\x2c\x70\x02\x0a\x84\x3e\xbb\xe5\xe2\x61\x72\x15\x54\x56\x2d\xe9\xaa\x5d\x63\xb5\x68\x27\x4a\xca\xc5\x17\x58\x05\x58\x2d\x7a\xd8\xdf\x65\x72\x78\xb8\xa8\x37\xf9\xb8\x69\x33\x7a\x49\x49\x13\x3c\x87\x07\x98\x81\x00\x16\x75\xc7\x35\xa3\x67\x33\x10\xed\x25\x70\x39\xd2\x13\xbf\xea\x31\xeb\xf2\x4b\xcc\xe5\xa2\x77\x6a\x50\x8d\xdb\xa7\xcb\xe7\xac\x67\xe2\xe4\xcb\x77\xfb\x94\x65\x2d\xa7\x63\xac\x40\x2a\x13\xda\xdc\xef\x92\x57\x67\xb7\x10\xe9\x68\xd8\xa6\x2a\x97\x7a\xc0\x06\x48\x54\x9c\xca\x73\xed\xe7\x01\x30\xf9\x5b\x50\x65\x63\x63\xd1\x01\xc1\xd7\xb4\x22\xed\x5f\x82\x27\xc5\x02\x0e\x10\xd2\xe5\xc7\x6f\xbc\x07\x91\x92\x4b\xa2\x03\xb2\xac\x7b\x41\x6e\x38\x53\x98\x32\x10\x56\x82\x6f\x4f\x1c\x51\xe5\x79\x70\x0a\x09\x76\x66\x2a\xdd\x38\x4b\x2d\xef\xb8\x90\x37\xdc\x1c\x13\xd5\x25\xb6\x1c\x4e\x63\x3e\xf5\x91\x5b\xa6\xc2\x35\x34\xcb\xeb\x62\x7d\x66\xfa\x7f\x1f\xd6\xff\x67\xa8\xcf\xec\x66\xe1\x9c\xa1\x3e\xb3\x2b\x8b\x73\x86\xfa\xcc\xee\x42\x8e\x01\x75\x0b\xe9\xd0\xda\xa2\xda\xdf\x8f\xe4\xdd\x57\x0d\x65\x83\xd2\xbc\xf1\xc0\x29\x8e\xa8\x5a\xf5\xb6\xe5\x3b\xff\xa7\xc3\xee\x17\xd9\xc6\x14\x45\xcb\xa6\x6a\xa2\x30\x23\x58\x90\x83\xde\x88\xde\x94\xf2\xe1\xd2\xbc\x59\x98\x44\x38\x86\x09\x6c\xdf\x6c\x5f\xfc\x1b\x00\x00\xff\xff\x10\x67\xd0\x0c\x2c\x22\x00\x00") func swarmagentresourcesclassicTBytes() ([]byte, error) { return bindataRead( @@ -806,12 +827,12 @@ func swarmagentresourcesclassicT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmagentresourcesclassic.t", size: 8667, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmagentresourcesclassic.t", size: 8748, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swarmagentresourcesvmasT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x59\xcf\x6f\xe2\xbe\x12\x3f\x77\xa5\xfd\x1f\x2c\x2e\x01\x89\x85\xc3\xbb\xed\xad\xdb\xee\x0f\xb4\xa5\x8d\xca\x6e\x2f\x15\x07\x13\x0f\x60\x35\xb1\x23\xdb\xa1\xe5\x21\xfe\xf7\x27\x3b\x09\xc4\x89\x9d\x42\xcb\x76\xfb\xbe\xfa\x72\x41\x8e\x3d\xe3\xf1\xfc\xf8\x78\x66\x8c\x10\x42\x9b\x8f\x1f\x90\xf9\x75\x70\x4a\xef\x40\x48\xca\x59\xe7\x33\xea\xdc\xaf\xb0\xa0\x78\x16\x83\xec\x06\xfb\x99\x4b\x98\xe3\x2c\x56\x41\x6f\xda\xe9\xef\x08\x23\x9e\xae\x3b\x9f\xf7\x9c\xcc\xa7\x8c\xa9\x3a\x9b\xcd\x66\x70\x8d\x13\xd8\x6e\x2f\xf4\xac\xc5\x03\xa1\x0e\xc3\x09\x68\x8a\x98\xf3\xb4\x53\x7e\xdf\xee\x77\x21\x90\x02\x23\xf2\x46\x4b\x77\xff\xf1\xc3\x66\x43\xe7\x88\x71\x85\x06\x23\x79\x91\x49\xc5\x93\xbb\xeb\xaf\xbf\xb6\xdb\xdd\xfa\xea\xce\x2b\x06\x6a\x74\xa9\x77\xd4\x84\xc0\x88\x5e\x67\x38\x8c\x64\x98\xcd\x62\x1a\xa1\x41\xc8\x85\x92\xfa\xfb\x19\x42\x7d\xb7\xdc\x57\xb3\x06\x93\x7c\xb3\xe9\x5e\xcc\x98\x47\x58\x95\x3a\x14\x20\x79\x26\x22\xf8\x2e\x78\x96\x76\x7b\x83\x72\xb2\xaa\xbd\xf2\xdc\xf7\x11\x67\x11\x56\x5d\xd7\xc6\x77\x63\xfd\x1f\x0a\x98\xd3\xa7\xa0\xd7\x47\x01\xa3\xd1\xa7\xa0\x8f\xb4\xe6\x47\x8c\xc0\x53\xb7\x67\x59\x24\x15\x3c\x05\xa1\x28\xc8\x9a\x5d\x68\x7a\xc1\xd9\x9c\x2e\x32\x61\xe4\x90\xb9\x2e\xd1\xee\xb7\xa9\x0e\x2a\xc2\x95\x74\xd7\x9c\x40\xd5\x6a\xce\xdd\x7c\x8a\x45\xd6\xaf\x13\x73\x4c\xbe\xe0\x18\xb3\x08\xc4\x17\x1c\x3d\x00\x23\xe7\x84\x08\x90\x32\xe4\x3c\x2e\x44\x3b\x3b\xab\x88\x56\x0e\xce\xf4\x49\x48\x55\x69\xc1\x50\x66\x33\x19\x09\x9a\x9a\x63\x0d\x83\x3e\xaa\x7e\xe8\xf6\x06\xd5\xe1\x88\xf4\x83\xa1\x65\x1b\x43\x51\xb7\x96\x3e\x7c\x1f\x05\xc3\x54\xf0\x15\x25\x20\xe4\x70\x4c\x23\xc1\x25\x9f\xab\xc1\x35\xa8\x47\x2e\x1e\x86\xd5\x43\x18\x26\x6e\xbf\xd1\xff\xc6\x70\xc3\x59\xf3\xa4\xc3\xa0\xef\xa6\x2a\xb4\xa2\x17\xe5\x0c\x8c\xef\xed\x55\xb2\xdd\x0f\xb4\x07\xd6\x9c\xb2\x62\x1f\xba\xc2\x0a\x46\xe1\x79\x5c\x3a\xe0\x18\xd4\x92\x1b\x0d\x5e\xae\x19\x4e\x68\x54\x37\x2a\x42\x1d\x99\xcd\x18\x28\xdb\x81\xf6\x8e\x44\xbc\xd1\x7d\xc7\x40\x4d\x0c\x6d\x19\x2d\x16\x69\x4d\x3e\x6b\x58\x19\x4c\x1d\x10\xa0\xd6\xa9\xf1\xc6\xa6\x19\x58\xfe\x3f\x62\x0a\xc4\x1c\x47\x20\x8b\x5d\xb7\xfd\xc2\x1d\x07\x23\x39\xc6\x0c\x2f\x80\x5c\x52\xf9\xb0\x73\xc7\xe3\xd0\x6f\xa2\xb8\xc0\x0b\xa8\x32\xb2\x91\xf0\xe5\xc1\xef\x52\xe4\xf9\x0a\xd3\x18\xcf\x68\x4c\xd5\x7a\x02\x35\xd0\xf5\x86\x78\x1a\x63\x35\xe7\x22\xf9\xa6\x81\xfa\x92\x27\x98\xb2\x8b\x12\x8d\xff\x63\x21\x6e\xb9\xf2\x77\x4a\xb0\x82\xd6\xa5\x49\x7e\x64\x3d\xa1\x44\x06\x2e\x7c\x6e\x1a\xe7\x82\x27\x69\xa6\x60\x88\xed\x73\xd8\xb6\x81\x58\x02\xca\x0d\x54\xa8\xf7\x3c\x32\xb7\xc7\xab\x4c\xf4\xca\x0b\xca\x96\x44\xb6\xde\x57\xab\xe4\x8a\xf3\xd4\x00\xe3\xf3\xb7\xd6\x8e\x7a\x07\x5c\x4d\x5f\x4e\x0d\x6e\x8e\xc2\x02\x22\xa0\x0e\x2b\x09\x96\x0a\x44\x68\xaf\xaa\xe0\x43\x11\x3f\x7f\xe6\x4a\x92\x96\x66\xf2\x1b\x09\x64\xd0\xbb\x4f\x38\xe9\x62\x42\xba\x95\x2b\xc9\x89\x6a\xb6\x6a\x6f\xe6\x73\xa9\x3d\xdb\x5a\xeb\xde\xa3\x30\x42\x6f\xfa\xfc\xd2\xa0\x77\x4f\xe8\xea\x2f\x88\xb3\x0f\xdd\x7c\xf1\xce\x2a\x07\xc4\x2d\xce\x49\x7e\x15\x61\x64\xa5\x2f\xc9\x84\xfe\x17\xe4\x18\xa7\x41\xcf\x0d\xb9\x63\xbd\x20\xe8\x4d\x07\xb6\xb0\x9a\xd9\xf4\xb0\x60\x2d\x14\x31\xb4\x19\x54\x63\xd5\x04\xa3\xc1\xd2\x1f\x58\x5a\x28\x8a\xea\x99\xc3\x8b\x43\xd5\x13\xae\xa7\x09\x59\xcb\xb7\x09\x56\x98\x50\xf9\x70\x55\x4d\x37\x6d\x2d\xb5\x05\xf0\xdb\x04\xb1\x1d\xc8\x2f\x0a\xe6\x13\x06\x74\x85\x4a\x6b\x6f\xe2\xa0\x9c\x00\x90\x5a\xf8\xfc\xfd\xc8\x7f\x57\x72\xef\xd8\x5e\x62\x85\xbd\x30\xd1\x0a\x15\x6f\x04\x17\x8e\x60\x38\x16\x36\x6c\xe8\xa8\x64\xa7\x27\xa8\x3a\xff\x5a\xae\x75\x82\x9c\xa7\xbd\x00\x7d\x97\x0a\xaa\x81\xd4\x41\x57\x1a\x61\x72\x02\x4a\x51\xb6\x68\x78\x70\x87\x98\x74\x53\x33\xbb\xc2\x33\x88\xbd\xfb\x7e\x65\x24\xe5\x94\xa9\xcb\xeb\x49\xb5\x06\x9e\x3a\x3c\x2c\x17\xa6\x84\xd4\x96\x5a\xe7\xa8\xd2\xa2\x81\xe4\xf5\x2b\xf1\xf5\x96\xfa\x03\x49\xa2\xcf\x6e\xa7\xce\x10\xdb\xca\xdd\x83\x7c\xc4\x51\x0f\x1f\xda\x94\xf0\x6c\xde\xa8\x9a\x6b\x90\x56\xa9\x31\xab\x8e\x33\x17\x9c\x29\x60\x64\x14\xbe\xac\x45\xe2\xeb\x18\x15\xec\x1a\x2a\x79\x46\x31\x75\x77\xce\xf5\xd3\x5e\x8d\x97\x96\x1b\x91\x83\x5c\xc6\xdd\x76\x68\xcf\x46\xd0\x11\x15\x7c\x55\xbb\x94\xcd\x78\xc6\xc8\x35\x56\xb7\x59\x6c\xce\x7a\x6f\xcd\xef\xfb\x28\x94\x2d\x76\x4b\x2c\xbd\x6f\xba\xdf\x41\x5d\x7d\x31\x93\xc8\x08\x5b\x60\x66\x6f\xeb\xdb\x35\x15\x7c\xe6\xe3\x14\x9a\x39\x27\x8b\xa3\xf0\xc1\xea\x00\xb9\x60\xbe\x70\x9a\xb6\x36\xc4\x2b\xbb\x0f\x79\x15\x7d\x14\x33\x1b\x87\x6a\x9d\xa3\x13\x77\x74\x8f\xaa\x90\x4b\x35\xb9\x9b\x01\xc8\x03\x8b\x9e\x34\xc4\xee\xac\x3d\x9b\xea\xea\xd4\xd1\x53\x30\x26\xf8\xe9\x6e\x2c\x43\x10\xb6\x5c\xef\x24\xd7\x7d\xaf\x82\xb7\xd7\xc3\xfe\x62\xf2\x4f\x1a\xf9\xcd\xf5\x75\x44\xcd\x71\x4a\x9f\xf8\x87\x9c\xf3\xf9\x7a\xa9\x92\x4f\xd7\xfa\xdf\x6d\x09\x54\xa3\x63\xec\x4b\xa0\x8e\x7c\x7b\x71\xef\xea\x2b\x0b\x7c\x9b\x36\xca\x11\x77\xde\xa6\xb0\xce\xac\xcb\xa1\x05\xd7\x02\x4c\xfa\x32\x31\x09\x41\x07\x55\xdf\x4a\x70\x24\x81\x2d\x28\x83\x4f\x07\x1e\xd9\x3e\xaa\x03\xc3\xdf\xe4\xd1\xeb\xe8\xc7\xae\x9a\xb2\x1b\x25\x48\x6b\xd6\xe4\xb3\x98\x3b\x69\x6a\xb3\x57\xad\x40\x59\x62\x41\x1e\xb1\x80\x50\xf0\x39\x8d\xa1\x21\x55\x5e\xbd\xfb\x5f\x57\xca\xda\xdd\xc7\xbf\x70\x6c\x1f\xfb\xe6\x4b\x49\xa3\xaf\xd5\xcc\x42\x0f\xca\x2f\x1b\x9c\x83\xfe\x2b\x9f\x34\x1b\xb9\xa7\x75\x45\x4c\x3d\x0a\xe0\xd2\x77\x76\x4c\x12\xca\x7e\x4b\x10\xae\x9c\xdd\x9a\x74\x35\x25\x8d\x3f\x88\x13\x7a\xae\xd1\xf5\xe6\x3b\xa8\xf3\x05\x30\x35\x79\xc4\x22\xc9\x5f\xb2\x35\xd4\xd5\xae\xc3\x98\xb2\xec\xc9\x2a\x4c\x9c\xe5\x02\xa1\x52\x0b\x13\x62\x29\x1f\xb9\x20\xe7\x99\x5a\x02\x53\x74\x1f\x9d\xe6\xf5\xc6\xf1\xd6\x27\x97\x9e\xd2\x22\xaf\x1a\x7e\xc2\xda\xe1\x28\x1e\x77\x29\x28\x1f\x60\xad\x0f\x62\x94\x95\x62\x81\x13\x50\x20\x34\xf8\xcb\xe5\xed\xe4\x3c\x2c\xf9\x3a\x8a\xa2\xfd\xe6\x58\x2d\xeb\x76\x92\x72\xf9\x13\xd6\x21\x56\x4b\xc7\xe3\xa2\xf9\x35\x5e\x40\x2d\x5f\x71\xae\xa9\x0d\x4d\x66\xf2\x03\xcb\x2b\xad\xf5\x09\x44\x02\x5c\x2f\xd8\x0e\x35\xe6\x4b\xeb\x22\x1b\xe3\x15\x4e\x59\x70\x6b\xca\xde\xb8\xbd\x2c\xa7\x2e\x6e\x4c\x8f\x67\x1b\x2f\xd2\xca\x36\x99\x14\x1a\xd4\x9c\x87\x26\x78\x01\xb7\x30\x07\x01\x2c\x6a\x10\xeb\x90\x99\xcf\x41\xd4\xa5\xe6\x72\xa4\xe9\x6e\xf4\x9c\xb3\x72\xd5\x16\x94\x4b\x2f\x61\x58\xce\xbb\x88\xe5\x43\xe6\x21\x9b\xfc\xfc\xed\x22\x58\xb9\x2b\x9a\x82\xa8\xa8\x6a\x1c\xb5\xfe\xf3\xf5\x04\x42\xfd\x0e\x37\x39\xa8\xeb\xd1\x01\x47\x4b\xca\x16\x7a\xdb\x5b\xc0\xe4\x86\xc5\xeb\x86\x68\xe6\xae\x85\x9b\xb4\x8c\xb1\x6f\x82\x27\x46\x2a\xef\xe3\xc3\x0b\xc1\xa3\x1f\x7c\xe2\x92\x50\xf9\xe0\x54\xd0\x92\x38\x21\x21\x13\xb4\xba\xa5\x28\xdd\xa0\xfb\x6f\x15\xf5\xff\x5d\x45\xf5\xdb\x5f\xd5\x7a\x83\x54\xd0\x04\x8b\x75\xd9\x41\x95\x83\x59\xcc\x67\xfd\x20\x77\xa1\x43\xd3\xdd\xaa\x42\x50\xe9\x7f\x83\xd5\x92\x34\x11\xac\xde\x08\x6a\x22\xda\x41\x8d\x95\x32\xf3\x5a\x51\xa1\x32\x1c\x8f\x4d\x04\xee\xdb\xae\x1f\x3f\xfc\x2f\x00\x00\xff\xff\x98\x0f\x76\x84\xb7\x26\x00\x00") +var _swarmagentresourcesvmasT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x59\x4b\x6f\xe2\xbe\x16\x5f\x77\xa4\xf9\x0e\x16\x9b\x80\xc4\xc0\xe2\xee\x66\xd7\x69\xe7\x81\xa6\xb4\xa8\xcc\x74\x53\xb1\x30\xf1\x09\x58\x4d\xec\xc8\x76\x68\xb9\x88\xef\x7e\x65\x27\x81\x38\xb1\x53\x68\x99\x4e\xef\x5f\x7f\x36\x28\x89\xcf\xf1\xf1\x79\xfc\x7c\x1e\x08\x21\xb4\xf9\xf8\x01\x99\x5f\x07\xa7\xf4\x0e\x84\xa4\x9c\x75\x3e\xa3\xce\xfd\x0a\x0b\x8a\xe7\x31\xc8\x6e\xb0\xff\x72\x09\x11\xce\x62\x15\xf4\x66\x9d\xfe\x8e\x30\xe4\xe9\xba\xf3\x79\xcf\xc9\xbc\xca\x98\xaa\xb3\xd9\x6c\x06\xd7\x38\x81\xed\xf6\x42\x7f\xb5\x78\x20\xd4\x61\x38\x01\x4d\x11\x73\x9e\x76\xca\xf7\xdb\xfd\x2e\x04\x52\x60\x44\xde\x68\xe9\xee\x3f\x7e\xd8\x6c\x68\x84\x18\x57\x68\x30\x92\x17\x99\x54\x3c\xb9\xbb\xfe\xfa\x6b\xbb\xdd\xad\xaf\xee\xbc\x62\xa0\x46\x97\x7a\x47\x4d\x08\x8c\xe8\x75\x86\xc3\x48\x4e\xb2\x79\x4c\x43\x34\x98\x70\xa1\xa4\x7e\x7f\x86\x50\xdf\x2d\xf7\xd5\xbc\xc1\x24\xdf\x6c\xb6\x17\x33\xe6\x21\x56\xa5\x0e\x05\x48\x9e\x89\x10\xbe\x0b\x9e\xa5\xdd\xde\xa0\xfc\x58\xd5\x5e\x79\xee\xfb\x90\xb3\x10\xab\xae\x6b\xe3\xbb\xb1\xfe\x9f\x08\x88\xe8\x53\xd0\xeb\xa3\x80\xd1\xf0\x53\xd0\x47\x5a\xf3\x23\x46\xe0\xa9\xdb\xb3\x2c\x92\x0a\x9e\x82\x50\x14\x64\xcd\x2e\x34\xbd\xe0\x2c\xa2\x8b\x4c\x18\x39\x64\xae\x4b\xb4\xfb\x6d\xaa\x0f\x15\xe1\x4a\xba\x6b\x4e\xa0\x6a\x35\xe7\x6e\x3e\xc5\x22\xeb\xd7\x89\x39\x26\x5f\x70\x8c\x59\x08\xe2\x0b\x0e\x1f\x80\x91\x73\x42\x04\x48\x39\xe1\x3c\x2e\x44\x3b\x3b\xab\x88\x56\x3e\x9c\xe9\x93\x90\xaa\xd2\x82\xa1\xcc\xe6\x32\x14\x34\x35\xc7\x1a\x06\x7d\x54\x7d\xd1\xed\x0d\xaa\x8f\x23\xd2\x0f\x86\x96\x6d\x0c\x45\xdd\x5a\xfa\xf0\x7d\x14\x0c\x53\xc1\x57\x94\x80\x90\xc3\x31\x0d\x05\x97\x3c\x52\x83\x6b\x50\x8f\x5c\x3c\x0c\xab\x87\x30\x4c\xdc\x7e\xa3\xff\x8d\xe1\x86\xf3\xe6\x49\x87\x41\xdf\x4d\x55\x68\x45\x2f\xca\x19\x18\xdf\xdb\xab\x64\xbb\x7f\xd0\x1e\x58\x73\xca\x8a\x7d\xe8\x0a\x2b\x18\x4d\xce\xe3\xd2\x01\xc7\xa0\x96\xdc\x68\xf0\x72\xcd\x70\x42\xc3\xba\x51\x11\xea\xc8\x6c\xce\x40\xd9\x0e\xb4\x77\x24\xe2\x8d\xee\x3b\x06\x6a\x6a\x68\xcb\x68\xb1\x48\x6b\xf2\x59\x8f\x95\x87\x99\x03\x02\xd4\x3a\x35\xde\xd8\x34\x03\xcb\xff\x47\x4c\x81\x88\x70\x08\xb2\xd8\x75\xdb\x2f\xdc\x71\x30\x92\x63\xcc\xf0\x02\xc8\x25\x95\x0f\x3b\x77\x3c\x0e\xfd\xa6\x8a\x0b\xbc\x80\x2a\x23\x1b\x09\x5f\x1e\xfc\x2e\x45\x9e\xaf\x30\x8d\xf1\x9c\xc6\x54\xad\xa7\x50\x03\x5d\x6f\x88\xa7\x31\x56\x11\x17\xc9\x37\x0d\xd4\x97\x3c\xc1\x94\x5d\x94\x68\xfc\x1f\x0b\x71\xcb\x95\xbf\x53\x82\x15\xb4\x2e\x4d\xf2\x23\xeb\x0f\x4a\x64\xe0\xc2\xe7\xa6\x71\x2e\x78\x92\x66\x0a\x86\xd8\x3e\x87\x6d\x1b\x88\x25\xa0\xdc\x40\x85\x7a\xcf\x43\x73\x7b\xbc\xca\x44\xaf\xbc\xa0\x6c\x49\x64\xeb\x7d\xb5\x4a\xae\x38\x4f\x0d\x30\x3e\x7f\x6b\xed\xa8\x77\xc0\xd5\xf4\xe5\xd4\xe0\xe6\x68\x52\x40\x04\xd4\x61\x25\xc1\x52\x81\x98\xd8\xab\x2a\xf8\x50\xc4\xcf\x9f\xb9\x92\xa4\xa5\x99\xfc\x46\x02\x19\xf4\xee\x13\x4e\xba\x98\x90\x6e\xe5\x4a\x72\xa2\x9a\xad\xda\x9b\x28\x92\xda\xb3\xad\xb5\xee\x3d\x0a\x23\xf4\x66\xcf\x2f\x0d\x7a\xf7\x84\xae\xfe\x82\x38\xfb\xd0\xcd\x17\xef\xac\x72\x40\xdc\xe2\x9c\xe4\x57\x11\x46\x56\xfa\x92\x4c\xe9\x7f\x41\x8e\x71\x1a\xf4\xdc\x90\x3b\xd6\x0b\x82\xde\x6c\x60\x0b\xab\x99\xcd\x0e\x0b\xd6\x42\x11\x43\x9b\x41\x35\x56\x4d\x30\x1a\x2c\xfd\x81\xa5\x85\xa2\xa8\x9e\x39\xbc\x38\x54\x3d\xe1\x7a\x9a\x90\xb5\x7c\x9b\x60\x85\x09\x95\x0f\x57\xd5\x74\xd3\xd6\x52\x5b\x00\xbf\x4d\x10\xdb\x81\xfc\xa2\x60\x3e\x61\x40\x57\xa8\xb4\xf6\xa6\x0e\xca\x29\x00\xa9\x85\xcf\xdf\x8f\xfc\x77\x25\xf7\x8e\xed\x25\x56\xd8\x0b\x13\xad\x50\xf1\x46\x70\xe1\x08\x86\x63\x61\xc3\x86\x8e\x4a\x76\x7a\x82\xaa\xf3\xaf\xe5\x5a\x27\xc8\x79\xda\x0b\xd0\x77\xa9\xa0\x1a\x48\x1d\x74\xa5\x11\x26\xa7\xa0\x14\x65\x8b\x86\x07\x77\x88\x49\x37\x35\xb3\x2b\x3c\x87\xd8\xbb\xef\x57\x46\x52\x4e\x99\xba\xbc\x9e\x56\x6b\xe0\x99\xc3\xc3\x72\x61\x4a\x48\x6d\xa9\x75\x8e\x2a\x2d\x1a\x48\x5e\xbf\x12\x5f\x6f\xa9\x3f\x90\x24\xfa\xec\x76\xea\x0c\xb1\xad\xdc\x3d\xc8\x47\x1c\xf5\xf0\xa1\x4d\x09\xcf\xe6\x8d\xaa\xb9\x06\x69\x95\x1a\xb3\xea\x38\x91\xe0\x4c\x01\x23\xa3\xc9\xcb\x5a\x24\xbe\x8e\x51\xc1\xae\xa1\x92\x67\x14\x53\x77\xe7\x5c\x3f\xed\xd5\x78\x69\xb9\x11\x39\xc8\x65\xdc\x6d\x87\xf6\x6c\x04\x1d\x51\xc1\x57\xb5\x4b\xd9\x9c\x67\x8c\x5c\x63\x75\x9b\xc5\xe6\xac\xf7\xd6\xf7\x7d\x1f\x85\xb2\xc5\x6e\x89\xa5\xf7\x4d\xf7\x3b\xa8\xab\x2f\xe6\x23\x32\xc2\x16\x98\xd9\xdb\xfa\x76\x4d\x05\x9f\xfb\x38\x4d\xcc\x37\x27\x8b\xa3\xf0\xc1\xea\x00\xb9\x60\xbe\x70\x9a\xb6\x36\xc4\x2b\xbb\x0f\x79\x15\x7d\x14\x33\x1b\x87\x6a\x9d\xa3\x13\x77\x74\x8f\xaa\x90\x4b\x35\xb9\x9b\x01\xc8\x03\x8b\x9e\x34\xc4\xee\xac\x3d\x9b\xea\xea\xd4\xd1\x53\x30\x26\xf8\xe9\x6e\x2c\x27\x20\x6c\xb9\xde\x49\xae\xfb\x5e\x05\x6f\xaf\x87\xfd\xc5\xe4\x9f\x34\xf2\x9b\xeb\xeb\x88\x9a\xe3\x94\x3e\xf1\x0f\x39\xe7\xf3\xf5\x52\x25\x9f\xae\xf5\xbf\xdb\x12\xa8\x46\xc7\xd8\x97\x40\x1d\x39\x7b\x71\xef\xea\x2b\x0b\x7c\x9b\x36\xca\x11\x77\xde\xa6\xb0\xce\xac\xcb\x47\x0b\xae\x05\x98\xf4\x65\x6a\x12\x82\x0e\xaa\xce\x4a\x70\x28\x81\x2d\x28\x83\x4f\x07\x1e\xd9\x3e\xaa\x03\xc3\xdf\x64\xe8\x75\xf4\xb0\xab\xa6\xec\x46\x09\xd2\x9a\x35\xf9\x2c\xe6\x4e\x9a\xda\xec\x55\x2b\x50\x96\x58\x90\x47\x2c\x60\x22\x78\x44\x63\x68\x48\x95\x57\xef\xfe\xe9\x4a\x59\xbb\xfb\xf8\x17\x8e\xed\x63\xdf\x9c\x94\x34\xfa\x5a\xcd\x2c\xf4\xa0\xfc\xb2\xc1\x39\xe8\xbf\x72\xa4\xd9\xc8\x3d\xad\x2b\x62\xe6\x51\x00\x97\xbe\xb3\x63\x92\x50\xf6\x5b\x82\x70\xe5\xec\xd6\x47\x57\x53\xd2\xf8\x83\x38\x89\xe7\x16\x95\xff\xf4\x11\x8b\x64\xcc\x09\xd4\x87\x76\x9b\xcd\x77\x50\xe7\x0b\x60\x6a\xb7\x24\x9f\x71\x6b\x10\xdc\x6e\x51\x3d\xe5\xf3\xd0\x35\x69\xea\xf3\xc1\x4e\x4c\x59\xf6\x64\x15\x3c\xce\x32\x84\x50\xa9\x0f\x39\xc1\x52\x3e\x72\x41\xce\x33\xb5\x04\xa6\xe8\x3e\xea\xcd\x54\xc8\x31\x43\x94\x4b\x4f\xc9\x92\x57\x23\x3f\x61\xed\x70\x40\x8f\x1b\x16\x94\x0f\xb0\xd6\x47\x32\x46\x48\xb1\xc0\x09\x28\x10\xfa\x52\x91\xcb\xdb\xe9\xf9\xa4\xe4\xeb\x28\xb6\xf6\x9b\x63\xb5\xac\xdb\x5f\xca\xe5\x4f\x58\x4f\xb0\x5a\x3a\x86\x96\xe6\xd7\x98\xac\x5a\x3e\xe8\x5c\xd3\xb0\x0f\x8d\xd0\x0f\x2c\xaf\xb4\xd6\xa7\x10\x0a\x70\x4d\xc6\x1d\x6a\xcc\x97\xd6\x45\x36\xc6\x2b\x9c\xbd\xe0\xd6\x94\xbd\x61\x75\x2b\x58\x8a\x9b\xd8\x13\x31\xc6\x9f\xb4\xb2\x4d\x86\x86\x06\x35\xe7\xa1\x09\x5e\xc0\x2d\x44\x20\x80\x85\x0d\x62\x1d\x8a\x51\x04\xa2\x2e\x35\x97\x23\x4d\x77\xa3\xbf\x39\x2b\x62\x6d\x41\xb9\xf4\x12\x4e\xca\xef\x2e\x62\xf9\x90\x79\xc8\xa6\x3f\x7f\xbb\x08\x56\xee\x4a\xa9\x20\x2a\xaa\x25\x47\x0f\xe1\xf9\x3a\x05\xa1\x7e\x87\x9b\xdc\xd6\x35\xcc\xc0\xe1\x92\xb2\x85\xde\xf6\x16\x30\xb9\x61\xf1\xba\x21\x9a\xb9\xc3\xe1\x26\x2d\x63\xec\x9b\xe0\x89\x91\xca\x3b\xd4\x78\x21\x28\xf5\x83\x4f\x5c\x12\x2a\x1f\x9c\x0a\x5a\x12\x27\x24\x64\x82\x56\xb7\x14\xa5\x1b\x74\xff\xad\xce\xfe\xbf\xab\xb3\x7e\xfb\xb4\xae\x37\x48\x05\x4d\xb0\x58\x97\x9d\x59\x39\x98\xc7\x7c\xde\x0f\x72\x17\x3a\x34\x8d\xae\x2a\x04\x95\xfe\x37\x58\x2d\x49\x13\xc1\xea\x0d\xa6\x26\xa2\x1d\xd4\xb0\x29\x33\xba\x15\x15\x2a\xc3\xf1\xd8\x44\xe0\xbe\x9d\xfb\xf1\xc3\xff\x02\x00\x00\xff\xff\x23\xbb\xd4\x5f\x0f\x27\x00\x00") func swarmagentresourcesvmasTBytes() ([]byte, error) { return bindataRead( @@ -826,12 +847,12 @@ func swarmagentresourcesvmasT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmagentresourcesvmas.t", size: 9911, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmagentresourcesvmas.t", size: 9999, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swarmagentresourcesvmssT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5a\x4b\x6f\xdb\xb8\x13\x3f\x37\x9f\x42\xd0\x45\x36\xe0\x3a\xff\xc7\x9e\x7a\xcb\xa3\xdb\x35\x1a\x27\x42\xdc\x66\x0f\x81\x0f\x63\x71\x64\x13\x91\x48\x81\xa4\xdc\x7a\x0d\x7d\xf7\x05\xf5\xb2\x28\x51\xb6\xd3\x4d\x93\x14\x59\x1f\x82\xd8\xc3\x79\xf0\x37\x33\xe4\xcc\x48\xdb\x2d\x0d\x9d\xf1\x44\xce\x14\x17\xb0\xc4\xb3\x20\xe0\x29\x53\x59\x76\xe2\x38\x8e\xb3\xcd\xff\x3a\x8e\x0b\x09\xbd\x43\x21\x29\x67\xee\x07\xc7\xbd\x5f\x83\xa0\xb0\x88\x50\x0e\xbc\x1d\xa5\x94\xe0\x0d\xe7\xee\xa8\xe2\x0b\x78\xb2\x71\x3f\xd4\x72\xf2\x5f\x52\xa6\xda\x42\xb6\xdb\xf1\x35\xc4\x98\x65\xa6\x15\xf2\x42\xff\x6d\x0a\x74\x1c\x97\x41\x8c\x9a\x7f\x1d\x5f\x71\x9e\x5c\x73\x82\x6e\x49\xcc\x6a\xb5\x04\x13\x64\x44\xde\x68\x6b\xef\x77\xac\xf7\x01\x67\x01\xa8\x81\x37\xa5\x81\xe0\x92\x87\x6a\x7c\x8d\xea\x1b\x17\x0f\xa7\x49\xba\x88\x68\x30\xf1\xcf\x08\x11\x28\x25\xca\x53\x6f\xe4\x34\x2c\x8c\x41\x2a\x14\xbe\xb9\x4a\xdb\xec\x0d\x87\xf3\xca\x80\x79\x6d\x40\xc4\x03\x50\x15\x5a\x02\x25\x4f\x45\x80\x9f\x04\x4f\x93\xc1\x70\x5c\x11\x1b\x38\x55\x9b\xaa\x2c\x6c\x68\x96\x06\x24\xbe\xc0\x90\x7e\x47\xe9\x0d\xef\x63\x4e\x06\x40\xc8\x40\x63\x3c\x61\x04\xbf\x0f\x86\xa3\xc3\x98\xde\x84\xa1\x44\xe5\x0d\x8d\xb5\x76\x1d\x25\xfa\xc3\xf9\xe1\xa5\xde\xf0\x9e\xd0\xf5\x0b\x98\x53\x8b\x2d\x17\xd7\x2e\xa9\xa1\x4d\x04\x4f\x50\x28\x8a\xd2\x0c\x44\x28\x18\xbe\x6c\x12\x6c\x87\xe3\x3a\x9e\xd1\xbf\x50\x4e\x21\xf1\x86\xd6\x30\xbd\x9b\xea\x05\xde\x70\x3e\x36\x4d\xd5\xc2\xe6\xdd\x70\x54\xa5\x8e\x5d\xd8\x95\x20\x9c\x9a\xec\xb2\x60\xcd\x46\x27\xdb\x2d\x32\x92\x65\x27\x79\x76\x4e\x64\x11\x77\xce\xd8\xe7\x42\xc9\x1f\xc9\xcd\x4b\x0c\x21\x8d\x8c\x54\xfa\xf1\x18\xb5\x21\xd2\xca\x89\x23\xf0\x27\x4c\xce\x50\x29\xca\x96\x26\x41\x93\x78\x0c\x94\x69\x49\x57\xb0\xc0\xa8\x57\xe9\x47\x46\x12\x4e\x99\xba\xbc\x9e\xe9\x1f\x8a\x40\xf1\x76\xf9\xd8\xf0\x81\x36\xa4\x4a\xde\xa8\xda\xdc\x14\xd5\x8a\x13\x2d\xfe\x72\xc3\x20\xa6\xc1\x31\xae\xeb\x3d\x31\x6a\xe7\x3d\x89\x77\x9e\xfe\x08\xeb\xf3\xd5\x93\x9e\x5f\x36\x7d\x57\x8b\xa3\x83\x62\x01\xc1\x03\x32\x52\xda\xe7\x73\x1e\x49\x63\xff\x8e\x11\x28\x87\x15\x9f\x17\xf2\xb4\xa0\xca\x86\x06\x7f\x56\xff\x3f\x6f\xc4\x49\x28\x38\x53\xc8\xc8\xc4\xbf\xe0\x2c\xa4\xcb\x54\xe4\xbb\xfd\x67\x86\x54\xc2\xda\x48\xec\xc7\xa3\x1d\xb9\x05\x2c\x96\x25\x8e\xe3\x52\x62\x38\x6b\x42\x8e\x8a\x11\xcf\x7a\x98\xf6\x46\x48\x17\xb9\xf6\x37\x3b\xa6\x94\x2d\x78\xca\xc8\x35\xa8\xdb\x34\xca\x37\x79\xdf\x24\x47\x1c\xc8\x39\x44\xc0\x02\xca\x96\xf5\x8a\x26\xd8\xdb\xc1\x27\x54\x57\xe7\x39\xcd\xc9\xad\x2c\x4f\xc3\x61\x66\xd7\x98\x08\xbe\xe8\x11\xe3\xe7\x24\x1b\xff\x23\xd2\x7f\x67\x32\x8a\xee\xb9\x5d\x04\x48\x55\x5b\x4d\x81\xc1\x12\xc9\x25\x95\x0f\xb2\x56\xf7\x98\x9a\xaa\x29\xa0\x88\x9e\xed\x16\x23\x89\x8f\x13\x66\x1c\x33\x4d\x4b\x5f\xa2\x62\xda\x5b\x77\xea\xcf\xc8\xa6\xbc\xe7\xde\x6c\xa9\x3e\x58\x32\xfd\xe7\x35\x14\x4a\xcf\x61\xc4\xc1\xf2\xc8\xee\xe3\x27\x82\xf9\xbf\xaf\x01\xe6\xe7\x30\x62\x0f\xcc\xef\xde\xfd\x44\x80\xff\xf7\x1a\x00\x7e\x0e\x23\x5e\x36\x8e\xff\xff\x1a\x60\x7e\x0e\x23\x5e\x16\xe6\xdf\x5e\x03\xcc\xcf\x61\x44\x2f\xcc\x66\xdf\xc7\xb8\xd2\x37\xe4\x45\x2a\x15\x8f\xef\xae\x3f\x7e\xa9\x6f\xc7\x91\xd9\xae\x32\x54\x93\x4b\xaf\xc3\x6f\xef\x1b\x3b\xec\xcd\x2a\xd5\x94\xd2\xaa\xaa\x5c\x05\xba\x57\x2b\xbf\x35\x67\x3a\x02\xf3\x12\x79\x96\x57\x9e\xae\xd3\x18\x64\x78\x10\x48\x64\x4b\xca\xf0\x7d\x4f\x37\x72\x37\x6d\xf6\x6e\x23\xc7\x7b\xbf\x8e\xa5\x6c\x54\xea\xd9\xcf\x98\xaa\x1c\xa1\xfe\x60\xb3\x92\x26\x4b\x01\x04\x7d\x1e\xd1\x60\xd3\xee\x61\x63\x4e\x72\xdd\x67\xa9\xe2\x31\xa8\x5d\x6f\x69\x36\xa5\x6b\x2a\x54\x0a\xd1\x14\x82\x15\x65\xe8\x0b\x1e\xd2\x08\xdb\xb2\x58\x51\x72\xd9\xa9\x3b\xfa\x84\x29\x14\x21\x04\xb8\xb7\x6f\x71\x3a\xbd\x8b\x81\x15\xa3\x41\xab\x39\xd9\x87\x41\x63\x05\x4d\x0e\xaa\xed\x53\xde\x35\x81\x26\x41\x2e\xcc\x62\x8a\xdd\xa0\xfd\x01\xdf\x65\x6f\x96\xef\xe7\x07\x9b\xce\x63\xb7\x50\x41\x41\x0e\x45\x5d\x91\x6a\x23\xc7\x3b\xb5\x74\xbc\x7d\x7d\xbb\xa5\x9d\xed\x76\x66\xcd\x4f\xff\xfe\xe7\xed\x06\xc0\xb2\x0b\x99\x2e\x18\xaa\x1e\x77\xb7\xf7\x6a\x4d\x2d\x86\x6a\x96\x0b\x29\xcf\x95\xc7\xda\x69\xff\xdd\xf6\xeb\xdc\x16\x27\x6e\x22\x68\x0c\x42\xa7\xa6\xab\x44\x8a\x5d\x03\xda\xa2\xcc\xef\xf3\x66\x5b\xdb\x54\xe0\x72\xd9\x9b\x8b\x40\x62\xca\xbe\x4a\x14\xb6\x81\x80\x41\xb4\x8c\x01\x02\x1e\x27\xa9\x42\xb1\x3b\x92\xfa\xc1\x9d\x9a\x23\x2f\x53\xd2\x76\xfb\x09\xd5\xd9\x12\x99\x9a\x7d\x03\x11\x17\x57\xc8\x25\x28\x68\x39\xdc\x8d\x28\x4b\xbf\x1b\x89\x6b\x1b\x40\x10\x2a\xb5\x7e\x1f\xa4\xfc\xc6\x05\x39\x4b\xd5\x0a\x99\xa2\xbb\xd3\x38\x87\xb7\xed\x03\x57\xca\x95\x7d\x56\x51\xf4\x8e\x9f\x71\xd3\x97\x68\xf6\x90\x73\x1f\x70\xa3\x37\x91\x83\x92\x80\x80\x18\x15\x0a\x7d\xf7\xca\xd5\xed\xec\xcc\xaf\xa4\x76\xf1\xd8\x69\x06\xb5\x6a\x63\x2a\xe5\xea\x33\x6e\x7c\x50\xab\x9e\x28\xed\x46\xdc\xfc\xe8\x79\x88\xf6\x05\x0d\x9d\x3f\x40\x5e\x69\xa8\x67\x18\x08\xb4\x1c\x4d\x5d\xec\x8a\x85\x6d\x5b\x73\x7f\x95\xc1\x57\xca\xea\x18\xdd\xcd\x6c\x33\x7a\xcb\x4a\xa5\x37\x84\x69\x0c\x4b\xbc\xc5\x10\x05\xb2\xa0\x4b\xd7\xf1\x1f\x86\x28\xda\xa6\x71\x39\xd1\x8c\x37\x9a\x66\xf3\x40\xe1\x75\xb9\xea\xe5\xf4\x2b\xba\x95\x5b\x3e\xa4\x3d\x7c\xb3\xcf\x5f\xad\x1c\xeb\xdd\x40\x24\x02\x85\x52\x99\x30\x65\x96\x94\xd1\xd1\x95\x4f\x59\x9c\x71\x3b\x53\xb8\xd4\x04\x1b\x1a\x41\x7e\x79\x2f\xb5\x9e\x5b\x04\xf2\xa7\xa0\xca\x92\x0c\x79\x91\x84\x37\x49\x95\x32\xbf\x0b\x1e\xe7\xe6\x1f\x31\x0b\x29\x3e\xa3\xc6\xb3\x2f\x29\xb9\x24\xda\x9e\xee\xae\x57\xe4\x82\x33\x05\x94\xa1\xb0\xa7\x57\x7d\x33\x89\xca\xc7\x83\xc7\xd4\xf4\xff\x0e\x5a\x8e\x2f\xe9\x8d\x8b\xdc\xf2\xa8\xd4\x19\x8e\xcb\x4b\xaa\x7a\x96\x21\xc7\x8b\x88\x2f\x46\x8e\x57\xf8\xd7\x7e\x94\x3d\xa3\x07\xdf\xfa\x0c\xe7\x90\x07\x5f\xbd\x03\xdf\xfa\x8c\xe8\x97\x77\xe0\x5b\x9f\x3e\xfd\xf2\x0e\x7c\xeb\x73\xad\xa7\x70\x60\xcb\x7f\x73\x6b\xfb\x6a\x7f\x0e\x99\x75\xe6\x48\x45\x29\xd9\x1c\x60\x41\x02\x01\x55\x9b\xde\x6e\x6b\xdf\x8b\x48\xfb\xdf\x10\x69\x72\x28\x5a\xd4\xbe\x33\x05\x8c\x80\x20\xc7\xbc\x6e\x70\x51\xb4\x84\xa7\xe6\xa0\x68\x16\x80\xae\xff\xeb\x37\x46\x4e\xfe\x0e\x00\x00\xff\xff\xa9\x45\x0b\x72\xc7\x25\x00\x00") +var _swarmagentresourcesvmssT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x5a\x4b\x6f\xdb\x38\x10\x3e\x37\xbf\x82\xd0\x45\x16\xe0\x3a\xfb\x3a\xf5\x96\x47\xb7\x6b\x34\x4e\x84\xb8\xcd\x1e\x02\x1f\x68\x71\x64\x13\x91\x48\x81\xa4\xdc\x78\x0d\xfd\xf7\x05\xf5\xb2\x28\x51\xb6\xd3\x4d\x13\x17\x59\x1f\x82\xd8\xe4\xcc\x7c\xfc\x66\x86\x9a\x19\x7b\xb3\xa1\x21\x1a\x8d\xe5\x54\x71\x81\x17\x70\x16\x04\x3c\x65\x2a\xcb\x4e\x10\x42\x68\x93\xff\x45\xc8\xc1\x09\xbd\x03\x21\x29\x67\xce\x07\xe4\xdc\xaf\xb0\xa0\x78\x1e\x81\x1c\xb8\xdb\x95\x52\x83\xeb\xcd\x9c\x61\x25\x17\xf0\x64\xed\x7c\xa8\xf5\xe4\x9f\xa4\x4c\xb5\x95\x6c\x36\xa3\x6b\x1c\x43\x96\x99\x28\xe4\x85\xfe\xdb\x54\x88\x90\xc3\x70\x0c\x5a\x7e\x15\x5f\x71\x9e\x5c\x73\x02\x4e\xb9\x98\xd5\x66\x09\x24\xc0\x88\xbc\xd1\x68\xef\xb7\xa2\xf7\x01\x67\x01\x56\x03\x77\x42\x03\xc1\x25\x0f\xd5\xe8\x1a\xd4\x37\x2e\x1e\x4e\x93\x74\x1e\xd1\x60\xec\x9f\x11\x22\x40\x4a\x90\xa7\xee\x10\x35\x10\xc6\x58\x2a\x10\xbe\xb9\x4b\x63\x76\x3d\x6f\x56\x01\x98\xd5\x00\x22\x1e\x60\x55\xb1\x25\x40\xf2\x54\x04\xf0\x49\xf0\x34\x19\x78\xa3\x6a\xb1\xc1\x53\x75\xa8\x0a\x61\xc3\xb2\x34\x28\xf1\x05\x84\xf4\x11\xa4\xeb\xdd\xc7\x9c\x0c\x30\x21\x03\xcd\xf1\x98\x11\x78\x1c\x78\xc3\xfd\x9c\xde\x84\xa1\x04\xe5\x7a\xc6\x5e\xbb\x8d\x92\x7d\x6f\xb6\x7f\xab\xeb\xdd\x13\xba\x7a\x05\x38\xb5\xda\x72\x73\xed\x92\x9a\xda\x44\xf0\x04\x84\xa2\x20\xcd\x40\xc4\x85\xc0\x97\x75\x02\xed\x70\x5c\xc5\x53\xfa\x0f\xc8\x09\x4e\x5c\xcf\x1a\xa6\x77\x13\xbd\xc1\xf5\x66\x23\x13\xaa\x56\x36\xeb\x86\xa3\x2a\x6d\x6c\xc3\xae\x24\xe1\xd4\x14\x97\x85\x68\x36\x3c\xd9\x6c\x80\x91\x2c\x3b\xc9\xb3\x73\x2c\x8b\xb8\x43\x23\x9f\x0b\x25\xbf\x27\x37\x2f\x21\xc4\x69\x64\xa4\xd2\xf7\xc7\xa8\x8d\x91\x56\x4e\x1c\xc0\x3f\x61\x72\x0a\x4a\x51\xb6\x30\x17\xf4\x12\x8f\x31\x65\x5a\xd3\x15\x9e\x43\xd4\x6b\xf4\x23\x23\x09\xa7\x4c\x5d\x5e\x4f\xf5\x07\x45\xa0\xb8\xdb\x7c\x6c\xf8\x40\x03\xa9\x92\x37\xaa\x0e\x37\x01\xb5\xe4\x44\xab\xbf\x5c\x33\x1c\xd3\xe0\x10\xd7\xf5\xde\x18\xb5\xf3\x9e\xc5\x3b\xcf\x7f\x85\xf5\xf9\xea\x59\xef\x2f\x9b\xbd\xab\xf9\xc1\x41\x31\xc7\xc1\x03\x30\x52\xe2\xf3\x39\x8f\xa4\x71\x7e\x64\x04\xca\x7e\xc3\xe7\x85\x3e\xad\xa8\xc2\xd0\x90\xcf\xea\xff\x67\x8d\x38\x09\x05\x67\x0a\x18\x19\xfb\x17\x9c\x85\x74\x91\x8a\xfc\xb4\xff\x0d\x48\xa5\xac\xcd\xc4\x6e\x3e\xda\x91\x5b\xd0\x62\xd9\x82\x90\x43\x89\xe1\xac\x31\x39\x28\x46\x5c\xeb\x65\xda\x1b\x21\x5d\xe6\xda\xef\xec\x9c\x52\x36\xe7\x29\x23\xd7\x58\xdd\xa6\x51\x7e\xc8\xfb\xe6\x72\xc4\x31\x39\xc7\x11\x66\x01\x65\x8b\x7a\x47\x93\xec\xcd\xe0\x13\xa8\xab\xf3\x7c\x0d\xe5\x28\xcb\xdb\xd0\xcb\xec\x16\x13\xc1\xe7\x3d\x6a\xfc\x7c\xc9\x26\xff\x84\xf4\xdf\x42\x06\xd1\xbd\xb7\x8b\x00\xa9\x6a\xab\x09\x66\x78\x01\xe4\x92\xca\x07\x59\x9b\x7b\x4a\x4d\xd5\x54\x50\x44\xcf\x66\x03\x91\x84\xa7\x29\x33\xae\x99\x26\xd2\xd7\xa8\x98\x76\xd6\x9d\xfa\x35\xb4\x19\xef\x79\x6e\xb6\x4c\xef\x2d\x99\x7e\x39\x86\x42\xe9\x25\x40\xec\x2d\x8f\xec\x3e\x7e\x26\x9a\x7f\x3d\x06\x9a\x5f\x02\xc4\x0e\x9a\xdf\xbd\xfb\x81\x04\xff\x76\x0c\x04\xbf\x04\x88\xd7\x8d\xe3\xdf\x8f\x81\xe6\x97\x00\xf1\xba\x34\xff\x71\x0c\x34\xbf\x04\x88\x5e\x9a\xcd\xbe\x8f\x71\xa5\x9f\x90\x17\xa9\x54\x3c\xbe\xbb\xfe\xf8\xa5\x7e\x3a\x0e\xcd\x76\x95\x81\x1a\x5f\xba\x1d\x79\x7b\xdf\xd8\x11\x6f\x56\xa9\xa6\x96\x56\x55\xe5\x28\xac\x7b\xb5\xf2\x5d\x73\xa6\x23\x20\x2f\x91\xa7\x79\xe5\xe9\xa0\xc6\x20\xc3\xc5\x81\x04\xb6\xa0\x0c\xde\xf7\x74\x23\x77\x93\x66\xef\x36\x44\xee\xfb\x55\x2c\x65\xa3\x52\xcf\x7e\xc4\x54\xe5\x00\xf3\x7b\x9b\x95\x34\x59\x08\x4c\xc0\xe7\x11\x0d\xd6\xed\x1e\x36\xe6\x24\xb7\x7d\x96\x2a\x1e\x63\xb5\xed\x2d\xcd\xa6\x74\x45\x85\x4a\x71\x34\xc1\xc1\x92\x32\xf0\x05\x0f\x69\x04\x6d\x5d\xac\x28\xb9\xec\xab\xdb\xf5\x31\x53\x20\x42\x1c\xc0\xce\xbe\x05\x75\x7a\x17\x83\x2b\x46\x83\x56\x73\xb2\x8b\x83\xc6\x0e\x9a\xec\x35\xdb\x67\xbc\x0b\x81\x26\x41\xae\xcc\x02\xc5\x0e\x68\x77\xc0\x77\xc5\x9b\xe5\xfb\xf9\xde\xa6\xf3\xd0\x23\x54\x54\x90\x7d\x51\x57\xa4\xda\x10\xb9\xa7\x96\x8e\xb7\xaf\x6f\xb7\xb4\xb3\xdd\xce\xac\xf9\xea\x3f\xff\xac\xdd\x00\x58\x4e\x21\xd3\x39\x03\xd5\xe3\xee\xf6\x59\xad\xa9\xc5\x40\x4d\x73\x25\xe5\xbd\xf2\x54\x9c\xf6\xcf\x6d\x9f\xce\x6c\x71\xe2\x24\x82\xc6\x58\xe8\xd4\x74\x94\x48\xa1\x0b\xa0\xad\xca\x7c\x3f\x6b\xb6\xb5\x4d\x03\x0e\x97\xbd\xb9\x88\x49\x4c\xd9\x57\x09\xc2\x36\x10\x30\x16\x2d\x63\x80\x80\xc7\x49\xaa\x40\x6c\xaf\xa4\x7e\x72\x27\xe6\xc8\x6b\x58\xa5\xc0\xf4\x1b\x16\xf1\x84\x13\x68\xf9\x76\xb3\xf9\x04\xea\x6c\x01\x4c\xd5\x3b\x8a\x27\xcb\x25\x56\x38\xcb\x50\xbb\xa5\xb4\x4a\x75\x24\x3a\x21\xe4\x44\x94\xa5\x8f\xc6\x55\x60\x1b\x69\x10\x2a\xf5\x89\x7c\x2c\xe5\x37\x2e\xc8\x59\xaa\x96\xc0\x14\xdd\xde\xef\xb9\xc3\xda\x5e\x75\xa4\x5c\xda\xa7\x1f\x45\x37\xfa\x19\xd6\x7d\xa9\x6b\x0f\x62\xe7\x01\xd6\xfa\x34\x39\xcd\x09\x16\x38\x06\x05\x42\x3f\xcd\xe5\xf2\x76\x7a\xe6\x57\x5a\xbb\xbe\xda\x5a\xc6\x6a\xd9\xf6\x92\x94\xcb\xcf\xb0\xf6\xb1\x5a\xf6\xc4\x7d\x37\x86\x67\x07\x4f\x58\xb4\x53\x68\x88\xfe\xc2\xf2\x4a\x53\x3d\x85\x40\x80\xe5\xb2\xeb\x72\x57\x6c\x6c\x63\xcd\xfd\x55\x86\x73\xa9\xab\x03\xba\xeb\x68\x33\x1f\xca\xda\xa7\x37\x29\x68\x8c\x17\x70\x0b\x21\x08\x60\x41\x77\x5d\x67\x54\x18\x82\x68\x43\xe3\x72\xac\x05\x6f\xf4\x9a\xcd\x03\x85\xd7\xe5\xb2\x57\xd2\xaf\xd6\xad\xd2\xf2\x21\xed\x91\x9b\x7e\xfe\x6a\x95\x58\x6d\x47\x2c\x11\x56\x20\x95\x49\x53\x36\xec\xe6\x8e\x8e\xae\x7c\x6e\x83\x46\xed\x4c\xe1\x52\x2f\xd8\xd8\x08\xf2\x72\x60\xa1\xed\xdc\x02\x26\x7f\x0b\xaa\x2c\xc9\x90\x97\x5d\x70\x93\x54\x29\xf3\xa7\xe0\x71\x0e\xff\x80\xe9\x4a\xf1\x1a\x36\xbe\x4d\x93\x92\x4b\xa2\xf1\x74\x4f\xbd\x24\x17\x9c\x29\x4c\x19\x08\x7b\x7a\xd5\xcf\x3a\x51\xf9\x78\xf0\x94\x2e\xe1\xff\xd1\xcd\xe1\x4d\x82\x51\x1a\x58\xbe\x7c\x45\xde\xa8\x7c\xec\x55\xdf\x8e\xc8\xd1\x3c\xe2\xf3\x21\x72\x0b\xff\xda\xaf\xb2\x17\xf4\xe0\x5b\x9f\x0a\xed\xf3\xe0\xd1\x3b\xf0\xad\x4f\x9d\x7e\x7a\x07\xbe\xf5\x79\xd6\x4f\xef\xc0\xb7\x3e\x29\x7b\x0e\x07\xb6\xfc\x37\xb3\x76\x33\xf6\x6f\x36\xb3\xce\x64\xaa\x28\x25\x9b\x23\x31\x9c\xe0\x80\xaa\x75\x6f\xff\xb6\xeb\xa7\x4d\xbb\x7f\x73\xd2\x94\x50\xb4\xa8\x7d\xa7\x0a\x33\x82\x05\x39\xe4\x07\x0c\x17\x45\x93\x79\x6a\x8e\x9e\xa6\x01\xd6\xf5\x7f\xfd\x1b\x94\x93\x7f\x03\x00\x00\xff\xff\x0a\x1e\x86\x82\x19\x26\x00\x00") func swarmagentresourcesvmssTBytes() ([]byte, error) { return bindataRead( @@ -846,7 +867,7 @@ func swarmagentresourcesvmssT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmagentresourcesvmss.t", size: 9671, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmagentresourcesvmss.t", size: 9753, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -866,7 +887,7 @@ func swarmagentvarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmagentvars.t", size: 2255, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmagentvars.t", size: 2255, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -886,12 +907,12 @@ func swarmbaseT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmbase.t", size: 1689, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmbase.t", size: 1689, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swarmmasterresourcesT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x59\x4d\x53\xdb\xbc\x13\xbf\xf3\x29\x3c\xbe\x98\xcc\xa4\x49\xff\x4c\x4f\xbd\x51\x5e\xda\x4c\x09\x64\x30\xe5\x7f\x60\x38\x28\xd2\x9a\x68\xb0\x25\x8f\x24\x07\xf2\x30\x7c\xf7\x67\x64\xd9\x89\x25\xcb\xc1\x29\xe9\x3c\x4c\xb9\xb4\x20\x69\xb5\x2f\xbf\xdd\xfd\x69\x1d\x04\x41\xf0\x72\x10\x94\x3f\x21\xca\xe9\x2d\x08\x49\x39\x0b\xbf\x06\xe1\xdd\x12\x09\x8a\xe6\x29\xc8\xc3\x68\xb3\x12\x2b\x2e\xd0\x03\x44\x83\xfb\x70\x58\x9f\x23\x90\x03\x23\xf2\x4a\x1f\xbb\xab\xfe\x18\x04\xe1\x1d\xe6\x0c\x23\x75\x18\x4d\x29\x16\x5c\xf2\x44\x8d\x2e\x41\x3d\x71\xf1\x38\xce\x8b\x79\x4a\xf1\x64\x76\x4c\x88\x00\x29\x41\x8e\xa3\x61\xd0\xb8\x2f\x43\x52\x81\x98\xd9\xbb\x2e\x51\x06\xd1\x60\x70\x1f\x56\x57\xdc\xaf\x15\x48\x39\x46\xaa\x56\x5b\x80\xe4\x85\xc0\xf0\x5d\xf0\x22\x3f\x1c\x8c\xea\xc5\x86\xc2\x0c\x65\xe0\x9a\x68\xae\xac\xcc\x3b\xc6\x98\x17\x4c\x99\x1b\x1b\x07\x73\xc1\x73\x10\x8a\x82\x0c\xbf\xae\xfd\xa6\x3d\x67\xf6\xdf\xac\xf2\x96\xdc\x65\x16\xd3\x7f\x40\x4e\x51\x1e\x0d\xda\xf7\xdd\x4e\xf5\x6a\x34\xb8\x1f\x49\xeb\x66\x2d\x69\x6d\xe8\xeb\xfa\x7e\x55\x5d\xb0\xf1\x68\xa5\xf0\xd8\x3e\x2e\xcd\xd1\xd7\xe1\xc1\xcb\x0b\x4d\x02\xc6\x55\x30\x9a\x1a\x9f\x0a\x9e\xd0\x14\x46\x13\x79\x52\x48\xc5\xb3\xdb\xcb\xb3\x9b\xd7\xd7\x83\x9d\x71\x70\x0a\x09\x2a\x52\x65\x79\x67\x1f\x61\x58\x52\xa1\x0a\x94\x56\x40\xe9\x1f\x00\x03\x91\x38\x47\x18\xac\x95\xcd\xda\x4c\x40\x42\x9f\xcb\x83\x77\x8d\xe5\x20\x78\x79\xf9\x0e\x4a\xfb\xe1\xd8\xde\x58\xb9\xa5\x02\xdb\xfa\xff\xeb\x68\x04\x41\x28\x8b\x39\x03\xe5\x8a\x5c\x0b\x8c\xcd\x72\x90\xa0\x54\x42\x43\xdc\x7d\x8f\xc0\xd6\xa9\x62\x3b\xa4\x19\x58\x60\xe4\x23\x45\xce\x00\xfa\x78\x89\x68\x8a\xe6\x34\xa5\x6a\x15\x83\xda\x12\xbc\x6d\xc6\x9f\xf0\x2c\x2f\x14\x8c\x91\x2d\x6d\x63\xfd\x07\xb3\xda\x5b\xa9\x7a\xc0\x96\x30\x19\x83\x52\x94\x3d\x48\x17\xb5\x84\x67\x88\x32\x2d\xe9\x02\xcd\x21\xf5\xdf\x7b\xc6\x48\xce\x29\x53\xa7\x97\xb1\xde\x69\x90\x1b\x6d\x4a\xa4\x8d\xd6\x75\xd5\x4d\x6b\xe3\xa6\xa0\x16\x9c\x68\xd9\xa7\x2b\x86\x32\x8a\xfb\x94\x9c\xce\x22\xbe\xdf\xe8\xfc\x45\x5d\xe5\x62\xde\x1b\x11\x73\x84\x1f\x81\x91\xba\x14\x71\x9e\xb6\xaa\x8b\x55\xbc\xb6\xde\xfa\xcd\x08\xd3\x52\x6a\x05\x1a\x87\x1b\xf5\xa8\x01\x92\x44\x70\xa6\x80\x91\xc9\xec\x84\xb3\x84\x3e\x14\xa2\xb4\xf3\x1d\x5a\xd4\x92\x5c\x1f\x6c\xf7\x84\x8b\x59\xe3\x10\xcf\x96\x20\x08\x29\xb1\x62\x34\x21\xbd\xd0\x11\x0d\x77\xc5\x46\xdb\x73\xee\x6f\xbf\x57\xe3\x53\x8e\xc8\x37\x94\x22\x86\x41\xec\x39\x8b\x30\xcf\x57\x36\xc2\x4a\x82\xe0\x8f\xd5\x89\x5e\xb2\x43\xb4\x8e\x6c\x1d\xcd\x0b\xce\xf3\x4b\x4e\xa0\x5d\x29\xba\x12\xd6\x07\x89\xd3\x68\xaf\x19\x57\xd5\x84\xce\xc4\x1b\x06\x91\xae\x05\x51\x1c\xff\xf8\xe4\xab\x09\xb7\xd3\x66\xf9\x1c\x06\xda\x6b\x13\x46\xe0\xf9\x70\xb0\x43\xd2\xce\xb8\xd0\x8e\x3d\x3a\x6a\xb8\x0f\x98\xbe\xe8\x3c\xe5\x48\x57\xf9\xc9\x2c\xfc\x6a\xd8\xc0\xdb\x19\xe7\x36\x84\x0a\xe4\x5b\x12\xcc\xf2\xaa\x5d\xfa\xeb\x3b\x2a\x15\xb5\xc7\x6a\x0b\x8f\x8e\x3e\x7f\xb6\x43\x9e\x0b\xae\x38\xe6\x65\xcf\x51\x38\xdf\xa5\x27\x58\x48\x1e\x53\x36\xe7\x05\x23\x97\x48\x5d\x17\xe9\xbe\xfb\xc3\xde\x90\xcd\x28\xee\x0b\xea\x1d\xd8\x74\x0b\xfb\x4b\x06\xca\x44\xc8\x26\x6f\x6f\x24\xc9\xb0\xdd\xfa\x3a\xf6\x0e\x23\xd7\xe1\x63\x83\xf7\xb7\xe0\x6e\xa3\xfd\xcf\x67\xa5\x9b\x6d\x11\xa3\x58\xa7\xe5\x8e\x59\x47\xf3\xdf\xe9\x50\xf5\xa9\x32\xdc\x3b\xb5\xa2\x26\xb6\xbf\xbd\xd9\xa6\x7d\x4a\xd4\x8a\x93\x37\x8a\x56\x19\xcd\x20\x1a\x7b\xc8\x80\x97\xd2\x78\x3a\x7d\xbb\x69\xb9\x6d\xcb\x6a\xfb\x1e\x13\x27\x4e\xf2\xee\xd9\xbc\xbd\x82\x75\x17\x1b\x73\x41\x97\x48\x41\x93\x52\x74\x2b\x7b\x4e\x85\x54\x7a\xa3\xaf\x37\x50\xb6\xed\xc4\x15\x56\xa0\xbe\x44\x83\xc1\xa0\xc5\x79\x2c\x2d\x3c\x64\x3c\x56\x48\x51\xdc\x3e\x64\x9e\x9b\x5b\x39\x50\xdb\x7d\x0c\x94\x79\x87\x3a\xed\xc1\xe7\xaf\xf7\x53\x19\x66\xfe\x9d\x30\x05\x22\x41\xf8\xc3\x16\xfd\x65\xb6\x3b\x91\xe9\x7e\x79\xb4\xac\xf6\xa6\xe9\x6e\x75\xcf\x7f\x63\xd7\xcb\x78\xec\xc9\x9c\xd6\x5b\xdc\x91\xde\x73\xfa\xd5\x6a\x08\x0a\xe9\xe7\x6a\xf5\x5b\x33\x14\x02\x4a\x20\xc7\x65\x87\x08\x83\x46\x62\x45\x08\x4b\x60\x0f\x94\xc1\x6f\xf0\xaf\x56\x80\xfe\x78\x47\xda\xb1\x13\x39\xc1\xe8\x60\x6e\xfe\xe7\x49\x57\x40\x7b\xc6\xd3\xcb\xf6\x16\x48\x90\x27\x24\xa0\xa2\x27\xae\x3e\x66\x24\xd9\x51\x2e\xea\x81\xa4\x5f\x72\x05\xf4\x0e\xc1\xed\xe4\x6f\xcd\xda\xdc\x92\xd6\xeb\xe9\xd6\x92\x1b\x0d\xdf\xc3\x2d\xdc\x2a\xf8\xf6\x9c\x8f\xcb\x0e\x8b\x11\xc9\x28\xfb\x25\x41\xf8\x1e\xc0\xd6\xa2\xfb\xf2\x0d\xb1\x09\xbc\xd8\x13\x38\x83\x7a\xf0\x68\x98\x69\xfc\x84\x44\x66\x48\xe9\x29\x52\xc8\x9a\x65\x86\x29\x65\xc5\xf3\xb6\xc7\x86\x2e\x82\x54\x6a\x2d\x66\x48\xca\x27\x2e\xc8\x71\xa1\x16\xc0\x14\xdd\x24\x9e\x12\x45\x8b\x40\x49\xb9\xf0\x77\x27\xf3\xf8\xfe\x09\x2b\x3f\x8f\xf0\x41\xa3\x71\xfa\x11\x56\xda\x08\xd7\xbf\x52\x2e\xae\xe3\xe3\x59\x2d\xba\x3d\x5b\xb0\x55\x40\x6a\xe1\x91\xf0\x13\x56\x33\xa4\x16\x9e\xd6\x68\x7e\x5c\x42\xd1\x84\x88\xbb\xfe\x6a\xc5\x82\x26\xc1\xe8\x42\x7b\xba\x7e\x25\xfc\x40\x32\x06\x2c\x40\xd9\xa3\x65\x0b\x15\xd2\x6c\x70\x15\x4d\x1b\x72\x2a\x19\x8e\xc6\xee\x93\xc2\x1a\x53\x9b\xba\xde\x81\x61\x9a\xa1\x07\xb8\x86\x04\x04\xb0\xd6\xf4\x5c\x83\x3f\x49\x40\xb8\x0a\x71\x39\xd1\xc7\xae\xf4\x9a\x6f\xa8\xa3\x83\x22\x17\x9d\xe7\x66\xf5\xba\xe7\xac\x7c\x2c\x3a\x4e\xc5\x3f\x7f\x79\xf6\x2f\xfd\x44\xa2\x3a\x53\x91\x09\x77\xf6\x65\x39\x9d\xcb\x53\x2a\x1f\xdb\x96\x63\x84\x17\x94\x3d\x68\xc9\xd7\x80\xc8\xff\x05\x55\x2d\xc8\x97\x4d\x0f\xae\xf2\x3a\x2d\xce\x05\xcf\xca\x8b\xdd\x8d\xef\xc9\xf3\x61\xf4\x89\x4b\x42\xe5\xa3\xcf\xfc\x05\xf1\xbd\x56\x0a\x41\x9b\xb7\x89\x3a\xbe\x87\x6d\x4e\xd1\xf1\x0d\xc9\xcb\x61\x7c\x14\x61\x60\xed\xf3\x7c\x2b\x1c\x8c\x72\x41\x33\x24\x56\xf5\xbc\x5a\x8e\xe6\x29\x9f\x0f\x83\x68\xb9\x20\xfd\xb8\x52\xd3\x19\x41\xed\x8d\xd1\x72\x41\x5a\x89\xeb\x4f\xc8\xd7\x1e\x1c\xb6\x6e\xc5\xd5\x27\x97\x69\x19\xfd\xbf\x88\xc1\x6e\x67\x94\x8e\xd5\xe3\xb2\x69\xee\xde\x91\xfe\x93\x09\x82\x8d\x8e\x31\xae\x5a\x1b\x98\xdd\xbd\x06\xef\x56\xc5\xda\x78\xe7\x2a\xbe\x39\x39\x7b\x56\xc0\x64\x39\x62\x68\x16\xd5\x8e\x0f\x37\x98\x67\x19\x62\xe4\x86\x9f\x3d\x03\x2e\x54\x07\xcf\x32\xad\x39\xc6\x82\xe6\xaa\x45\x0d\x74\x95\xfe\x25\x68\xd9\x2b\xfd\x84\xa4\x06\x6f\x53\xcc\x39\x17\x65\xbb\x09\x9d\x7d\x3f\x10\x23\x29\x88\x06\x5a\xff\x37\xfa\xd2\x67\xa8\xd7\x85\x0c\xd8\xf8\xc3\xa4\xc6\xc1\xbf\x01\x00\x00\xff\xff\x0d\x33\x0f\x20\x47\x20\x00\x00") +var _swarmmasterresourcesT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xdc\x59\x4f\x53\xdb\xbc\x13\xbe\xf3\x29\x3c\xbe\x18\xcf\xa4\x49\x7f\x99\x9e\xb8\x51\xfe\xb4\x99\x12\xc8\x60\xca\xef\xc0\x70\x50\xa4\x0d\xd6\x60\x4b\x1e\x49\x0e\xe4\x65\xf2\xdd\xdf\x91\xff\x24\x96\x2c\x07\xa7\xd0\xbe\x6d\xb9\xb4\x20\x69\x25\xed\x3e\xfb\xec\xa3\xb5\xe7\x79\xde\xcb\x81\x57\xfc\xf8\x28\xa3\xb7\x20\x24\xe5\xcc\x3f\xf2\xfc\xbb\x25\x12\x14\xcd\x13\x90\x87\xc1\x76\x24\x52\x5c\xa0\x07\x08\xc2\x7b\x7f\x50\xaf\x23\x90\x01\x23\xf2\x4a\x2f\xbb\xab\xfe\xe8\x79\xfe\x1d\xe6\x0c\x23\x75\x18\x4c\x29\x16\x5c\xf2\x85\x1a\x5e\x82\x7a\xe2\xe2\x71\x94\xe5\xf3\x84\xe2\xc9\xec\x98\x10\x01\x52\x82\x1c\x05\x03\xaf\xb1\x5f\x8a\xa4\x02\x31\x33\x67\x5d\xa2\x14\x82\x30\xbc\xf7\xab\x2d\xee\x37\x07\x48\x38\x46\xaa\x3e\xb6\x00\xc9\x73\x81\xe1\x8b\xe0\x79\x76\x18\x0e\xeb\xc1\xc6\x81\x19\x4a\xc1\xbe\x62\xb9\x65\x75\xbd\x63\x8c\x79\xce\x54\xb9\x63\x63\x61\x26\x78\x06\x42\x51\x90\xfe\xd1\xc6\x6f\xda\x73\xe5\xfc\x9b\x55\xd6\xb2\xbb\x4c\x23\xfa\x0f\xc8\x29\xca\x82\xb0\xbd\xdf\xed\x54\x8f\x06\xe1\xfd\x50\x1a\x3b\x6b\x4b\x9b\x8b\xae\x37\xfb\xab\x6a\x83\xad\x47\xab\x03\x8f\xcc\xe5\xb2\x5c\xba\x1e\x1c\xbc\xbc\xd0\x85\xc7\xb8\xf2\x86\xd3\xd2\xa7\x82\x2f\x68\x02\xc3\x89\x3c\xc9\xa5\xe2\xe9\xed\xe5\xd9\xcd\x7a\x7d\xb0\x37\x0e\x4e\x61\x81\xf2\x44\x19\xde\x79\x8f\x30\x2c\xa9\x50\x39\x4a\x2a\xa0\xf4\x0f\x40\x09\x91\x28\x43\x18\x8c\x91\xed\xd8\x4c\xc0\x82\x3e\x17\x0b\xef\x1a\xc3\x9e\xf7\xf2\xf2\x05\x94\xf6\xc3\xb1\x39\xb1\x72\x4b\x05\xb6\xcd\xff\x37\xd1\xf0\x3c\x5f\xe6\x73\x06\xca\x36\xb9\x31\x18\x95\xc3\xde\x02\x25\x12\x1a\xe6\xee\x7b\x04\xb6\x4e\x15\xd3\x21\xcd\xc0\x02\x23\xbf\x53\xe4\x4a\x40\x1f\x2f\x11\x4d\xd0\x9c\x26\x54\xad\x22\x50\x3b\x82\xb7\xeb\xf2\x27\x3c\xcd\x72\x05\x23\x64\x5a\xdb\xde\xfe\x37\xbb\xb5\x93\xa9\x7a\xc0\x96\x30\x19\x81\x52\x94\x3d\x48\x1b\xb5\x84\xa7\x88\x32\x6d\xe9\x02\xcd\x21\x71\xef\x7b\xc6\x48\xc6\x29\x53\xa7\x97\x91\x9e\x59\x22\x37\xd8\x52\xa4\x89\xd6\x0d\xeb\x26\xf5\xe5\xa6\xa0\x62\x4e\xb4\xed\xd3\x15\x43\x29\xc5\x7d\x28\xa7\x93\xc4\xdf\x37\x3a\x7f\x51\x55\xb9\x98\xf7\x46\xc4\x1c\xe1\x47\x60\xa4\xa6\x22\xce\x93\x16\xbb\x18\xe4\xb5\x73\xd7\xcf\xa5\x31\x6d\xa5\x3e\x40\x63\x71\x83\x8f\x1a\x20\x59\x08\xce\x14\x30\x32\x99\x9d\x70\xb6\xa0\x0f\xb9\x28\xee\xf9\x86\x53\xd4\x96\x6c\x1f\xec\xf6\x84\x8d\xd9\xd2\x21\x8e\x29\x9e\xe7\x53\x62\xc4\x68\x42\x7a\xa1\x23\x18\xec\x8b\x8d\xb6\xe7\xec\xdf\x7e\x8c\xe3\x13\x8e\xc8\x67\x94\x20\x86\x41\xbc\x73\x16\x61\x9e\xad\x4c\x84\x15\x02\xc1\x1d\xab\x13\x3d\x64\x86\x68\x13\xd9\x3a\x9a\x17\x9c\x67\x97\x9c\x40\x9b\x29\xba\x12\xd6\x05\x89\xd3\xe0\x5d\x33\xae\xe2\x84\xce\xc4\x1b\x78\x81\xe6\x82\x20\x8a\xbe\x7e\x70\x71\xc2\xed\xb4\x49\x9f\x03\x4f\x7b\x6d\xc2\x08\x3c\x1f\x86\x7b\x24\xed\x8c\x0b\xed\xd8\xf1\xb8\xe1\x3e\x60\x7a\xa3\xf3\x84\x23\xcd\xf2\x93\x99\x7f\x54\xaa\x81\xd7\x33\xce\x2e\x08\x15\xc8\x77\x24\x98\xe1\x55\x93\xfa\xeb\x3d\xaa\x23\x6a\x8f\xd5\x37\x1c\x8f\x3f\x7e\x34\x43\x9e\x09\xae\x38\xe6\x45\xcd\x51\x38\xdb\xa7\x26\x18\x48\x1e\x51\x36\xe7\x39\x23\x97\x48\x5d\xe7\xc9\xaf\xaa\x0f\xff\x21\xdc\x22\x19\x6b\x07\x8f\xc7\x13\xe3\xe2\x26\xb6\x82\x8f\xfb\x14\x82\x0d\xa6\xfe\x04\x54\x8d\xc7\x7f\x1e\x8c\xde\x8d\x20\x19\xc5\x7d\xb9\x71\x8f\x47\x59\x0b\xd3\x4b\x06\xaa\x0c\x89\xf9\x06\x78\x05\xfc\x83\xb6\x82\xea\x0b\xdf\x09\xd9\x80\xd7\xc4\xee\x2b\xb6\x3a\xad\x98\xec\x5a\xdb\xfa\xf9\xe9\x69\xb3\x7c\xc0\x28\xd6\xe5\x60\x4f\xb6\xa7\xd9\x8f\x28\xa3\x7a\x55\x81\x8f\xbd\x24\x50\x33\x19\x3e\xbf\x2a\x0f\x5d\x87\xa8\x0f\x4e\x5e\x29\x96\x1a\x2a\xba\x54\x3a\x44\xa8\x53\x4a\x3b\x14\x66\x5b\x2c\xd9\x72\xc9\x90\x9b\x8e\x2b\x4e\xac\x6c\xef\xa2\x27\x73\x5a\x10\x36\x4a\x5a\x78\x6f\xab\xcc\xc2\xc9\x74\x89\x14\x34\xa5\x64\xb7\x2f\xce\xa9\x90\x4a\x4f\x74\x69\x02\xca\x76\xad\xb8\xc2\x0a\xd4\xa7\x20\x0c\xc3\x96\xd6\x35\x4e\xe1\x78\x84\x45\x0a\x29\x8a\xdb\x8b\xca\x36\xc3\x4e\xed\xdb\x06\x3b\x03\x55\xf6\x1f\x2c\x02\x77\xc5\xe4\xed\x12\x96\x95\xff\x4e\x98\x02\xb1\x40\xf8\xb7\x65\xe9\x65\xba\xbf\x80\xed\x7e\x71\xb6\x6e\xed\x4c\x93\xfd\x78\xc7\xbd\x63\x57\x47\x64\xe4\x78\xc5\xb4\x7a\x30\x96\xf5\x9e\x5d\xcf\x16\x21\x2b\xf4\x20\xfd\xa3\xea\xb7\x66\x28\x04\x14\x40\x8e\x0a\x86\xf6\xbd\x46\x62\x05\x08\x4b\x60\x0f\x94\xc1\x0f\xe8\xee\x56\x80\x7e\x7a\x45\xd8\xb3\x12\x58\xc1\xe8\xd0\x56\xee\x67\x69\x57\x40\x7b\xc6\xd3\xa9\xc7\x62\x24\xc8\x13\x12\x50\xe9\x09\xfb\x3c\x65\x2b\xba\x83\x2e\xea\x46\xb4\xdb\x72\x05\xf4\x0e\xc3\xed\xe4\x6f\xf5\x58\x6d\x4a\xeb\xf5\x64\x6f\xd9\x0d\x06\x6f\xa9\xed\x36\x0b\xbe\xde\xdf\xe5\xb2\xe3\xc6\x88\xa4\x94\x7d\x97\x20\x5c\x8d\x0f\x63\xd0\xee\x78\xf8\xb8\x0c\xbc\x78\x27\x70\x16\xde\xd5\x7a\x72\x78\x25\x70\x0c\x52\x09\xa4\x78\x43\x51\x46\x4f\x48\xa4\x53\x4e\x60\x6d\x52\x7e\xd1\xa4\x2e\xe5\xe7\x66\x4a\xa9\x3e\x4f\x91\x42\xc6\xe4\x97\x17\x30\xfb\xd7\xae\xf5\xdd\x6b\x0d\x89\xaa\xb3\x98\xb2\xfc\x79\xd7\xa3\x44\x53\x31\x95\xda\x17\x33\x24\xe5\x13\x17\xe4\x38\x57\x31\x30\x45\xb7\xe9\xaf\x44\xde\x92\x51\x52\xc6\xee\x1a\x59\xb6\x7e\xbe\xc1\xca\x2d\x96\xbc\x0e\xc1\x54\xad\x7e\x84\x95\xbe\x96\x1d\x65\x29\xe3\xeb\xe8\x78\x56\x9b\x6e\x77\xb6\xcc\x23\x20\x15\x3b\x2c\x7c\x83\xd5\x0c\xa9\xd8\x51\xa0\xcb\x1f\x5b\x3a\x35\x81\x6a\x8f\xaf\x5b\x88\xb8\xd0\x9e\xae\xa1\xf0\x15\xc9\x08\xb0\x00\x65\x7e\xd8\x30\xb0\x29\xcb\x09\xf6\x41\x93\x86\x9d\xca\x86\x75\x62\x3b\xcc\xc6\x47\x92\xb2\xba\x74\x64\x12\x4d\xd1\x03\x5c\xc3\x02\x04\xb0\xd6\xb7\x1b\x9d\x82\x8b\x05\x08\xfb\x40\x5c\x4e\xf4\xb2\x2b\x3d\xe6\x6a\x29\xea\xa0\xc8\xb8\x73\xdd\xac\x1e\x77\xac\x95\x8f\x79\xc7\xaa\xe8\xdb\x77\xc7\xfc\xa5\x5b\xce\x54\x6b\x2a\x49\x63\x77\x5e\x0d\xa7\x73\x79\x4a\xe5\x63\xfb\xe6\x18\xe1\x98\xb2\x07\x6d\xf9\x1a\x10\xf9\xbf\xa0\xaa\x05\xf9\xa2\xf4\xc2\x55\x56\xa7\xc5\xb9\xe0\x69\xb1\xb1\x3d\xf1\x2d\x6c\x33\x08\x3e\x70\x49\xa8\x7c\x74\x5d\x3f\x26\xae\x37\x4b\x2e\x68\x73\x37\x51\xc7\xf7\xb0\xad\x6c\x3a\xbe\x60\x3a\x95\x94\x4b\xa8\x84\xc6\x3c\xc7\x97\xea\x70\x98\x09\x9a\x22\xb1\xaa\xbf\x96\xc8\xe1\x3c\xe1\xf3\x81\x17\x2c\x63\xd2\x4f\xb1\x35\x9d\xe1\xd5\xde\x18\x2e\x63\xd2\x4a\x5c\x77\x42\xae\x7b\x28\xe9\x5a\x10\x54\x1f\xfc\xa6\x45\xf4\xff\x22\x1d\xbd\x5b\xd7\x5a\xb7\x1e\x15\xa5\x7b\xff\xba\xf8\x4b\xda\x7c\xbb\xd1\x31\xc2\x55\x69\x83\x72\x76\xaf\x6e\x9f\xc1\x58\x5b\xef\x5c\x45\x37\x27\x67\xcf\x0a\x98\x2c\x1a\x0d\x4d\x52\xed\xf8\x6c\x88\x79\x9a\x22\x46\x6e\xf8\xd9\x33\xe0\x5c\x75\xa8\xbd\xb2\x58\x47\x58\xd0\x4c\xb5\x04\x8a\x66\xe9\xef\x82\x16\xb5\xd2\x2d\x8b\x6a\xf0\x36\xcd\x9c\x73\x51\x94\x1b\xdf\x9a\xf7\x15\x31\x92\x80\x68\xa0\xf5\x7f\xc3\x4f\x7d\x7a\x81\x5d\xc8\x80\xad\x3f\xca\xd4\x38\xf8\x37\x00\x00\xff\xff\x2a\x06\xa2\xf5\xc5\x22\x00\x00") func swarmmasterresourcesTBytes() ([]byte, error) { return bindataRead( @@ -906,12 +927,12 @@ func swarmmasterresourcesT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmmasterresources.t", size: 8263, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmmasterresources.t", size: 8901, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swarmmastervarsT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x58\x79\x6f\x22\xcb\x11\xff\xdf\x9f\xa2\x33\xf1\xdb\x01\x89\x01\x7c\xec\xee\x5b\xa2\x5d\x89\xc5\xde\x17\xb4\x3e\x88\x67\xed\x28\x01\x14\x35\x33\x05\xf4\xf3\xd0\x3d\xaf\xbb\x07\xec\xe5\xf9\xbb\x47\x35\x07\x73\xe3\xb5\xa3\x28\x51\x14\xff\x51\x32\x53\xbf\x3a\xbb\xaa\xfa\x20\x84\x10\x83\xba\x2b\xc6\x6f\x15\x48\x4e\x57\x60\xf4\x88\x31\xf6\xa9\xa4\x2b\xd0\x20\x55\xc3\xf4\x18\x0f\x1e\xfa\x59\x88\xd9\x9c\x1a\xad\x83\x50\x74\x45\x1f\xee\x2e\xd5\x08\xe4\x48\x08\xcf\xe8\x91\xa3\x6e\xb7\xc8\xb1\xb5\x90\x74\x01\x7d\xc7\x11\x01\xd7\x46\x8f\x1c\x67\x20\x79\x26\xc2\xfb\x0b\x08\x51\xc6\xd8\x65\xeb\xc6\x9a\x4a\x46\x67\x1e\xa8\x86\x99\x33\x65\x36\x5b\x55\xac\xbc\x3a\xb3\x99\x3a\xea\x52\x4d\xf3\xdc\x91\x84\x39\x7b\xb0\x01\x5c\xa3\x47\x3e\xbc\x6f\x91\x08\x48\x7d\x76\x07\x52\x31\xc1\xcf\x60\x4e\x03\x2f\xf4\xe5\xb8\x7b\xf4\xce\xea\x9e\x58\x27\x5d\xa3\x8c\x8b\xd5\xc6\xb8\xb7\x56\xf7\x9d\x75\xf4\xd6\x68\x1d\x6c\xb7\x6c\x4e\xda\x7f\xa6\xea\x92\x72\xba\x00\xf7\x8c\xa9\x7b\xf5\xf4\x54\x23\x9e\x05\xa5\x26\x4f\xad\x93\xae\xe5\x4b\x58\x33\xd8\x84\x2a\x81\xbb\x3b\x15\x98\xa9\x41\xa0\xb4\x58\xd9\x8e\x64\x7e\x94\x35\x47\x70\x87\xea\x86\xd9\x09\x94\xec\xcc\x18\xef\x70\xb1\x0c\x7c\x12\xfe\x3b\xa3\x6a\x49\x2c\x87\x4c\x8c\xf4\x67\x47\xf8\xba\x43\xbf\x07\x12\x3a\x8e\xe0\x9a\x32\x0e\x52\xe1\xbf\x73\xb6\x08\x24\x58\x6a\x43\xe5\xca\x72\xbc\x40\x69\x90\x6d\xb5\x24\x66\x36\xf3\xf1\xf7\x21\x57\x9a\x7a\xde\x68\x57\x36\x66\xb3\x65\x92\x4f\x9f\x48\x67\x4d\x65\xc7\x13\x8b\xc4\x42\x04\xb7\x66\x42\x68\xa5\x25\xf5\xdb\x9e\x58\x90\xe3\x4f\x6f\x8e\xc8\x9b\x89\x41\xde\x64\x2a\x2b\x8c\xee\x26\xe0\x83\x95\x9b\x8b\x4b\x06\xdc\x59\xb9\xbd\x09\x27\x16\x21\xe3\x34\xae\x56\x4d\x24\x2c\x72\x2d\x1b\xc1\x74\xc2\x27\x3c\x34\x45\x4a\xb6\xbe\x30\x0f\x72\xf6\xd0\x0c\xaa\x03\xae\x7b\xe4\xf7\x09\x27\xf1\xdf\x1f\xff\xb0\x33\x9d\x7e\xcc\xe5\xa6\xb4\x3e\x98\x94\x08\xeb\x53\xbd\xec\xfd\xb0\xc3\xb1\x0c\xc8\x15\x53\x58\x31\xaa\x47\x26\x46\xf7\xfd\xe9\xe9\xc4\x88\xe3\xc8\x84\x71\x19\xf6\x42\xae\x15\xeb\x16\x29\x1b\x67\xae\x9b\x10\x3d\x88\x3a\xa8\x45\xcc\x7c\x54\x11\xf7\xee\xf2\x8a\xae\x20\x6a\xa1\x5a\xd0\x17\x26\x95\xee\xbb\xae\xbc\x76\x34\xe8\xd3\x0a\x1c\xcd\x8f\x95\x56\x81\xed\x0b\xa5\x63\xaf\xa3\x0c\xde\xde\x0c\xcb\xa8\x82\xb1\xc4\xa9\x30\x2f\x51\x0f\x5e\xe0\x08\x1b\x49\x31\x67\x1e\x60\x43\xda\xe0\x48\xd0\xbb\x5e\xf4\x32\xec\x98\x65\x90\xde\x41\xb4\xa4\xe3\x03\xb2\xfb\xdb\x6e\x25\xe5\x0b\x20\xe4\x70\x3d\xe4\x2e\x3c\xb4\xc8\xe1\x1a\x47\x04\xe9\x7d\x2c\x18\xc9\x5b\x48\xe5\xd9\x3c\x91\x7d\x7a\x22\x2d\x92\xed\xe7\x0c\xac\xf0\x9b\x10\x43\x89\x40\x3a\x70\x17\xcd\xa3\x32\x9f\x10\x83\xb9\x46\xaf\x62\x70\x7f\x85\xc7\x50\x6a\x78\xb6\xdd\xee\x2c\x63\xcd\x94\x74\x3c\xb5\xca\x66\xc3\xe8\x06\x20\x35\x9b\x33\x87\x6a\x50\x46\x6f\x5c\x42\x25\x59\x39\x74\x92\xa4\x38\x20\xc3\x9c\x44\xd9\x69\xdf\x15\xb5\x94\x22\x4e\x93\xe3\x3c\x97\x9c\xea\x04\x85\xde\x3a\xa9\x89\x5b\xe9\x19\xe4\x87\xf3\x91\xf1\xed\xf6\xe6\x62\xbb\xdd\x79\x51\x99\x28\x42\xca\x3e\xd5\xf9\x3a\x3d\xa8\x93\xcc\x4b\x4c\x5b\x24\x3f\xdc\xa3\xa2\xee\xaf\x29\xf3\xe8\x8c\x79\x4c\x3f\xda\xa0\x6b\x1a\x56\x48\x67\x09\x38\x4e\xb5\x90\x57\x51\x23\x11\xd3\x8a\x34\x58\x34\xaf\xc2\x32\x5b\x24\x23\x8a\x7d\x67\x07\xf3\x5d\xc3\x90\xac\xf5\x41\xbc\x61\x6f\xb7\xed\xcb\xf0\x43\x52\xdd\x21\xe3\xe9\xa9\x80\xae\xdd\x89\xfe\xcb\xb7\x9e\x89\x61\x96\x42\x3f\xe7\xae\x2f\x18\xd7\x67\x57\x76\x3a\xe8\xc2\xa8\xb4\xf0\xc4\x06\x64\x23\x5b\x59\x7b\x64\x2a\xd2\x7a\x31\xfb\x4c\x9d\x7b\xe0\x2e\x1e\x64\xae\x92\x23\xd7\x0b\x97\xd5\x17\xc2\x7b\xc9\x5a\x5e\xcc\x86\x67\xa1\x1d\x09\xd1\x2c\x19\xba\x0d\xf3\x92\x39\x52\x28\x31\xd7\xed\x2b\xd0\x1b\x21\xef\x3b\x9e\xa0\xee\x67\xea\x51\xee\x60\x26\xcb\x53\xf6\x62\x16\x79\x52\xa5\x7f\x34\x08\x57\x2e\xb6\x53\xb7\xaf\xa0\x23\xb8\x44\x9d\xb9\x0c\x77\x55\x37\x91\x0b\x24\xd5\xb8\xb9\x75\xf2\x51\x15\xd5\x3f\x6b\xff\xb5\x19\xf5\x66\x5f\xd0\xa3\x73\xee\xbe\x2c\xaf\xaf\xb7\xf7\x12\x3b\xa3\x60\xe6\x31\x67\x38\xc2\x1d\x0e\x94\x7a\xad\x51\xe6\x5b\x55\xe9\xad\x29\x5d\x14\xdc\xef\x63\xbc\xc1\xe6\xc7\xc3\x50\x0d\x3c\xaa\x14\x73\xf2\x07\xee\x64\xb4\xa9\xdc\xd7\xcf\x54\x41\x0c\x2f\x06\x15\x70\xf6\x5b\x00\xb6\x96\x8c\x2f\x1a\x75\xf5\x54\xe7\x7a\x52\xe7\xbf\x48\x11\xf8\x8d\x66\xdb\x13\x4e\x58\x5f\xcd\x66\x2e\xa0\x72\xb6\xb2\x97\x1b\x34\x90\x0f\x62\x4f\xe2\xf7\xc6\x15\x26\xb3\x6b\xc6\x39\x03\x4f\x41\x7e\xd2\xff\x0b\x56\x2a\xd4\xe3\x3e\x42\xea\xd6\x26\x9c\xd3\x77\x57\xe7\xdf\xf2\x1e\xdc\x71\xd0\x76\x30\xe3\xa0\xe3\x0e\x2e\x4f\xb8\x2c\x64\x4f\x28\x21\xa2\x46\x45\xc4\x34\x4b\x49\x0e\x3f\xbf\xb2\xaa\x4b\x3a\xd7\x69\x10\xfb\xc7\xdd\x9a\x49\x1d\x50\x2f\xfe\x99\x1f\x78\x79\x5e\x75\x6d\x94\x72\x56\x76\x7c\x1d\x67\xab\x65\x76\x54\x88\xc4\x01\x57\xaa\xe2\x34\xfe\xac\x91\xb2\x0b\x2f\xca\x0e\x9a\x7e\xbe\x7f\x4b\x87\x8e\xfc\xb1\x3d\xba\x25\x28\xdf\x63\x3a\xb7\xe7\xcd\x11\x35\x10\x5c\x81\x13\x68\xb6\x06\x5b\x53\x8d\x03\x0a\x23\x6d\x97\xd6\xb7\x70\x15\x08\x75\x3e\x73\x5f\x50\x66\x73\x7c\x32\xad\xd3\x93\xd9\x91\xeb\x26\x43\x59\x5d\x77\x8a\xbe\x3d\x77\x51\x41\xe4\xd1\x0f\x23\x8f\xa7\x55\xf1\x66\xef\x47\xaf\x99\xd3\xf5\xab\x16\xce\xe4\xd2\xf6\x70\x77\x69\xb3\xef\xe5\xb7\x9b\x2c\x33\x2b\x94\x2a\x2c\x89\x64\x6d\xa5\x02\x45\x67\x51\x2c\x3c\x9e\xa5\x08\x35\x5c\xd1\x05\x5c\xcf\xe7\x20\x91\x7b\x3b\x0b\xb8\x0e\x6c\x90\x6b\x90\x45\x50\xb8\x99\xa9\x65\x04\x1c\x50\x2e\x38\x73\xa8\x57\x44\xd9\x5f\x6f\x91\x7f\x74\xda\xee\x9e\xb6\x4f\xad\x8b\x6f\x76\x11\x11\xbf\xa0\x20\xca\xc3\x7b\x85\xde\x01\xaa\x6e\x8e\x08\x73\x99\xc2\x9c\xba\x3b\xa0\x52\xcb\xaf\xf0\x38\xa2\x7a\x99\x3f\xb3\x2e\xc5\x0a\x0a\x27\x91\xe2\x65\x95\x98\x9d\xb6\x52\xcb\x0e\x0d\xf4\x52\x48\xf6\x1d\xdc\x7f\xdc\xc3\xa3\xca\xa6\x4d\xa9\xe5\x8d\xdd\x8f\xf6\xee\xaf\xf0\x58\x4a\x76\x81\x9f\x29\xa3\xea\x31\x1f\x2a\xf8\x37\x6d\x8b\x35\xa6\x23\x49\xbc\xf9\x91\x31\x31\xba\x46\x8b\x18\xef\x90\x38\x48\x18\x12\x81\x24\x40\x72\x84\xe4\x3d\x12\x4c\xb0\xf1\x2b\x12\x1f\xc9\x1a\xc9\x31\x92\x9f\x91\x00\x92\x7b\x24\xbf\x21\xd9\x20\x39\x41\xf2\x01\xc9\x1c\x09\x56\x83\x81\x85\x63\x3c\x20\x39\x45\x42\x91\x2c\x90\x60\xd9\x19\x0a\xc9\x23\x92\xb7\x48\x66\x48\x96\x48\x38\x12\xac\x05\xe3\xbb\x41\xa6\x7b\xa3\x4a\xae\x38\xc6\xd8\x03\xbe\xd0\xcb\xfa\x9d\x36\x91\xc8\x9d\xcd\xd6\xab\x9a\x17\xce\xf4\xf1\xef\xaf\x8c\xbb\x62\x93\x5c\x79\x5b\xc6\x26\xfa\xdd\xdf\xfb\xe6\x5a\x05\xca\x14\x47\x96\x3d\xa2\x4a\x6d\x84\x74\xf7\xea\x48\x40\xc5\xc7\xa2\xd8\xb9\x5c\x3f\xee\x76\xc9\x98\x99\xb4\x70\x59\x6c\xd7\xeb\xcf\x22\xed\xfb\x60\xf7\xa6\x79\x46\x35\x75\x80\xe3\x94\xdb\x30\xbd\xb4\x06\xbb\xab\x5f\x95\x64\x45\x8b\xc7\xeb\xc9\xf8\xc2\x83\xbf\x04\x42\x87\xe9\x33\x0b\xb9\xc9\xde\x46\xfb\x72\x11\xac\x80\xeb\xdc\x83\x97\x79\x48\x93\xcf\xe4\x23\xc9\x77\x7a\x46\x37\x6e\x67\x96\x8d\x93\x2e\x3a\x47\x0d\x47\xa4\xea\x00\x5d\x7a\x7d\xda\x87\x49\x9f\xc3\x6a\x6d\x12\x93\xfc\x89\x94\x57\x3c\x1b\x55\x3a\xbf\xc9\x21\xe3\x7e\xa0\xbf\x30\x0f\x30\x94\x9f\xec\xbf\xd9\xdf\xce\x2f\xcf\x6e\x86\x77\xe7\x3f\x4d\x26\x7d\xbc\xfe\x62\xd2\x27\x93\x48\x1c\xff\x6f\xcf\x18\x47\x13\x87\x22\xd0\x2f\x14\xb5\x41\x07\x7e\xe4\x42\xdb\x57\x47\xa1\x96\xd0\xbe\xad\x25\xd0\x15\xf9\x48\xae\x60\x63\x5d\xcf\x7e\x05\x47\x13\xfb\x51\x69\x58\xb5\x87\xd7\x6d\x34\x11\x23\x52\x77\x5b\xa4\x31\x8e\x79\x97\xc2\x85\x69\xaf\x77\xed\x03\x6f\x66\x3e\xf7\x1d\x07\x94\x9a\xf6\x7a\x37\x40\xdd\x2c\xc3\x5e\x52\x09\xc9\x77\xf4\x41\xc9\x3a\xd3\x91\x59\x04\x82\x6c\x54\x22\x06\x62\xe5\xe3\xb5\x8a\x09\xde\xfe\xe5\xef\xcc\x8f\x24\x1a\xd9\xb8\x5a\x64\x5c\x8d\xcf\xfc\x1f\xc7\x70\x06\x4e\xfc\xad\x19\x7b\xd6\x46\xe3\xdf\xc4\x39\x77\x1b\x4d\xf2\x3b\xb9\x0e\xb4\x85\x31\x34\x32\xe9\x47\xe4\x90\xaf\xc5\x3d\x58\xe7\x0f\x89\xc2\x86\xb9\xed\x3e\x91\xed\xd1\x93\x49\xac\x79\x76\xb1\x5a\x24\x2d\x5f\x94\xdc\x53\x27\xb9\xa2\xf7\xc5\x06\xa4\x5a\x82\xe7\xb5\xe1\x01\x88\x75\xfe\x10\x1e\xdf\x04\x1f\x09\x8f\x39\x8f\xe4\x96\x4b\xdc\xe6\x99\xa3\xc1\x25\x96\x23\x56\x2b\xca\x5d\x32\x31\xf2\x35\xbf\xaf\xc7\x0a\x65\x5d\x5b\xb8\x61\x91\x4f\x0c\xf2\x89\xbc\xb4\xe8\x92\x77\x9b\x9a\x61\xb6\x7b\x5c\x91\x18\xfa\xc9\xc9\xcf\x1f\x0e\x48\xf2\xbc\xd8\x4e\x06\x5e\xdd\x5b\x70\x3e\x8d\xff\x7b\x6f\xc2\x71\x60\xff\x7f\x15\xfe\xa1\x8c\xec\x7d\x17\x2e\x27\xa6\x68\x0e\xcf\x05\xf0\x5a\x83\xa1\xf0\x7f\xe4\x29\x9a\x1c\xe4\x3f\xef\xd8\xff\x0c\x00\x00\xff\xff\x24\xf8\x3e\x1a\x2d\x1e\x00\x00") +var _swarmmastervarsT = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xec\x59\x7b\x6f\x1b\xb9\x11\xff\xdf\x9f\x82\xdd\xfa\xb2\x12\xa0\x95\xe4\x47\x92\x8b\x8a\x04\x70\x64\x27\x11\x12\xdb\xaa\x37\x76\xd1\x5a\x46\x41\xed\x52\x12\xcf\x2b\x72\x8f\xe4\x4a\xb6\x75\xfa\xee\xc5\x70\x1f\xe2\xbe\xe4\xc7\xf5\x52\xb4\xa8\xff\x18\x58\xcb\x99\xf9\xcd\x0c\x87\x43\x0e\x89\x10\x42\x16\xf6\xe7\x94\x5d\x4a\x22\x18\x9e\x13\xab\x87\xac\xeb\x10\x0b\x3c\x27\x8a\x08\xd9\xb0\x03\xca\xa2\xbb\x23\x93\xc5\x6e\xde\x58\xad\x1d\x2d\x3a\xc7\x77\x57\xa7\x72\x48\xc4\x90\xf3\xc0\xea\xa1\xbd\x6e\xb7\x38\xe2\x2a\x2e\xf0\x94\x1c\x79\x1e\x8f\x98\xb2\x7a\x68\xdf\x60\xc9\x0f\x02\xfb\xd1\x94\x68\x2e\xeb\xda\xa7\x8b\xc6\x02\x0b\x8a\xc7\x01\x91\x0d\x3b\x07\x65\x37\x5b\x55\x43\x79\x75\x76\x73\x63\xa8\x8f\x15\xce\x8f\x0e\x05\x99\xd0\x3b\x97\x10\xdf\xea\xa1\x77\x6f\x5b\x28\x66\xc4\x21\xbd\x22\x42\x52\xce\x8e\xc9\x04\x47\x81\xb6\x65\xbf\xbb\xf7\xc6\xe9\x1e\x38\x07\x5d\xab\xcc\x97\xa8\x4d\xf8\x5e\x3b\xdd\x37\xce\xde\x6b\xab\xb5\xb3\x5a\xd1\x09\x6a\x7f\xc1\xf2\x14\x33\x3c\x25\xfe\x31\x95\xb7\x72\xbd\xae\x11\x37\x99\x36\x90\x87\xce\x41\xd7\x09\x05\x59\x50\xb2\xd4\x2a\x09\xf3\xd7\xeb\x44\xf5\xb9\xf0\x66\x44\x2a\x81\x15\x17\x43\xc1\x27\x34\x20\xed\x81\x74\x97\x58\xcc\x4f\xb9\x4f\x52\x28\x8f\xb3\x09\x9d\x46\x82\xf4\x83\x48\x2a\x22\x5c\x4f\xd0\x50\x7d\xa2\x81\x36\x39\x1b\x75\x24\x08\xce\xb9\x4f\x1c\x2f\x66\x6c\xcb\x59\x8c\x19\xc8\x97\x29\x2b\x29\xd2\xc6\xc7\xfe\xc3\x34\xf7\x23\xa9\xf8\x3c\x56\xa1\xa7\xdc\xe3\xcc\xc3\xaa\x61\x77\x22\x29\x3a\x63\xca\x3a\x8c\xcf\xa2\x10\xe9\x7f\xc7\x58\xce\x90\xe3\xa1\x91\xb5\xf9\xd9\xe1\xa1\xea\xe0\x87\x48\x90\x8e\xc7\x99\xc2\x94\x11\x21\x3b\xb6\x99\x1b\xf5\x06\xdb\xcd\x16\xb2\x51\x9e\x39\xe6\x19\x30\xa9\x70\x10\x0c\xb3\x55\x60\x37\x5b\x36\xfa\xf0\x01\x75\x16\x58\x74\x02\x3e\x4d\x31\x63\x76\x67\xcc\xb9\x82\x79\x08\xdb\x01\x9f\xa2\xfd\x0f\xaf\xf6\xd0\xab\x91\x85\x5e\x19\x0b\x45\xfb\x7b\x11\xb1\xfe\xdc\xcf\x79\x2a\x22\xe6\xcd\xfd\xde\x88\x21\x07\xa1\xeb\x8d\xa7\xad\x1a\xdf\x68\x6c\x9a\x11\x59\x74\x33\x62\x23\xa6\xa1\x50\x09\x2b\x9d\x98\x0c\x0f\x60\x40\x1d\x61\xaa\x87\x7e\x1b\x31\x94\xfc\xfd\xf9\x4f\x19\xf4\xe6\xa3\xdd\xb2\x65\xe4\x73\x34\xbf\xf5\xa9\x40\x4e\x58\xf0\xdf\x64\x34\x82\x58\x9a\x5a\x88\x5e\xcc\x1b\x62\x35\xeb\x3d\xd9\xb3\x44\x86\x88\x39\x95\xb0\x52\x64\x0f\x8d\xac\xee\xdb\xc3\xc3\x91\x95\x38\x6c\xf8\x7b\xaa\x6b\x40\xae\x04\xd5\xcd\xa6\x19\x90\x5c\x15\x01\xee\x7e\x5c\x39\x4a\xa9\x11\x8f\x5e\x9d\x9e\xe1\x39\x89\x4b\x47\x2d\xd3\x27\x2a\xa4\x3a\xf2\x7d\x71\xee\x29\xa2\x0e\x2b\xf8\x70\xbe\x9c\xb6\x0a\xc3\x21\x97\x2a\xb1\x3a\x8e\xe0\xe5\xc5\xa0\xcc\x55\x00\x4b\x8d\xd2\x71\x89\x0b\xc4\x37\x28\xdd\x69\x65\xf8\x82\xa5\x4b\x3c\x41\x54\x56\x83\x02\x63\x38\x19\xb2\x50\x6f\x27\x9e\xd2\xeb\x1d\x94\xfd\xad\x56\x02\xb3\x29\x41\x68\x77\x31\x60\x3e\xb9\x6b\xa1\xdd\x05\x94\x46\xd4\x7b\x5f\x00\xc9\x23\x6c\xe4\xe9\x24\x95\x5d\xaf\x51\x0b\x99\xa5\xc0\x60\x2b\xfc\x46\xc8\x92\x3c\x12\x1e\xb9\x8a\xeb\x70\x79\x1c\x21\x8b\xfa\x56\xaf\x62\xc3\xfa\x4a\xee\xb5\xd4\xe0\x78\xb5\xca\x90\x21\x67\x4a\x3a\xd6\xad\x32\xac\xf6\xae\x4f\x84\xa2\x13\xea\x61\x45\xa4\xd5\xbb\x2e\x71\xa5\x51\xd9\xf5\xd2\xa0\x78\x44\xe8\x98\xc4\xd1\x69\x5f\x15\xb5\x94\x3c\xde\x04\xc7\x7b\x2c\x38\xd5\x01\xd2\xd6\x7a\x1b\x88\x4b\x11\x58\xe8\xc9\xf1\x30\x6c\xbb\xbc\xf8\xb6\x5a\x65\x56\x54\x06\x0a\xa1\xb2\x4d\x75\xb6\xde\xec\xd4\x49\xe6\x25\x6e\x5a\x28\xbf\x2f\xc4\x49\x7d\xb4\xc0\x34\xc0\x63\x1a\x50\x75\xef\x12\x55\xb3\x60\xb9\xb1\xff\x9d\xc5\x0b\x09\xd9\x4e\xac\xc1\xc1\x79\x15\x8e\xdd\x42\x86\x28\xac\x3b\x37\x9a\x64\x0b\x06\xc5\x2b\x06\x7d\x26\xaa\x1f\x60\x29\xa9\x67\xee\xa0\x46\x65\x28\x1d\x8f\x72\x55\xe3\xa6\xb4\x5f\xe6\x45\x57\xab\xf6\xa9\xfe\x90\xae\x17\x3d\xb0\x5e\x6f\xa2\x80\x72\x62\xb5\xfb\xe3\x7f\xdd\x86\x38\xb2\xcc\x1d\x2a\x76\xef\x84\xf9\x21\xa7\x4c\x1d\x9f\xb9\x9b\xaa\xaa\xfd\x54\x3c\xe0\x4b\x22\x1a\xe5\x40\x57\xca\xa4\x73\x68\xe8\xfe\x36\xfe\x88\xbd\x5b\xc2\x7c\x38\x2d\x9e\xa5\xe7\xda\x67\xe6\x50\xc8\x79\xf0\x68\xe2\xe4\x40\x07\xc7\x1a\x47\x90\xb8\x70\x0d\xfc\x86\x7d\x4a\x3d\xc1\x25\x9f\xa8\xf6\x19\x51\x4b\x2e\x6e\x3b\x01\xc7\xfe\x47\x1c\x60\xe6\x41\x24\xcb\x25\xfd\xdb\x38\xb6\xa4\x4a\xff\xb0\xaf\xa7\x2f\xc1\xa9\xdb\xc4\xc0\x10\x98\xa2\xce\x44\xe8\xbd\xde\x4f\xe5\x22\x81\x15\xec\xa4\x9d\xbc\x57\x45\xf5\x8f\xe2\xbf\x34\xa2\xc1\xf8\x13\x58\x74\xc2\xfc\xe7\xc5\xf5\xe5\x78\xcf\xc1\x19\x46\xe3\x80\x7a\x83\x21\x6c\xa7\x44\xca\x97\x82\xd2\xd0\xa9\x0a\x6f\x4d\xea\x82\xe0\x76\x1b\x93\xdd\x3c\x5f\x39\x06\x32\x29\x54\xf9\xae\x26\xad\x3b\x32\xf7\xf5\x23\x96\x24\x61\x2f\x3a\x15\x31\xfa\x6b\x44\x5c\x25\x28\x9b\x36\xea\xf2\xa9\xce\xf4\x34\xcf\x3f\x0b\x1e\x85\x8d\x66\x3b\xe0\x9e\xce\xaf\x66\x33\xe7\x50\x39\x5a\x66\x07\xa9\x8b\x50\xce\xdc\x2d\x81\xdf\xea\x97\x0e\x66\xb7\xbe\x0c\xff\x0e\x94\x0a\xf5\x71\xb9\xae\x99\x1b\x5d\xb9\xaf\xce\x4e\xbe\xe7\x2d\xb8\x62\x44\xb9\xd1\x98\x11\x95\xac\xe0\x72\x85\x33\x59\xb6\xb8\xa2\x39\x6a\x54\xc4\x83\x76\x29\xc8\xfa\xf3\x0b\xb3\xba\xa4\x73\xb1\x71\x62\x7b\xb9\x5b\x50\xa1\x22\x1c\x24\x3f\xf3\x05\x2f\x3f\x56\x9d\x1b\xa5\x98\x95\x0d\x5f\x24\xd1\x6a\xd9\x1d\xa9\x39\x0b\x7b\x5e\xd1\x7f\x13\xa4\x6c\xc2\xb3\xa2\x03\xd0\x8f\xaf\xdf\xd2\x09\x27\xdf\x23\xc4\x2d\x89\x0c\x03\xaa\x72\x7b\xde\x04\xb8\xfa\x9c\x49\xe2\x45\x8a\x2e\x88\xab\xb0\x82\x02\x05\x9e\xb6\x4b\xf3\x5b\xe8\x3b\xb4\xce\x47\x9a\x13\x69\x37\xaf\x0f\x6e\xea\xf4\x18\x3b\x72\x5d\x65\x28\xab\xeb\xde\x80\x6d\x8f\x75\x45\xc0\xb9\xf7\x64\xce\xfd\x9b\x2a\x7f\xcd\x66\xec\x25\x75\xba\x7e\xd6\x74\x4d\x2e\x6d\x0f\x57\xa7\x2e\x7d\x28\x5f\x90\x99\x83\xa6\xd0\x46\x61\x49\xc4\xc4\x2a\xa2\xb8\x72\x36\x60\x63\x1e\x31\xff\x0c\xab\x8b\x28\x20\x03\xff\x09\xf3\x90\xed\xf8\x34\x27\x2b\x3b\xae\xfb\xc5\x79\xb4\x91\x2d\x55\x0a\x39\x1b\x72\xa1\xf6\xf7\xf3\x96\x3c\x1a\xee\xfc\xf9\xa5\x65\x03\x7a\xac\xe8\xdf\x66\xc3\xef\x8e\xc6\xb3\xed\x31\x4e\x3f\x79\x6d\x9b\xa6\x70\xd3\x1c\x9a\x2d\x9a\xee\x4d\xb7\x58\x59\x3b\xd3\x60\x7a\x37\xd7\x83\x19\x4d\xea\x33\x11\xb6\xc5\xb0\x02\x27\xeb\xcb\xfe\x38\xcf\xf6\x7e\x38\xe2\xfe\x0f\x47\x3c\xf8\xe1\x88\x87\xd5\x88\x3b\x06\xae\x55\xac\x86\x80\xa6\x2f\x6a\xb3\x12\xc4\xe5\x60\x8e\xa7\xe4\x7c\x32\x21\x02\x46\x2f\xc7\x11\x53\x91\x4b\xc4\x82\x88\x22\x93\x3e\x2d\xcb\x59\xcc\xd8\xc7\x8c\x33\xea\xe1\x20\xeb\xa5\x9f\x7a\x3d\x9d\x68\x73\xbf\x5e\x82\x9e\xbd\x37\xed\xee\x61\xbb\xeb\x7c\xfb\xee\xc6\x9a\xcc\xa3\x4f\x81\xf5\x10\x58\x0f\x0d\xd6\xcd\x26\x9b\x70\x26\x57\xec\xc0\x1d\x60\x45\xa4\xca\x7c\xa8\xba\x62\x03\x36\x9f\x4a\x88\xb9\x9f\x31\x4a\x39\xfb\x4a\xee\x87\x58\xcd\xf2\x1d\xf8\x8c\xcf\x49\xa1\x8b\x2a\xde\xea\x21\xbb\xd3\x96\x72\xd6\xc1\x91\x9a\x71\x41\x1f\x88\xff\xcf\x5b\x72\x2f\xcd\x92\x2f\xe5\xec\xc2\x3d\x8a\xfb\x8e\xaf\xe4\xbe\xb4\x51\x14\xc6\x8d\x2d\xb0\xfa\x88\xaa\x15\xfc\x41\x47\xfa\x1a\xe8\x58\x12\xaa\x21\xba\x46\x56\xd7\x6a\x21\xeb\x0d\x10\x0f\x08\x05\xc2\x81\x44\x40\xf6\x80\xbc\x05\x02\x01\xb6\x7e\x01\x12\x02\x59\x00\xd9\x07\xf2\x33\x10\x02\xe4\x16\xc8\xaf\x40\x96\x40\x0e\x80\xbc\x03\x32\x01\x02\x89\x66\x41\x4e\x5a\x77\x40\x0e\x81\x60\x20\x53\x20\x90\xd1\x96\x04\x72\x0f\xe4\x35\x90\x31\x90\x19\x10\x06\x04\x72\xc1\x7a\xb0\xb2\xc5\x51\xed\xd5\xe6\xd2\x27\x20\x6c\xaa\x66\xf5\x5d\x42\x2a\x91\xeb\x2b\x17\xf3\x9a\x27\xb0\xcd\xeb\xd0\xdf\x28\xf3\xf9\x32\xbd\x1b\x6c\x59\xcb\xf8\xf7\xd1\xd6\x47\xb9\x2a\x26\x23\x39\xcc\xe1\x21\x96\x72\xc9\x85\xbf\x55\x47\xca\x54\xbc\x55\x4f\x8c\xcb\x2d\xf5\xec\x84\x9f\x0c\xa6\xd5\xa1\x2c\x96\x95\x91\x47\x39\xdd\xdb\x28\x7b\xf4\x3a\xc6\x0a\x7b\x84\xc1\x09\x6d\x49\xd5\xcc\xe9\x67\x17\x59\x55\x92\x15\x4b\x3c\x99\x4f\xca\xa6\x01\xf9\x6b\xc4\x95\x0e\x9f\x5d\x88\x8d\x79\xb7\x76\x24\xa6\xd1\x9c\x30\x95\x7b\x19\xb0\x77\x71\xfa\x19\xbd\x47\xf9\x95\x6e\xe8\x86\xda\xeb\xc4\x45\x4d\xaf\xab\xc1\x10\x55\x35\xff\xa5\x6b\xfa\x6d\x3c\x9b\x77\x83\x5a\x4c\x64\xa3\xbf\xa0\xf2\x8c\x9b\x5e\x6d\xce\x9e\x68\x97\xb2\x30\xd2\x77\x7c\xe0\xca\x4f\xee\xdf\xdd\xef\x27\xa7\xc7\x17\x83\xab\x93\x9f\x46\xa3\xa3\x87\x48\x10\x08\xfa\x68\x14\x8b\xc3\xff\xed\x31\x65\x00\xb1\xcb\x23\xf5\x4c\x51\x97\xa8\x28\x8c\x4d\x68\x87\x72\x4f\x6b\xd1\xf8\xae\x12\x04\xcf\xd1\x7b\x74\x46\x96\xce\xf9\xf8\x17\xe2\x29\xe4\xde\x4b\x45\xe6\xed\xc1\x79\x1b\x20\x12\x8e\x8d\xb9\x2d\xd4\xb8\x4e\xc6\x60\xcf\xb8\xe9\xf5\xce\x43\xc2\x9a\xc6\xe7\x23\xcf\x23\x52\xde\xf4\x7a\x17\x04\xfb\xe6\x80\x3b\xc3\x82\xa4\xdf\xc1\x06\x29\xea\xa0\x63\x58\x60\x24\xa2\x51\xc9\xd1\xe7\xf3\x50\x10\xfd\x0a\xd5\xfe\xfc\x0f\x1a\xc6\x12\x0d\xd3\xaf\x16\xba\xae\xe6\x37\xfe\x4f\x7c\x38\x26\x5e\xf2\xad\x99\x58\xd6\x06\xf0\xef\xfc\x84\xf9\x8d\x26\xfa\x0d\x9d\x47\xca\x01\x1f\x1a\x46\xf8\x81\x73\xc0\x16\xfc\x96\x38\x27\x77\xa9\xc2\x86\xbd\xea\xae\xd1\x6a\x6f\x6d\x23\x67\x62\x4e\x56\x0b\x6d\xd2\x17\x24\xb7\xe4\x49\x2e\xe9\x43\xbe\x24\x42\xce\x48\x10\xb4\xc9\x1d\x41\xce\xc9\x9d\x6e\x3d\x39\x1b\xf2\x80\x7a\xf7\xe8\x92\x09\xd8\xd3\xa9\xa7\x88\x8f\x1c\x8f\xcf\xe7\x98\xf9\x68\x64\xe5\x73\x7e\xdb\x1a\x2b\xa4\x75\x6d\xe2\xea\x24\x1f\x59\xe8\x03\x7a\x6e\xd2\xa5\x77\xce\x35\xc5\x2c\xbb\x18\x16\xe0\xfa\xc1\xc1\xcf\xef\x34\x4f\x5c\x90\xd3\x82\x57\xf7\x68\x96\x0f\xe3\xff\xde\xe3\x59\xe2\xd8\xff\x9f\xcf\x9e\x14\x91\xad\x0f\x68\xe5\xc0\x14\xe1\xe0\x5c\x40\x5e\x0a\xa8\x85\xff\x23\x6f\x76\x68\x27\xff\x39\x1b\xfe\x57\x00\x00\x00\xff\xff\x9d\xea\x00\x2a\x4e\x24\x00\x00") func swarmmastervarsTBytes() ([]byte, error) { return bindataRead( @@ -926,7 +947,7 @@ func swarmmastervarsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmmastervars.t", size: 7725, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmmastervars.t", size: 9294, mode: os.FileMode(493), modTime: time.Unix(1485311335, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -946,7 +967,7 @@ func swarmwinagentresourcesvmasT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmwinagentresourcesvmas.t", size: 11345, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmwinagentresourcesvmas.t", size: 11345, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -966,7 +987,7 @@ func swarmwinagentresourcesvmssT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "swarmwinagentresourcesvmss.t", size: 10877, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "swarmwinagentresourcesvmss.t", size: 10877, mode: os.FileMode(493), modTime: time.Unix(1484330403, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -986,7 +1007,7 @@ func windowsparamsT() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "windowsparams.t", size: 369, mode: os.FileMode(438), modTime: time.Unix(1485278522, 0)} + info := bindataFileInfo{name: "windowsparams.t", size: 369, mode: os.FileMode(493), modTime: time.Unix(1478024473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1048,6 +1069,7 @@ var _bindata = map[string]func() (*asset, error){ "agentparams.t": agentparamsT, "classicparams.t": classicparamsT, "configure-swarm-cluster.sh": configureSwarmClusterSh, + "configure-swarmmode-cluster.sh": configureSwarmmodeClusterSh, "dcosagentresourcesvmas.t": dcosagentresourcesvmasT, "dcosagentresourcesvmss.t": dcosagentresourcesvmssT, "dcosagentvars.t": dcosagentvarsT, @@ -1134,6 +1156,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "agentparams.t": &bintree{agentparamsT, map[string]*bintree{}}, "classicparams.t": &bintree{classicparamsT, map[string]*bintree{}}, "configure-swarm-cluster.sh": &bintree{configureSwarmClusterSh, map[string]*bintree{}}, + "configure-swarmmode-cluster.sh": &bintree{configureSwarmmodeClusterSh, map[string]*bintree{}}, "dcosagentresourcesvmas.t": &bintree{dcosagentresourcesvmasT, map[string]*bintree{}}, "dcosagentresourcesvmss.t": &bintree{dcosagentresourcesvmssT, map[string]*bintree{}}, "dcosagentvars.t": &bintree{dcosagentvarsT, map[string]*bintree{}}, diff --git a/pkg/acsengine/testdata/classic/swarm_expected.json b/pkg/acsengine/testdata/classic/swarm_expected.json index f035b8a16..1a5381b93 100644 --- a/pkg/acsengine/testdata/classic/swarm_expected.json +++ b/pkg/acsengine/testdata/classic/swarm_expected.json @@ -526,10 +526,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentpool1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", "agentpool1Count": "[parameters('agentpool1Count')]", "agentpool1EndpointDNSNamePrefix": "[tolower(parameters('agentpool1EndpointDNSNamePrefix'))]", @@ -558,10 +558,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -570,8 +571,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseClassicName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1077,7 +1111,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+jl+xR3POdhKKkpJcW2WUjuMojadnSyPZ106juwgiIRE1CfAAULbr03/v4IUUqRdfrpPM1DcXkcsFdvE8i90Fjr4L55SFcywThCRRENwjRKKEgycVFoqyJcg7LDKI0kIqIiDibEGXhcCKcuahGCuCcgn4HqHJP87Gl59/GownF8OrvmfG9TqtTqvtoffD878Pxp/Ph5ej4WSwUeq0fmh1PXRU/0NHMMICZ0QRIbc+ocuzyfVgfD68ubru+4+dtROMxoMPF//s+4/dUvLhYjy5Pnv/ftz3H1+u0dm/bsaDm8lAv75ao9Fwcn1xNbk++/HHyfn4YnR9M77o+4+v1+jd2WQwuXl3NdDz/7BGP11enV0O+rOES8VwRmZacnP5bjDuzwxSvtWA30CSGI5l2Hr26Zd28JefpyefzM/z6ekzP5x2wmM91nl6YOz0pBp9+swNL8c6Yi6xIeKcF0z1wK8B4jU1RoIs6H2lYg1v6XygQio4i2NR6VXAlaqrTK+7VzpbiksY7Afz+ALK9Rlh0+IG2B74m5fyc0VQD/zq2UNN/qsAOedZxhl8KFikA1HuVUOEyUKQs/8UglwRdcfF7ckpekQAR2A/gUoIaGZBLxGoBEEkT1d4nhIE5svYCMhHglOVPPQ7CGDBBVCgDB47rVan216/gZgjADugxMkI6AI+gf9XCMiv0IafjUwlhJkH7UcZVpBgCXNCGCx4wWK9zxRlBXGKezxpu08WvuZC7CqI9JzOXBB8a54X1PzIlJAc9GJizrQR6+iuGQgYcZ5XfluLG2sxJxIYV6XZF4Dn3CYPyqTCaWr9IPdUGZsLirZJYJYf0P9IBOX7E7BvUL9b6sw1DGOyClmRppAolfdCndqWrYhnX5WJLcd2WShXQiUkVun3WGhv09C0cZiCLXOaAmfyEAV0YRO4fckBb4jpIufX7uagOUSYlfR+ETtbm8IAG9D/dya+BRERZrW9YUCPY0Gk/N85Wu/JbOjj0NW7WQ3wGUJUZjbXu9xnVuY1iwL0++BtMnZziYKoQjDQ+JJUkrqsU/pDF1DZeVMOLbExiMQmvWKwSh7SOYBKvCRMbRzbnaNhatt8u2HezPW0dQZGyVqPOJNFKpVw9u07FkvZ97x6RM+kiVT/5KRWbIPO6ekM3piIMT7Zb8Pz68F1f0buc7FTUOE5+HRmlC9GhirPf9xUwrX/WJtj7aHNbvGqEuuZbeO1vd2NU/fff9y8rYM550oqgfOA3OckUo2uAbz6Rthvzqd/yB6OV0QoKgn4dqHORsXfU4MFUeIh+DenbGu08dBtT9s9bYahdcmnmdI/qcg9df1g+0nIK47W+1sO23WUe1iSdKED4/3V5JCy62r8cldW3ZPu9YqYgyIEAgwhUVGoN6zctYuO4MImBnjPo1sidjWcGaemUwm2idI06fo9NiM9hFyOsTO5kG8m7fZ2SQ2UoETCKwgcKxFnTJBFobvVILjDVBl5v/Magl+HgSm8sheGS6Ja1rCuv3rJyVdN/XbVdill8iQxyCKKiJSLIk2/vOiukaK696vDgwxFhSQi4zEE+G8OxlprujfnHMFEH5scXYaLlEpFGHAGve7LP72GE8YBFyp5AfNCaehXjKjTMqSP3UFpOLqe9L3gIxSM3vfCMFxhEYqChQ5VyaNbCD5Cu2X+s1MHgTulBVJxQfp2D/TC8Nhv7IHen1+32zXtarv2q3A1Ex57x/uiNSYLXKTKuWJS6U4UOrginuVcEq8ZfOdW+q1jkKqkmOv4c56GzptQkJRgSWQY8zuWchyH/v7zqRsYuIHBrLBlVc6qx2wGbyEspAhTHuHUHKebo75B4DcNfIsN4ChCUaI3wPP731mi3S+SiBWNSEm+IOYOoTyGNRJPrcfEqhyw6dOMa1p2sMN8uYkTY7ucgi34VwW86UZ7b/7ZaS/rHuUSAvxHDwANq4fbzo0DtY7Ta/aILqEdqFOH/tBRVUR0ZFAFokiJLDkFXZNywXWwkb2H76fm3t8tZrcxFRDkEMZY4dAmr6qPc7lMI5ThJenB1MsFXwpaZE516pkeLsswi3sQ6GAkAgLT+5X3LPWOASDnQsmewTOAqaezokmNU28je6llL7dlHS3r7JOFRZw35V0t7+6Tbeu+0rZeOVsrnhYZqblXh6VnXoyeY0QDgtM7/CCnHrJXb3Ws/MblXBOqDDO8JCa/5imNzM0eBPUmrlEVIAhiKiO+IuIh4LmC21UrxyrpuyyrAZdQ1Z49pWcXej2vmdx4llJ2W/tYo3cXFFOQjOFe7fkgMp7O1jxXIdZHJ42mwpQRIbcyWushS3X/nRcyiQ+MqJJUlYiLHILYrC6Pa5Gb5SlROjuXV6ouNdibVc7MQbtxLjp8mvqIV+ZSViZlZ6G4QRO63W4XsIQ7kqb6t9vVILjEHAMEFDwZ/jKyun7oHqZsVI4OO56t8FIm+v/4szuIOp8+gb/v3hS+64MXU4nnKYn1OaHhcFljKVu+MA3RLY1u9RL4YgG5uV1wPa6MBM2Vdrq6lIYgAq/RB3TbX9wI7Hf2N2A8KfKajbdvwbRXKV+WJLvGaHNu0o46P1spX0L37fcd+N6rNT9VNgSsgLAY+KJakb0gN3fl2zExeep23WmXSVc+SEUyTXgJGWYPIEiGKTNBwRfqDgvdbu3pTWVSKE0GBAIYv0PuMHYEGjnoQEZZoYievbRnI3CHj/pEJQj/DQAA//+jrsjfSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1179,7 +1213,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool2VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1338,6 +1372,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1347,7 +1399,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1361,11 +1414,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1407,7 +1456,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-managed/swarm-vmas_expected.json b/pkg/acsengine/testdata/disks-managed/swarm-vmas_expected.json index 13a452717..ad65b8e75 100644 --- a/pkg/acsengine/testdata/disks-managed/swarm-vmas_expected.json +++ b/pkg/acsengine/testdata/disks-managed/swarm-vmas_expected.json @@ -547,18 +547,19 @@ "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", "agent1publicVMSize": "[parameters('agent1publicVMSize')]", "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "apiVersionStorageManagedDisks": "2016-04-30-preview", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -567,8 +568,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -946,7 +980,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1197,7 +1231,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1345,6 +1379,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1354,7 +1406,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1368,11 +1421,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1414,7 +1463,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-managed/swarm-vmss_expected.json b/pkg/acsengine/testdata/disks-managed/swarm-vmss_expected.json index ae513242a..c46f1b986 100644 --- a/pkg/acsengine/testdata/disks-managed/swarm-vmss_expected.json +++ b/pkg/acsengine/testdata/disks-managed/swarm-vmss_expected.json @@ -547,18 +547,19 @@ "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", "agent1publicVMSize": "[parameters('agent1publicVMSize')]", "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "apiVersionStorageManagedDisks": "2016-04-30-preview", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -567,8 +568,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -916,7 +950,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agent128VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1147,7 +1181,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agent1publicVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1305,6 +1339,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1314,7 +1366,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1328,11 +1381,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1374,7 +1423,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-managed/swarm-windows-vmas_expected.json b/pkg/acsengine/testdata/disks-managed/swarm-windows-vmas_expected.json index 1669f27ab..0b24e823f 100644 --- a/pkg/acsengine/testdata/disks-managed/swarm-windows-vmas_expected.json +++ b/pkg/acsengine/testdata/disks-managed/swarm-windows-vmas_expected.json @@ -561,10 +561,10 @@ "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", "agent1publicWindowsRDPEndRangeStop": "[add(variables('agent1publicWindowsRDPNatRangeStart'), add(variables('agent1publicCount'),variables('agent1publicCount')))]", "agent1publicWindowsRDPNatRangeStart": 3389, - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -574,10 +574,11 @@ "apiVersionStorage": "2015-06-15", "apiVersionStorageManagedDisks": "2016-04-30-preview", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -586,8 +587,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1412,6 +1446,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1421,7 +1473,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1435,11 +1488,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1481,7 +1530,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-managed/swarm-windows-vmss_expected.json b/pkg/acsengine/testdata/disks-managed/swarm-windows-vmss_expected.json index 9a10ae6af..fa621ee77 100644 --- a/pkg/acsengine/testdata/disks-managed/swarm-windows-vmss_expected.json +++ b/pkg/acsengine/testdata/disks-managed/swarm-windows-vmss_expected.json @@ -561,10 +561,10 @@ "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", "agent1publicWindowsRDPEndRangeStop": "[add(variables('agent1publicWindowsRDPNatRangeStart'), add(variables('agent1publicCount'),variables('agent1publicCount')))]", "agent1publicWindowsRDPNatRangeStart": 3389, - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -574,10 +574,11 @@ "apiVersionStorage": "2015-06-15", "apiVersionStorageManagedDisks": "2016-04-30-preview", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -586,8 +587,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1332,6 +1366,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1341,7 +1393,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1355,11 +1408,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1401,7 +1450,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmas.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas.json new file mode 100644 index 000000000..9ef870915 --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas.json @@ -0,0 +1,47 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agent128", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "ManagedDisks", + "diskSizesGB": [128, 128, 128, 128] + }, + { + "name": "agent1public", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agent1public", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "ManagedDisks", + "diskSizesGB": [1], + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected.json new file mode 100644 index 000000000..3322a46dc --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected.json @@ -0,0 +1,1534 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agent128Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent128Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent128'." + }, + "type": "string" + }, + "agent128VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agent1publicCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent1publicEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agent1publicSubnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent1public'." + }, + "type": "string" + }, + "agent1publicVMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agent128AvailabilitySet": "[concat('agent128-availabilitySet-', variables('nameSuffix'))]", + "agent128Count": "[parameters('agent128Count')]", + "agent128Subnet": "[parameters('agent128Subnet')]", + "agent128SubnetName": "[concat(variables('orchestratorName'), '-agent128subnet')]", + "agent128VMNamePrefix": "[concat(variables('orchestratorName'), '-agent128-', variables('nameSuffix'))]", + "agent128VMSize": "[parameters('agent128VMSize')]", + "agent128VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent128SubnetName'))]", + "agent1publicAvailabilitySet": "[concat('agent1public-availabilitySet-', variables('nameSuffix'))]", + "agent1publicCount": "[parameters('agent1publicCount')]", + "agent1publicEndpointDNSNamePrefix": "[tolower(parameters('agent1publicEndpointDNSNamePrefix'))]", + "agent1publicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agent1publicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agent1publicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agent1publicLbName'))]", + "agent1publicLbIPConfigID": "[concat(variables('agent1publicLbID'),'/frontendIPConfigurations/', variables('agent1publicLbIPConfigName'))]", + "agent1publicLbIPConfigName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicSubnet": "[parameters('agent1publicSubnet')]", + "agent1publicSubnetName": "[concat(variables('orchestratorName'), '-agent1publicsubnet')]", + "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicVMSize": "[parameters('agent1publicVMSize')]", + "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "apiVersionStorageManagedDisks": "2016-04-30-preview", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent128Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent128VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agent128VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent128AvailabilitySet')]", + "properties": { + "managed": "true", + "platformFaultDomainCount": "3", + "platformUpdateDomainCount": "3" + }, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "copy": { + "count": "[variables('agent128Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('agent128VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agent128AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agent128AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agent128VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agent128VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 0 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 1 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 2 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 3 + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent128VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent1publicCount')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('agent1publicLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent1publicVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('agent1publicLbName'), '/backendAddressPools/',variables('agent1publicLbBackendPoolName'))]" + } + ], + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agent1publicVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicAvailabilitySet')]", + "properties": { + "managed": "true", + "platformFaultDomainCount": "3", + "platformUpdateDomainCount": "3" + }, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agent1publicEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agent1publicLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agent1publicLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agent1publicIPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "copy": { + "count": "[variables('agent1publicCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('agent1publicVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agent1publicAvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agent1publicAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agent1publicVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agent1publicVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "1", + "lun": 0 + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent1publicVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agent128Subnet')]", + "[variables('agent1publicSubnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agent128SubnetName')]", + "properties": { + "addressPrefix": "[variables('agent128Subnet')]" + } + }, + { + "name": "[variables('agent1publicSubnetName')]", + "properties": { + "addressPrefix": "[variables('agent1publicSubnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agent1publicFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected_params.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected_params.json new file mode 100644 index 000000000..48b9d5dc9 --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmas_expected_params.json @@ -0,0 +1,41 @@ +{ + "agent128Count": { + "value": 3 + }, + "agent128Subnet": { + "value": "10.0.0.0/16" + }, + "agent128VMSize": { + "value": "Standard_D2_v2" + }, + "agent1publicCount": { + "value": 3 + }, + "agent1publicEndpointDNSNamePrefix": { + "value": "agent1public" + }, + "agent1publicSubnet": { + "value": "10.1.0.0/16" + }, + "agent1publicVMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmss.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss.json new file mode 100644 index 000000000..8ccd07a16 --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss.json @@ -0,0 +1,47 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agent128", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "ManagedDisks", + "diskSizesGB": [128, 128, 128, 128] + }, + { + "name": "agent1public", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agent1public", + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "ManagedDisks", + "diskSizesGB": [1], + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected.json new file mode 100644 index 000000000..d824f3382 --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected.json @@ -0,0 +1,1494 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agent128Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent128Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent128'." + }, + "type": "string" + }, + "agent128VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agent1publicCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent1publicEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agent1publicSubnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent1public'." + }, + "type": "string" + }, + "agent1publicVMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agent128Count": "[parameters('agent128Count')]", + "agent128StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agent128Subnet": "[parameters('agent128Subnet')]", + "agent128SubnetName": "[concat(variables('orchestratorName'), '-agent128subnet')]", + "agent128VMNamePrefix": "[concat(variables('orchestratorName'), '-agent128-', variables('nameSuffix'))]", + "agent128VMSize": "[parameters('agent128VMSize')]", + "agent128VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent128SubnetName'))]", + "agent1publicCount": "[parameters('agent1publicCount')]", + "agent1publicEndpointDNSNamePrefix": "[tolower(parameters('agent1publicEndpointDNSNamePrefix'))]", + "agent1publicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agent1publicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agent1publicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agent1publicLbName'))]", + "agent1publicLbIPConfigID": "[concat(variables('agent1publicLbID'),'/frontendIPConfigurations/', variables('agent1publicLbIPConfigName'))]", + "agent1publicLbIPConfigName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicStorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agent1publicSubnet": "[parameters('agent1publicSubnet')]", + "agent1publicSubnetName": "[concat(variables('orchestratorName'), '-agent1publicsubnet')]", + "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicVMSize": "[parameters('agent1publicVMSize')]", + "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "apiVersionStorageManagedDisks": "2016-04-30-preview", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent128VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agent128VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agent128VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 0 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 1 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 2 + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 3 + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + } + } + }, + "sku": { + "capacity": "[variables('agent128Count')]", + "name": "[variables('agent128VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent128VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agent1publicEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agent1publicLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agent1publicLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agent1publicIPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionStorageManagedDisks')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[variables('vnetID')]", + "[variables('agent1publicLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent1publicVMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agent1publicVnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agent1publicVMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "1", + "lun": 0 + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage" + } + } + } + }, + "sku": { + "capacity": "[variables('agent1publicCount')]", + "name": "[variables('agent1publicVMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent1publicVMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agent128Subnet')]", + "[variables('agent1publicSubnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agent128SubnetName')]", + "properties": { + "addressPrefix": "[variables('agent128Subnet')]" + } + }, + { + "name": "[variables('agent1publicSubnetName')]", + "properties": { + "addressPrefix": "[variables('agent1publicSubnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agent1publicFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected_params.json b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected_params.json new file mode 100644 index 000000000..48b9d5dc9 --- /dev/null +++ b/pkg/acsengine/testdata/disks-managed/swarmmode-vmss_expected_params.json @@ -0,0 +1,41 @@ +{ + "agent128Count": { + "value": 3 + }, + "agent128Subnet": { + "value": "10.0.0.0/16" + }, + "agent128VMSize": { + "value": "Standard_D2_v2" + }, + "agent1publicCount": { + "value": 3 + }, + "agent1publicEndpointDNSNamePrefix": { + "value": "agent1public" + }, + "agent1publicSubnet": { + "value": "10.1.0.0/16" + }, + "agent1publicVMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-storageaccount/swarm_expected.json b/pkg/acsengine/testdata/disks-storageaccount/swarm_expected.json index 71b97fd52..d9ff22a5d 100644 --- a/pkg/acsengine/testdata/disks-storageaccount/swarm_expected.json +++ b/pkg/acsengine/testdata/disks-storageaccount/swarm_expected.json @@ -555,17 +555,18 @@ "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", "agent1publicVMSize": "[parameters('agent1publicVMSize')]", "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -574,8 +575,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -983,7 +1017,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+jl+xR3POdhKKkpJcW2WUjuMojadnSyPZ106juwgiIRE1CfAAULbr03/v4IUUqRdfrpPM1DcXkcsFdvE8i90Fjr4L55SFcywThCRRENwjRKKEgycVFoqyJcg7LDKI0kIqIiDibEGXhcCKcuahGCuCcgn4HqHJP87Gl59/GownF8OrvmfG9TqtTqvtoffD878Pxp/Ph5ej4WSwUeq0fmh1PXRU/0NHMMICZ0QRIbc+ocuzyfVgfD68ubru+4+dtROMxoMPF//s+4/dUvLhYjy5Pnv/ftz3H1+u0dm/bsaDm8lAv75ao9Fwcn1xNbk++/HHyfn4YnR9M77o+4+v1+jd2WQwuXl3NdDz/7BGP11enV0O+rOES8VwRmZacnP5bjDuzwxSvtWA30CSGI5l2Hr26Zd28JefpyefzM/z6ekzP5x2wmM91nl6YOz0pBp9+swNL8c6Yi6xIeKcF0z1wK8B4jU1RoIs6H2lYg1v6XygQio4i2NR6VXAlaqrTK+7VzpbiksY7Afz+ALK9Rlh0+IG2B74m5fyc0VQD/zq2UNN/qsAOedZxhl8KFikA1HuVUOEyUKQs/8UglwRdcfF7ckpekQAR2A/gUoIaGZBLxGoBEEkT1d4nhIE5svYCMhHglOVPPQ7CGDBBVCgDB47rVan216/gZgjADugxMkI6AI+gf9XCMiv0IafjUwlhJkH7UcZVpBgCXNCGCx4wWK9zxRlBXGKezxpu08WvuZC7CqI9JzOXBB8a54X1PzIlJAc9GJizrQR6+iuGQgYcZ5XfluLG2sxJxIYV6XZF4Dn3CYPyqTCaWr9IPdUGZsLirZJYJYf0P9IBOX7E7BvUL9b6sw1DGOyClmRppAolfdCndqWrYhnX5WJLcd2WShXQiUkVun3WGhv09C0cZiCLXOaAmfyEAV0YRO4fckBb4jpIufX7uagOUSYlfR+ETtbm8IAG9D/dya+BRERZrW9YUCPY0Gk/N85Wu/JbOjj0NW7WQ3wGUJUZjbXu9xnVuY1iwL0++BtMnZziYKoQjDQ+JJUkrqsU/pDF1DZeVMOLbExiMQmvWKwSh7SOYBKvCRMbRzbnaNhatt8u2HezPW0dQZGyVqPOJNFKpVw9u07FkvZ97x6RM+kiVT/5KRWbIPO6ekM3piIMT7Zb8Pz68F1f0buc7FTUOE5+HRmlC9GhirPf9xUwrX/WJtj7aHNbvGqEuuZbeO1vd2NU/fff9y8rYM550oqgfOA3OckUo2uAbz6Rthvzqd/yB6OV0QoKgn4dqHORsXfU4MFUeIh+DenbGu08dBtT9s9bYahdcmnmdI/qcg9df1g+0nIK47W+1sO23WUe1iSdKED4/3V5JCy62r8cldW3ZPu9YqYgyIEAgwhUVGoN6zctYuO4MImBnjPo1sidjWcGaemUwm2idI06fo9NiM9hFyOsTO5kG8m7fZ2SQ2UoETCKwgcKxFnTJBFobvVILjDVBl5v/Magl+HgSm8sheGS6Ja1rCuv3rJyVdN/XbVdill8iQxyCKKiJSLIk2/vOiukaK696vDgwxFhSQi4zEE+G8OxlprujfnHMFEH5scXYaLlEpFGHAGve7LP72GE8YBFyp5AfNCaehXjKjTMqSP3UFpOLqe9L3gIxSM3vfCMFxhEYqChQ5VyaNbCD5Cu2X+s1MHgTulBVJxQfp2D/TC8Nhv7IHen1+32zXtarv2q3A1Ex57x/uiNSYLXKTKuWJS6U4UOrginuVcEq8ZfOdW+q1jkKqkmOv4c56GzptQkJRgSWQY8zuWchyH/v7zqRsYuIHBrLBlVc6qx2wGbyEspAhTHuHUHKebo75B4DcNfIsN4ChCUaI3wPP731mi3S+SiBWNSEm+IOYOoTyGNRJPrcfEqhyw6dOMa1p2sMN8uYkTY7ucgi34VwW86UZ7b/7ZaS/rHuUSAvxHDwANq4fbzo0DtY7Ta/aILqEdqFOH/tBRVUR0ZFAFokiJLDkFXZNywXWwkb2H76fm3t8tZrcxFRDkEMZY4dAmr6qPc7lMI5ThJenB1MsFXwpaZE516pkeLsswi3sQ6GAkAgLT+5X3LPWOASDnQsmewTOAqaezokmNU28je6llL7dlHS3r7JOFRZw35V0t7+6Tbeu+0rZeOVsrnhYZqblXh6VnXoyeY0QDgtM7/CCnHrJXb3Ws/MblXBOqDDO8JCa/5imNzM0eBPUmrlEVIAhiKiO+IuIh4LmC21UrxyrpuyyrAZdQ1Z49pWcXej2vmdx4llJ2W/tYo3cXFFOQjOFe7fkgMp7O1jxXIdZHJ42mwpQRIbcyWushS3X/nRcyiQ+MqJJUlYiLHILYrC6Pa5Gb5SlROjuXV6ouNdibVc7MQbtxLjp8mvqIV+ZSViZlZ6G4QRO63W4XsIQ7kqb6t9vVILjEHAMEFDwZ/jKyun7oHqZsVI4OO56t8FIm+v/4szuIOp8+gb/v3hS+64MXU4nnKYn1OaHhcFljKVu+MA3RLY1u9RL4YgG5uV1wPa6MBM2Vdrq6lIYgAq/RB3TbX9wI7Hf2N2A8KfKajbdvwbRXKV+WJLvGaHNu0o46P1spX0L37fcd+N6rNT9VNgSsgLAY+KJakb0gN3fl2zExeep23WmXSVc+SEUyTXgJGWYPIEiGKTNBwRfqDgvdbu3pTWVSKE0GBAIYv0PuMHYEGjnoQEZZoYievbRnI3CHj/pEJQj/DQAA//+jrsjfSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1288,7 +1322,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1448,6 +1482,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1457,7 +1509,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1471,11 +1524,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1517,7 +1566,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/disks-storageaccount/swarmmode.json b/pkg/acsengine/testdata/disks-storageaccount/swarmmode.json new file mode 100644 index 000000000..acc18d65e --- /dev/null +++ b/pkg/acsengine/testdata/disks-storageaccount/swarmmode.json @@ -0,0 +1,47 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agent128", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [128, 128, 128, 128] + }, + { + "name": "agent1public", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agent1public", + "availabilityProfile": "AvailabilitySet", + "storageProfile": "StorageAccount", + "diskSizesGB": [1], + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected.json b/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected.json new file mode 100644 index 000000000..1cc8f7b34 --- /dev/null +++ b/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected.json @@ -0,0 +1,1637 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agent128Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent128Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent128'." + }, + "type": "string" + }, + "agent128VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agent1publicCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agent1publicEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agent1publicSubnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agent1public'." + }, + "type": "string" + }, + "agent1publicVMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agent128AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agent128AvailabilitySet": "[concat('agent128-availabilitySet-', variables('nameSuffix'))]", + "agent128Count": "[parameters('agent128Count')]", + "agent128DataAccountName": "[concat(variables('storageAccountBaseName'), 'data0')]", + "agent128StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agent128StorageAccountsCount": "[add(div(variables('agent128Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agent128Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agent128Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agent128Subnet": "[parameters('agent128Subnet')]", + "agent128SubnetName": "[concat(variables('orchestratorName'), '-agent128subnet')]", + "agent128VMNamePrefix": "[concat(variables('orchestratorName'), '-agent128-', variables('nameSuffix'))]", + "agent128VMSize": "[parameters('agent128VMSize')]", + "agent128VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent128SubnetName'))]", + "agent1publicAccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agent1publicAvailabilitySet": "[concat('agent1public-availabilitySet-', variables('nameSuffix'))]", + "agent1publicCount": "[parameters('agent1publicCount')]", + "agent1publicDataAccountName": "[concat(variables('storageAccountBaseName'), 'data1')]", + "agent1publicEndpointDNSNamePrefix": "[tolower(parameters('agent1publicEndpointDNSNamePrefix'))]", + "agent1publicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agent1publicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agent1publicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agent1publicLbName'))]", + "agent1publicLbIPConfigID": "[concat(variables('agent1publicLbID'),'/frontendIPConfigurations/', variables('agent1publicLbIPConfigName'))]", + "agent1publicLbIPConfigName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicLbName": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicStorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agent1publicStorageAccountsCount": "[add(div(variables('agent1publicCount'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agent1publicCount'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agent1publicCount'), variables('maxVMsPerStorageAccount')),1)))]", + "agent1publicSubnet": "[parameters('agent1publicSubnet')]", + "agent1publicSubnetName": "[concat(variables('orchestratorName'), '-agent1publicsubnet')]", + "agent1publicVMNamePrefix": "[concat(variables('orchestratorName'), '-agent1public-', variables('nameSuffix'))]", + "agent1publicVMSize": "[parameters('agent1publicVMSize')]", + "agent1publicVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agent1publicSubnetName'))]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent128Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent128VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agent128VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agent128StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent128AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agent128VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agent128StorageAccountsCount')]", + "name": "datadiskLoop" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agent128VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent128AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent128Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent128AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agent128VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agent128AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agent128AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agent128VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agent128VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agent128VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 0, + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex(),'-datadisk0')]", + "vhd": { + "uri": "[concat('http://',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'),'.blob.core.windows.net/vhds/',variables('agent128VMNamePrefix'),copyIndex(), '--datadisk0.vhd')]" + } + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 1, + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex(),'-datadisk1')]", + "vhd": { + "uri": "[concat('http://',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'),'.blob.core.windows.net/vhds/',variables('agent128VMNamePrefix'),copyIndex(), '--datadisk1.vhd')]" + } + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 2, + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex(),'-datadisk2')]", + "vhd": { + "uri": "[concat('http://',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'),'.blob.core.windows.net/vhds/',variables('agent128VMNamePrefix'),copyIndex(), '--datadisk2.vhd')]" + } + }, + { + "createOption": "Empty", + "diskSizeGB": "128", + "lun": 3, + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex(),'-datadisk3')]", + "vhd": { + "uri": "[concat('http://',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent128DataAccountName'),'.blob.core.windows.net/vhds/',variables('agent128VMNamePrefix'),copyIndex(), '--datadisk3.vhd')]" + } + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agent128VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent128StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent128AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agent128VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent128VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent1publicCount')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('agent1publicLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent1publicVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('agent1publicLbName'), '/backendAddressPools/',variables('agent1publicLbBackendPoolName'))]" + } + ], + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agent1publicVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agent1publicStorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent1publicAccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agent1publicVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agent1publicStorageAccountsCount')]", + "name": "datadiskLoop" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent1publicDataAccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agent1publicVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agent1publicEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agent1publicLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agent1publicLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agent1publicLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agent1publicIPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agent1publicLbID'), '/backendAddressPools/', variables('agent1publicLbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agent1publicLbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agent1publicLbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agent1publicCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent1publicAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent1publicDataAccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agent1publicVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agent1publicAvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agent1publicAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agent1publicVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agent1publicVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agent1publicVMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "dataDisks": [ + { + "createOption": "Empty", + "diskSizeGB": "1", + "lun": 0, + "name": "[concat(variables('agent1publicVMNamePrefix'), copyIndex(),'-datadisk0')]", + "vhd": { + "uri": "[concat('http://',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('agent1publicDataAccountName'),'.blob.core.windows.net/vhds/',variables('agent1publicVMNamePrefix'),copyIndex(), '--datadisk0.vhd')]" + } + } + ], + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agent1publicVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agent1publicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agent1publicAccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agent1publicVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agent1publicVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agent128Subnet')]", + "[variables('agent1publicSubnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agent128SubnetName')]", + "properties": { + "addressPrefix": "[variables('agent128Subnet')]" + } + }, + { + "name": "[variables('agent1publicSubnetName')]", + "properties": { + "addressPrefix": "[variables('agent1publicSubnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agent1publicFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agent1publicIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected_params.json b/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected_params.json new file mode 100644 index 000000000..48b9d5dc9 --- /dev/null +++ b/pkg/acsengine/testdata/disks-storageaccount/swarmmode_expected_params.json @@ -0,0 +1,41 @@ +{ + "agent128Count": { + "value": 3 + }, + "agent128Subnet": { + "value": "10.0.0.0/16" + }, + "agent128VMSize": { + "value": "Standard_D2_v2" + }, + "agent1publicCount": { + "value": 3 + }, + "agent1publicEndpointDNSNamePrefix": { + "value": "agent1public" + }, + "agent1publicSubnet": { + "value": "10.1.0.0/16" + }, + "agent1publicVMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/key-vault-certs/swarm_expected.json b/pkg/acsengine/testdata/key-vault-certs/swarm_expected.json index f875bab21..237d0cf1f 100644 --- a/pkg/acsengine/testdata/key-vault-certs/swarm_expected.json +++ b/pkg/acsengine/testdata/key-vault-certs/swarm_expected.json @@ -797,10 +797,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -843,6 +843,7 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "linuxProfileSecrets": [ { @@ -868,7 +869,7 @@ ], "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -877,8 +878,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1413,7 +1447,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1516,7 +1550,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool2VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1792,6 +1826,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1801,7 +1853,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1815,11 +1868,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1861,7 +1910,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/key-vault-certs/swarmmode.json b/pkg/acsengine/testdata/key-vault-certs/swarmmode.json new file mode 100644 index 000000000..3a65f463e --- /dev/null +++ b/pkg/acsengine/testdata/key-vault-certs/swarmmode.json @@ -0,0 +1,63 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 1, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agentdns1", + "ports": [ + 80, + 443, + 8080 + ] + }, + { + "name": "agentpool2", + "count": 3, + "vmSize": "Standard_D2_v2" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + }, + "secrets":[ + { + "sourceVault":{ + "id":"vaultId" + }, + "vaultCertificates":[ + { + "certificateUrl" :"http://url2" + } + ] + }, + { + "sourceVault":{ + "id":"vaultId2" + }, + "vaultCertificates":[ + { + "certificateUrl" :"http://url1" + } + ] + } + ] + } + } +} diff --git a/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected.json b/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected.json new file mode 100644 index 000000000..559fadd46 --- /dev/null +++ b/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected.json @@ -0,0 +1,1575 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpool1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpool1EndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpool1Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpool1'." + }, + "type": "string" + }, + "agentpool1VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpool2Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpool2Subnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpool2'." + }, + "type": "string" + }, + "agentpool2VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "linuxKeyVaultID0": { + "metadata": { + "description": "KeyVaultId0 to install certificates from on linux machines." + }, + "type": "string" + }, + "linuxKeyVaultID0CertificateURL0": { + "metadata": { + "description": "CertificateURL0 to install from KeyVaultId0 on linux machines." + }, + "type": "string" + }, + "linuxKeyVaultID1": { + "metadata": { + "description": "KeyVaultId1 to install certificates from on linux machines." + }, + "type": "string" + }, + "linuxKeyVaultID1CertificateURL0": { + "metadata": { + "description": "CertificateURL0 to install from KeyVaultId1 on linux machines." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpool1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentpool1Count": "[parameters('agentpool1Count')]", + "agentpool1EndpointDNSNamePrefix": "[tolower(parameters('agentpool1EndpointDNSNamePrefix'))]", + "agentpool1IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpool1EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpool1LbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpool1LbName'))]", + "agentpool1LbIPConfigID": "[concat(variables('agentpool1LbID'),'/frontendIPConfigurations/', variables('agentpool1LbIPConfigName'))]", + "agentpool1LbIPConfigName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentpool1StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpool1Subnet": "[parameters('agentpool1Subnet')]", + "agentpool1SubnetName": "[concat(variables('orchestratorName'), '-agentpool1subnet')]", + "agentpool1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1VMSize": "[parameters('agentpool1VMSize')]", + "agentpool1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpool1SubnetName'))]", + "agentpool2AccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agentpool2Count": "[parameters('agentpool2Count')]", + "agentpool2StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agentpool2StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpool2Subnet": "[parameters('agentpool2Subnet')]", + "agentpool2SubnetName": "[concat(variables('orchestratorName'), '-agentpool2subnet')]", + "agentpool2VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpool2-', variables('nameSuffix'))]", + "agentpool2VMSize": "[parameters('agentpool2VMSize')]", + "agentpool2VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpool2SubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "linuxProfileSecrets": [ + { + "sourceVault": { + "id": "[parameters('linuxKeyVaultID0')]" + }, + "vaultCertificates": [ + { + "certificateUrl": "[parameters('linuxKeyVaultID0CertificateURL0')]" + } + ] + }, + { + "sourceVault": { + "id": "[parameters('linuxKeyVaultID1')]" + }, + "vaultCertificates": [ + { + "certificateUrl": "[parameters('linuxKeyVaultID1CertificateURL0')]" + } + ] + } + ], + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 1, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpool1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpool1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1IPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpool1EndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1LbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpool1LbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpool1LbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpool1IPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[variables('vnetID')]", + "[variables('agentpool1LbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpool1VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpool1VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xZe3PbNhL/H59iS2tqOw1FSWkuU2eUG8dWzp6rLY9ld24uTmOIXFk4U4ACgH7U1Xe/wYsPWUrcNpmpMglJcIH97S5+i11m47tkzHgypmpKyMaf/5EN2BN8wq4KiTC6pXIGRyJDGHKEt+KOGIGzKVPAuNI0zxXoKcJE5Lm4ZfwKUjGbC45cK7IBMeyL9Bpl7Rb2jIBCO1Rbf0aVRqmWh+mVW+ovGEQUaojvCMF0KiBSmkptkNa0pHlhtEPqLaeaCR6RjGokcwX0jpD94d6/B6cf94ZHJ8PR4OMvg9PR4fC4H3XbP7U7EVn24QmVdIbOoiaao93R2eB0b3h+fNZvPXQXfuDkdPDu8D/91kMvjLw7PB2d7e7vn/ZbDy8WZPe/56eD89HAPP64ICfD0dnh8ehs9+efR3unhydn56eH/dbDywV5uzsajM7fHg/M+v9YkF+OjnePBv3LqVCa0xlempHzo7eD0/6ldUnLScDvoDCDTZW0n73/tRP/9OFi6729/HCx/ayVXHSTTTPXI10z92KrnL39zE8Pc30EjmyoYU8UXO9Aq+aQqClxInHC7koRp3hJ5h2TSsNulslSrnRcEL2ZGbt3AtgwHNzgXtjb5xDss4NNjZVjd6BVPYTXZYB2oFXeRyvJaEk2mwkO7wqems22cosTglwVEnd/KyQeo74V8nprmzwQgA1wryz7uHsF5h9FIDwfIM319L7fJQATIYEB4/DQbbe7vcVryAQBALi9MuwYJhneJLzIc5hqPd9JTDK5aqdiZoXYBN5D658Q4yfowAc7pqfI7Y0BE/YWTKmCMSKHiSh4ZgilGS/QCy4B6/hh57+6JUzB1AlFXmYskV7b+wmzF5UjzqFr1sgENxocyqYOiDl6yCXgleq40EHlc6Bj4XKET3KR94LLD+5hDtStdsc09IjH1YiL8YoRTCkHiUrkN/ik6HSq8JSOjdnfPRLfIhAp5ebZO886PcskKvXnY7RYQSpyMPSp9rLm8EtCmHLnEnjaWcuiZj6Cfh+iKlk0TZSoC8nB+BdzhfWxbsDDJlDqeR2mBt9Yj2RoPEP9IRmRCTPQ7NlYAXu8RkPVsvpOQ71d6/PauTuMnXbngc7hifVa1Hqo8uGi9bCUhxers6BLhCG2CvOJocD+8WidsE+0rRCtMqGb46fIBGhEiCkkqNPEBFI91ks24NBtmLI2WaPGi5ktRh2BbG1gnt3MiBC/99yzD0WTzJ3lVBtryVDBjxDHErW8j1PBucRJYQ7QOL6lTNvxfvclxJ+GsU3IaidJrlC3M6vI5GVj8vSrpgRnta/SvGGYgSrSFJWaFHn+9GS8IJrNEBruIcTGqFAoZyKDmP4LnDm14zL4/nyeUV15GjKK5rQUc3tWRoQURgDd2337cuje+SCA2xCz64xJiOduS6h7pXGW+WvinalQ3rAU2xlx7hqZAjEoNpHPmdLIQXDY6b149RK2uABa6OlzGBfaBPqGo942on4FmisBU2oSloYx4xloYQ+EgrM7UGZlDVRDckNlIgteIhHpdYXdlPIQp7DpXPJ+5HC6AA/uMLVA+0uPSaGk7QSyhufiA9CpOdc7bfvHWRIfWEg7SbIGSgRvnuS6RNyglCzDtqHJZoj/2iit4FizPYia1PKjZfFjHRQz8i3pxvS0GBuqeWuT1IFIJOZIFaokE7c8FzRLWqu7Az8x9hPjy8KdLOqyvJ1dGg+bmOUipXktcmHWN+B4U8G34Hpo8tKpofoPd18w0WUGt7dSnftNG0s03vUv3VYLKUOi7eNChdxIwLUajOowoapjLG4ztrYCe1FtIqs7LMEn4qtGowmjszIPPyq/6ojmCmL6Rwvkhtb1ZVkFoFaRRc0aKiT21ef1uh/ZKA9Ts22YBlnkqEJMwZzNcynMTsQ/2vqT1dVUWbmF0iGCflnH+Somgg+v62GsXLEn0Z1GFDje+g8HgsPE9p6hKKtm+egoK2cNjGOa3aDUTGFsKlhobdUKzW2TjV9BHLuTZq2Ei06o4yp8I0wFz6i891iAao2zuYWsBfxPMG7KN7xjqvryUQG2OGciQy2ukfejdW92008Fk5hZwrjf+sZlzeKtLe+c+ACa7ncnkvOZQRzbCRB/ghnl9ArldmPdJQ4+itxnDeg8EqzYU5rGmnZYNr0kVYx5FQYHZrWyGsPc7xHQNUFMRZFnfFMbsnBMtQmljdy63qdcL3Q7jwxpbEy7LWLv5iXwK2LzKuQW23ysb1kO6I1BptQ0FE5awFxIDb1erwdUwS3mubn2ega3z+4ZQMwgUsmvJ062lfibC34SZifdyJcjamr+Zh99t/cFTCPUjr83lOV0zHKm70FMgqdNi7MDm76b2LSAaWGKkNJltgty5Ywhc30dKxpakQrJUkcVoOza4acTdDU5P0vMz5PyKxDStMx1Pn6Zi0/iYZODtW1b517JuydzrgGmHoSSYNb/X6RWjVYe21+jk98p76G16lsufNeHKGOKjnPMIvhAGhs6VJ6MXz23Pco1S68NajGZwNx+dvJNrkolm2tjRfn/A6apiBrVca/z5PJ4NdjfgYtpMa/pePPGtTe5uErob4XExH9kj8dCaKUlnccGqMfZzsUV9N5834Xv3QcGZ2dZBph2CXlmSBssch/m7Td6J2yqyRw1Zk/4tO+nhJLDlZ6Gi8FvlN+DxBll3GYzMdG3VJq2ZAW31bTQJiIQm0RxS/wRvQHGfdCFGeOFRrN60OcSz6Og1BcKnvh/AAAA//+L8+RX2RkAAA==\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + }, + "secrets": "[variables('linuxProfileSecrets')]" + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpool1Count')]", + "name": "[variables('agentpool1VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpool1VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpool2StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpool2VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpool2VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpool2VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpool2VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + }, + "secrets": "[variables('linuxProfileSecrets')]" + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpool2Count')]", + "name": "[variables('agentpool2VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpool2VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpool1Subnet')]", + "[variables('agentpool2Subnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpool1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpool1Subnet')]" + } + }, + { + "name": "[variables('agentpool2SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpool2Subnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + }, + "secrets": "[variables('linuxProfileSecrets')]" + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpool1FQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected_params.json b/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected_params.json new file mode 100644 index 000000000..7ef51e0b3 --- /dev/null +++ b/pkg/acsengine/testdata/key-vault-certs/swarmmode_expected_params.json @@ -0,0 +1,53 @@ +{ + "agentpool1Count": { + "value": 3 + }, + "agentpool1EndpointDNSNamePrefix": { + "value": "agentdns1" + }, + "agentpool1Subnet": { + "value": "10.0.0.0/16" + }, + "agentpool1VMSize": { + "value": "Standard_D2_v2" + }, + "agentpool2Count": { + "value": 3 + }, + "agentpool2Subnet": { + "value": "10.1.0.0/16" + }, + "agentpool2VMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "linuxKeyVaultID0": { + "value": "vaultId" + }, + "linuxKeyVaultID0CertificateURL0": { + "value": "http://url2" + }, + "linuxKeyVaultID1": { + "value": "vaultId2" + }, + "linuxKeyVaultID1CertificateURL0": { + "value": "http://url1" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarm_expected.json b/pkg/acsengine/testdata/largeclusters/swarm_expected.json index fed6f4e2a..a5b0cc71b 100644 --- a/pkg/acsengine/testdata/largeclusters/swarm_expected.json +++ b/pkg/acsengine/testdata/largeclusters/swarm_expected.json @@ -2576,10 +2576,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentpri0AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", "agentpri0Count": "[parameters('agentpri0Count')]", "agentpri0StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", @@ -2698,10 +2698,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -2710,8 +2711,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -3080,7 +3114,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri0VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3182,7 +3216,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri1VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3284,7 +3318,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri2VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3386,7 +3420,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri3VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3488,7 +3522,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri4VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3590,7 +3624,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri5VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3692,7 +3726,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri6VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+jl+xR3POdhKKkpJcW2WUjuMojadnSyPZ106juwgiIRE1CfAAULbr03/v4IUUqRdfrpPM1DcXkcsFdvE8i90Fjr4L55SFcywThCRRENwjRKKEgycVFoqyJcg7LDKI0kIqIiDibEGXhcCKcuahGCuCcgn4HqHJP87Gl59/GownF8OrvmfG9TqtTqvtoffD878Pxp/Ph5ej4WSwUeq0fmh1PXRU/0NHMMICZ0QRIbc+ocuzyfVgfD68ubru+4+dtROMxoMPF//s+4/dUvLhYjy5Pnv/ftz3H1+u0dm/bsaDm8lAv75ao9Fwcn1xNbk++/HHyfn4YnR9M77o+4+v1+jd2WQwuXl3NdDz/7BGP11enV0O+rOES8VwRmZacnP5bjDuzwxSvtWA30CSGI5l2Hr26Zd28JefpyefzM/z6ekzP5x2wmM91nl6YOz0pBp9+swNL8c6Yi6xIeKcF0z1wK8B4jU1RoIs6H2lYg1v6XygQio4i2NR6VXAlaqrTK+7VzpbiksY7Afz+ALK9Rlh0+IG2B74m5fyc0VQD/zq2UNN/qsAOedZxhl8KFikA1HuVUOEyUKQs/8UglwRdcfF7ckpekQAR2A/gUoIaGZBLxGoBEEkT1d4nhIE5svYCMhHglOVPPQ7CGDBBVCgDB47rVan216/gZgjADugxMkI6AI+gf9XCMiv0IafjUwlhJkH7UcZVpBgCXNCGCx4wWK9zxRlBXGKezxpu08WvuZC7CqI9JzOXBB8a54X1PzIlJAc9GJizrQR6+iuGQgYcZ5XfluLG2sxJxIYV6XZF4Dn3CYPyqTCaWr9IPdUGZsLirZJYJYf0P9IBOX7E7BvUL9b6sw1DGOyClmRppAolfdCndqWrYhnX5WJLcd2WShXQiUkVun3WGhv09C0cZiCLXOaAmfyEAV0YRO4fckBb4jpIufX7uagOUSYlfR+ETtbm8IAG9D/dya+BRERZrW9YUCPY0Gk/N85Wu/JbOjj0NW7WQ3wGUJUZjbXu9xnVuY1iwL0++BtMnZziYKoQjDQ+JJUkrqsU/pDF1DZeVMOLbExiMQmvWKwSh7SOYBKvCRMbRzbnaNhatt8u2HezPW0dQZGyVqPOJNFKpVw9u07FkvZ97x6RM+kiVT/5KRWbIPO6ekM3piIMT7Zb8Pz68F1f0buc7FTUOE5+HRmlC9GhirPf9xUwrX/WJtj7aHNbvGqEuuZbeO1vd2NU/fff9y8rYM550oqgfOA3OckUo2uAbz6Rthvzqd/yB6OV0QoKgn4dqHORsXfU4MFUeIh+DenbGu08dBtT9s9bYahdcmnmdI/qcg9df1g+0nIK47W+1sO23WUe1iSdKED4/3V5JCy62r8cldW3ZPu9YqYgyIEAgwhUVGoN6zctYuO4MImBnjPo1sidjWcGaemUwm2idI06fo9NiM9hFyOsTO5kG8m7fZ2SQ2UoETCKwgcKxFnTJBFobvVILjDVBl5v/Magl+HgSm8sheGS6Ja1rCuv3rJyVdN/XbVdill8iQxyCKKiJSLIk2/vOiukaK696vDgwxFhSQi4zEE+G8OxlprujfnHMFEH5scXYaLlEpFGHAGve7LP72GE8YBFyp5AfNCaehXjKjTMqSP3UFpOLqe9L3gIxSM3vfCMFxhEYqChQ5VyaNbCD5Cu2X+s1MHgTulBVJxQfp2D/TC8Nhv7IHen1+32zXtarv2q3A1Ex57x/uiNSYLXKTKuWJS6U4UOrginuVcEq8ZfOdW+q1jkKqkmOv4c56GzptQkJRgSWQY8zuWchyH/v7zqRsYuIHBrLBlVc6qx2wGbyEspAhTHuHUHKebo75B4DcNfIsN4ChCUaI3wPP731mi3S+SiBWNSEm+IOYOoTyGNRJPrcfEqhyw6dOMa1p2sMN8uYkTY7ucgi34VwW86UZ7b/7ZaS/rHuUSAvxHDwANq4fbzo0DtY7Ta/aILqEdqFOH/tBRVUR0ZFAFokiJLDkFXZNywXWwkb2H76fm3t8tZrcxFRDkEMZY4dAmr6qPc7lMI5ThJenB1MsFXwpaZE516pkeLsswi3sQ6GAkAgLT+5X3LPWOASDnQsmewTOAqaezokmNU28je6llL7dlHS3r7JOFRZw35V0t7+6Tbeu+0rZeOVsrnhYZqblXh6VnXoyeY0QDgtM7/CCnHrJXb3Ws/MblXBOqDDO8JCa/5imNzM0eBPUmrlEVIAhiKiO+IuIh4LmC21UrxyrpuyyrAZdQ1Z49pWcXej2vmdx4llJ2W/tYo3cXFFOQjOFe7fkgMp7O1jxXIdZHJ42mwpQRIbcyWushS3X/nRcyiQ+MqJJUlYiLHILYrC6Pa5Gb5SlROjuXV6ouNdibVc7MQbtxLjp8mvqIV+ZSViZlZ6G4QRO63W4XsIQ7kqb6t9vVILjEHAMEFDwZ/jKyun7oHqZsVI4OO56t8FIm+v/4szuIOp8+gb/v3hS+64MXU4nnKYn1OaHhcFljKVu+MA3RLY1u9RL4YgG5uV1wPa6MBM2Vdrq6lIYgAq/RB3TbX9wI7Hf2N2A8KfKajbdvwbRXKV+WJLvGaHNu0o46P1spX0L37fcd+N6rNT9VNgSsgLAY+KJakb0gN3fl2zExeep23WmXSVc+SEUyTXgJGWYPIEiGKTNBwRfqDgvdbu3pTWVSKE0GBAIYv0PuMHYEGjnoQEZZoYievbRnI3CHj/pEJQj/DQAA//+jrsjfSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3794,7 +3828,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri7VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3896,7 +3930,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri8VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3998,7 +4032,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri9VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4100,7 +4134,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpri10VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4338,7 +4372,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpublic1VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4567,6 +4601,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -4576,7 +4628,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -4590,11 +4643,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -4636,7 +4685,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/largeclusters/swarmmode.json b/pkg/acsengine/testdata/largeclusters/swarmmode.json new file mode 100644 index 000000000..c86a81618 --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmode.json @@ -0,0 +1,91 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpri0", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri1", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri2", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri3", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri4", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri5", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri6", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri7", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri8", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri9", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpri10", + "count": 100, + "vmSize": "Standard_D2_v2" + }, + { + "name": "agentpublic1", + "count": 100, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agentpublic1", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8fhkh3jpHUQsrUIezFB5k4Rq9giJM8G1Cr0u2IRMiqG++nat5hbOr3gODpTA0h11q9bzb6nJtK7NtDzIHx+w3YNIVpcTGLiUEsfUbY53IHg7Nl/p3/gkST3g0R6BSL7Hg45SfyvpH7kwY30MoVHG/6P3go4SKlYoHXlgaaNr3fMwUTIeE9ofvyS3fcr6xxlsoB6luKuEs50h0NGsE4QEnbfSY4Yd/C1ucc3mEw+QFXBIsENHfHfZYrLNHm2L8MXYVmAH8k//5sFs4Migln9GiUgEQUT6uOjowsZyXBbXwfT11og+syPkAq4eqjiC76r0w6faVihdBYVoc/UcyupgH azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmmode_expected.json b/pkg/acsengine/testdata/largeclusters/swarmmode_expected.json new file mode 100644 index 000000000..b6245a9ce --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmode_expected.json @@ -0,0 +1,4756 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpri0Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri0Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri0'." + }, + "type": "string" + }, + "agentpri0VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri10Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri10Subnet": { + "defaultValue": "10.10.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri10'." + }, + "type": "string" + }, + "agentpri10VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri1Subnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri1'." + }, + "type": "string" + }, + "agentpri1VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri2Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri2Subnet": { + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri2'." + }, + "type": "string" + }, + "agentpri2VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri3Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri3Subnet": { + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri3'." + }, + "type": "string" + }, + "agentpri3VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri4Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri4Subnet": { + "defaultValue": "10.4.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri4'." + }, + "type": "string" + }, + "agentpri4VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri5Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri5Subnet": { + "defaultValue": "10.5.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri5'." + }, + "type": "string" + }, + "agentpri5VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri6Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri6Subnet": { + "defaultValue": "10.6.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri6'." + }, + "type": "string" + }, + "agentpri6VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri7Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri7Subnet": { + "defaultValue": "10.7.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri7'." + }, + "type": "string" + }, + "agentpri7VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri8Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri8Subnet": { + "defaultValue": "10.8.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri8'." + }, + "type": "string" + }, + "agentpri8VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri9Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri9Subnet": { + "defaultValue": "10.9.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri9'." + }, + "type": "string" + }, + "agentpri9VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpublic1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpublic1EndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpublic1Subnet": { + "defaultValue": "10.11.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpublic1'." + }, + "type": "string" + }, + "agentpublic1VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpri0AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentpri0Count": "[parameters('agentpri0Count')]", + "agentpri0StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentpri0StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri0Subnet": "[parameters('agentpri0Subnet')]", + "agentpri0SubnetName": "[concat(variables('orchestratorName'), '-agentpri0subnet')]", + "agentpri0VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri0-', variables('nameSuffix'))]", + "agentpri0VMSize": "[parameters('agentpri0VMSize')]", + "agentpri0VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri0SubnetName'))]", + "agentpri10AccountName": "[concat(variables('storageAccountBaseName'), 'agnt10')]", + "agentpri10Count": "[parameters('agentpri10Count')]", + "agentpri10StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),10)]", + "agentpri10StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri10Subnet": "[parameters('agentpri10Subnet')]", + "agentpri10SubnetName": "[concat(variables('orchestratorName'), '-agentpri10subnet')]", + "agentpri10VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri10-', variables('nameSuffix'))]", + "agentpri10VMSize": "[parameters('agentpri10VMSize')]", + "agentpri10VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri10SubnetName'))]", + "agentpri1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agentpri1Count": "[parameters('agentpri1Count')]", + "agentpri1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agentpri1StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri1Subnet": "[parameters('agentpri1Subnet')]", + "agentpri1SubnetName": "[concat(variables('orchestratorName'), '-agentpri1subnet')]", + "agentpri1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri1-', variables('nameSuffix'))]", + "agentpri1VMSize": "[parameters('agentpri1VMSize')]", + "agentpri1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri1SubnetName'))]", + "agentpri2AccountName": "[concat(variables('storageAccountBaseName'), 'agnt2')]", + "agentpri2Count": "[parameters('agentpri2Count')]", + "agentpri2StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),2)]", + "agentpri2StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri2Subnet": "[parameters('agentpri2Subnet')]", + "agentpri2SubnetName": "[concat(variables('orchestratorName'), '-agentpri2subnet')]", + "agentpri2VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri2-', variables('nameSuffix'))]", + "agentpri2VMSize": "[parameters('agentpri2VMSize')]", + "agentpri2VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri2SubnetName'))]", + "agentpri3AccountName": "[concat(variables('storageAccountBaseName'), 'agnt3')]", + "agentpri3Count": "[parameters('agentpri3Count')]", + "agentpri3StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),3)]", + "agentpri3StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri3Subnet": "[parameters('agentpri3Subnet')]", + "agentpri3SubnetName": "[concat(variables('orchestratorName'), '-agentpri3subnet')]", + "agentpri3VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri3-', variables('nameSuffix'))]", + "agentpri3VMSize": "[parameters('agentpri3VMSize')]", + "agentpri3VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri3SubnetName'))]", + "agentpri4AccountName": "[concat(variables('storageAccountBaseName'), 'agnt4')]", + "agentpri4Count": "[parameters('agentpri4Count')]", + "agentpri4StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),4)]", + "agentpri4StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri4Subnet": "[parameters('agentpri4Subnet')]", + "agentpri4SubnetName": "[concat(variables('orchestratorName'), '-agentpri4subnet')]", + "agentpri4VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri4-', variables('nameSuffix'))]", + "agentpri4VMSize": "[parameters('agentpri4VMSize')]", + "agentpri4VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri4SubnetName'))]", + "agentpri5AccountName": "[concat(variables('storageAccountBaseName'), 'agnt5')]", + "agentpri5Count": "[parameters('agentpri5Count')]", + "agentpri5StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),5)]", + "agentpri5StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri5Subnet": "[parameters('agentpri5Subnet')]", + "agentpri5SubnetName": "[concat(variables('orchestratorName'), '-agentpri5subnet')]", + "agentpri5VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri5-', variables('nameSuffix'))]", + "agentpri5VMSize": "[parameters('agentpri5VMSize')]", + "agentpri5VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri5SubnetName'))]", + "agentpri6AccountName": "[concat(variables('storageAccountBaseName'), 'agnt6')]", + "agentpri6Count": "[parameters('agentpri6Count')]", + "agentpri6StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),6)]", + "agentpri6StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri6Subnet": "[parameters('agentpri6Subnet')]", + "agentpri6SubnetName": "[concat(variables('orchestratorName'), '-agentpri6subnet')]", + "agentpri6VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri6-', variables('nameSuffix'))]", + "agentpri6VMSize": "[parameters('agentpri6VMSize')]", + "agentpri6VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri6SubnetName'))]", + "agentpri7AccountName": "[concat(variables('storageAccountBaseName'), 'agnt7')]", + "agentpri7Count": "[parameters('agentpri7Count')]", + "agentpri7StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),7)]", + "agentpri7StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri7Subnet": "[parameters('agentpri7Subnet')]", + "agentpri7SubnetName": "[concat(variables('orchestratorName'), '-agentpri7subnet')]", + "agentpri7VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri7-', variables('nameSuffix'))]", + "agentpri7VMSize": "[parameters('agentpri7VMSize')]", + "agentpri7VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri7SubnetName'))]", + "agentpri8AccountName": "[concat(variables('storageAccountBaseName'), 'agnt8')]", + "agentpri8Count": "[parameters('agentpri8Count')]", + "agentpri8StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),8)]", + "agentpri8StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri8Subnet": "[parameters('agentpri8Subnet')]", + "agentpri8SubnetName": "[concat(variables('orchestratorName'), '-agentpri8subnet')]", + "agentpri8VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri8-', variables('nameSuffix'))]", + "agentpri8VMSize": "[parameters('agentpri8VMSize')]", + "agentpri8VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri8SubnetName'))]", + "agentpri9AccountName": "[concat(variables('storageAccountBaseName'), 'agnt9')]", + "agentpri9Count": "[parameters('agentpri9Count')]", + "agentpri9StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),9)]", + "agentpri9StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpri9Subnet": "[parameters('agentpri9Subnet')]", + "agentpri9SubnetName": "[concat(variables('orchestratorName'), '-agentpri9subnet')]", + "agentpri9VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri9-', variables('nameSuffix'))]", + "agentpri9VMSize": "[parameters('agentpri9VMSize')]", + "agentpri9VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri9SubnetName'))]", + "agentpublic1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt11')]", + "agentpublic1Count": "[parameters('agentpublic1Count')]", + "agentpublic1EndpointDNSNamePrefix": "[tolower(parameters('agentpublic1EndpointDNSNamePrefix'))]", + "agentpublic1IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpublic1EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpublic1LbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpublic1-', variables('nameSuffix'))]", + "agentpublic1LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpublic1LbName'))]", + "agentpublic1LbIPConfigID": "[concat(variables('agentpublic1LbID'),'/frontendIPConfigurations/', variables('agentpublic1LbIPConfigName'))]", + "agentpublic1LbIPConfigName": "[concat(variables('orchestratorName'), '-agentpublic1-', variables('nameSuffix'))]", + "agentpublic1LbName": "[concat(variables('orchestratorName'), '-agentpublic1-', variables('nameSuffix'))]", + "agentpublic1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),11)]", + "agentpublic1StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpublic1Subnet": "[parameters('agentpublic1Subnet')]", + "agentpublic1SubnetName": "[concat(variables('orchestratorName'), '-agentpublic1subnet')]", + "agentpublic1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpublic1-', variables('nameSuffix'))]", + "agentpublic1VMSize": "[parameters('agentpublic1VMSize')]", + "agentpublic1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpublic1SubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri0StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri0VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri0VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri0VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri0VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri0Count')]", + "name": "[variables('agentpri0VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri0VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri1VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri1VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri1VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri1Count')]", + "name": "[variables('agentpri1VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri1VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri2StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri2VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri2VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri2VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri2VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri2Count')]", + "name": "[variables('agentpri2VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri2VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri3StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri3VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri3VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri3VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri3VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xZe3PbNhL/H59iS2tqOw1FSWkuU2eUG8dWzp6rLY9ld24uTmOIXFk4U4ACgH7U1Xe/wYsPWUrcNpmpMglJcIH97S5+i11m47tkzHgypmpKyMaf/5EN2BN8wq4KiTC6pXIGRyJDGHKEt+KOGIGzKVPAuNI0zxXoKcJE5Lm4ZfwKUjGbC45cK7IBMeyL9Bpl7Rb2jIBCO1Rbf0aVRqmWh+mVW+ovGEQUaojvCMF0KiBSmkptkNa0pHlhtEPqLaeaCR6RjGokcwX0jpD94d6/B6cf94ZHJ8PR4OMvg9PR4fC4H3XbP7U7EVn24QmVdIbOoiaao93R2eB0b3h+fNZvPXQXfuDkdPDu8D/91kMvjLw7PB2d7e7vn/ZbDy8WZPe/56eD89HAPP64ICfD0dnh8ehs9+efR3unhydn56eH/dbDywV5uzsajM7fHg/M+v9YkF+OjnePBv3LqVCa0xlempHzo7eD0/6ldUnLScDvoDCDTZW0n73/tRP/9OFi6729/HCx/ayVXHSTTTPXI10z92KrnL39zE8Pc30EjmyoYU8UXO9Aq+aQqClxInHC7koRp3hJ5h2TSsNulslSrnRcEL2ZGbt3AtgwHNzgXtjb5xDss4NNjZVjd6BVPYTXZYB2oFXeRyvJaEk2mwkO7wqems22cosTglwVEnd/KyQeo74V8nprmzwQgA1wryz7uHsF5h9FIDwfIM319L7fJQATIYEB4/DQbbe7vcVryAQBALi9MuwYJhneJLzIc5hqPd9JTDK5aqdiZoXYBN5D658Q4yfowAc7pqfI7Y0BE/YWTKmCMSKHiSh4ZgilGS/QCy4B6/hh57+6JUzB1AlFXmYskV7b+wmzF5UjzqFr1sgENxocyqYOiDl6yCXgleq40EHlc6Bj4XKET3KR94LLD+5hDtStdsc09IjH1YiL8YoRTCkHiUrkN/ik6HSq8JSOjdnfPRLfIhAp5ebZO886PcskKvXnY7RYQSpyMPSp9rLm8EtCmHLnEnjaWcuiZj6Cfh+iKlk0TZSoC8nB+BdzhfWxbsDDJlDqeR2mBt9Yj2RoPEP9IRmRCTPQ7NlYAXu8RkPVsvpOQ71d6/PauTuMnXbngc7hifVa1Hqo8uGi9bCUhxers6BLhCG2CvOJocD+8WidsE+0rRCtMqGb46fIBGhEiCkkqNPEBFI91ks24NBtmLI2WaPGi5ktRh2BbG1gnt3MiBC/99yzD0WTzJ3lVBtryVDBjxDHErW8j1PBucRJYQ7QOL6lTNvxfvclxJ+GsU3IaidJrlC3M6vI5GVj8vSrpgRnta/SvGGYgSrSFJWaFHn+9GS8IJrNEBruIcTGqFAoZyKDmP4LnDm14zL4/nyeUV15GjKK5rQUc3tWRoQURgDd2337cuje+SCA2xCz64xJiOduS6h7pXGW+WvinalQ3rAU2xlx7hqZAjEoNpHPmdLIQXDY6b149RK2uABa6OlzGBfaBPqGo942on4FmisBU2oSloYx4xloYQ+EgrM7UGZlDVRDckNlIgteIhHpdYXdlPIQp7DpXPJ+5HC6AA/uMLVA+0uPSaGk7QSyhufiA9CpOdc7bfvHWRIfWEg7SbIGSgRvnuS6RNyglCzDtqHJZoj/2iit4FizPYia1PKjZfFjHRQz8i3pxvS0GBuqeWuT1IFIJOZIFaokE7c8FzRLWqu7Az8x9hPjy8KdLOqyvJ1dGg+bmOUipXktcmHWN+B4U8G34Hpo8tKpofoPd18w0WUGt7dSnftNG0s03vUv3VYLKUOi7eNChdxIwLUajOowoapjLG4ztrYCe1FtIqs7LMEn4qtGowmjszIPPyq/6ojmCmL6Rwvkhtb1ZVkFoFaRRc0aKiT21ef1uh/ZKA9Ts22YBlnkqEJMwZzNcynMTsQ/2vqT1dVUWbmF0iGCflnH+Somgg+v62GsXLEn0Z1GFDje+g8HgsPE9p6hKKtm+egoK2cNjGOa3aDUTGFsKlhobdUKzW2TjV9BHLuTZq2Ei06o4yp8I0wFz6i891iAao2zuYWsBfxPMG7KN7xjqvryUQG2OGciQy2ukfejdW92008Fk5hZwrjf+sZlzeKtLe+c+ACa7ncnkvOZQRzbCRB/ghnl9ArldmPdJQ4+itxnDeg8EqzYU5rGmnZYNr0kVYx5FQYHZrWyGsPc7xHQNUFMRZFnfFMbsnBMtQmljdy63qdcL3Q7jwxpbEy7LWLv5iXwK2LzKuQW23ysb1kO6I1BptQ0FE5awFxIDb1erwdUwS3mubn2ega3z+4ZQMwgUsmvJ062lfibC34SZifdyJcjamr+Zh99t/cFTCPUjr83lOV0zHKm70FMgqdNi7MDm76b2LSAaWGKkNJltgty5Ywhc30dKxpakQrJUkcVoOza4acTdDU5P0vMz5PyKxDStMx1Pn6Zi0/iYZODtW1b517JuydzrgGmHoSSYNb/X6RWjVYe21+jk98p76G16lsufNeHKGOKjnPMIvhAGhs6VJ6MXz23Pco1S68NajGZwNx+dvJNrkolm2tjRfn/A6apiBrVca/z5PJ4NdjfgYtpMa/pePPGtTe5uErob4XExH9kj8dCaKUlnccGqMfZzsUV9N5834Xv3QcGZ2dZBph2CXlmSBssch/m7Td6J2yqyRw1Zk/4tO+nhJLDlZ6Gi8FvlN+DxBll3GYzMdG3VJq2ZAW31bTQJiIQm0RxS/wRvQHGfdCFGeOFRrN60OcSz6Og1BcKnvh/AAAA//+L8+RX2RkAAA==\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri3Count')]", + "name": "[variables('agentpri3VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri3VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri4StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri4VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri4VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri4VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri4VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri4Count')]", + "name": "[variables('agentpri4VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri4VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri5StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri5VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri5VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri5VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri5VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri5Count')]", + "name": "[variables('agentpri5VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri5VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri6StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri6VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri6VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri6VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri6VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri6Count')]", + "name": "[variables('agentpri6VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri6VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri7StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri7VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri7VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri7VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri7VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri7Count')]", + "name": "[variables('agentpri7VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri7VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri8StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri8VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri8VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri8VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri8VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri8Count')]", + "name": "[variables('agentpri8VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri8VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri9StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri9VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri9VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri9VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri9VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri9Count')]", + "name": "[variables('agentpri9VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri9VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri10StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri10VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri10VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpri10VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpri10VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpri10Count')]", + "name": "[variables('agentpri10VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri10VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpublic1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpublic1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpublic1IPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpublic1EndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpublic1IPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agentpublic1LbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpublic1LbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpublic1LbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpublic1IPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublic1LbID'), '/backendAddressPools/', variables('agentpublic1LbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublic1LbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublic1LbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublic1LbID'), '/backendAddressPools/', variables('agentpublic1LbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublic1LbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublic1LbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublic1LbID'), '/backendAddressPools/', variables('agentpublic1LbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublic1LbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublic1LbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName'))]", + "[variables('vnetID')]", + "[variables('agentpublic1LbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpublic1VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpublic1LbID'), '/backendAddressPools/', variables('agentpublic1LbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpublic1VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpublic1VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpublic1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublic1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpublic1Count')]", + "name": "[variables('agentpublic1VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpublic1VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpri0Subnet')]", + "[variables('agentpri1Subnet')]", + "[variables('agentpri2Subnet')]", + "[variables('agentpri3Subnet')]", + "[variables('agentpri4Subnet')]", + "[variables('agentpri5Subnet')]", + "[variables('agentpri6Subnet')]", + "[variables('agentpri7Subnet')]", + "[variables('agentpri8Subnet')]", + "[variables('agentpri9Subnet')]", + "[variables('agentpri10Subnet')]", + "[variables('agentpublic1Subnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpri0SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri0Subnet')]" + } + }, + { + "name": "[variables('agentpri1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri1Subnet')]" + } + }, + { + "name": "[variables('agentpri2SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri2Subnet')]" + } + }, + { + "name": "[variables('agentpri3SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri3Subnet')]" + } + }, + { + "name": "[variables('agentpri4SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri4Subnet')]" + } + }, + { + "name": "[variables('agentpri5SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri5Subnet')]" + } + }, + { + "name": "[variables('agentpri6SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri6Subnet')]" + } + }, + { + "name": "[variables('agentpri7SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri7Subnet')]" + } + }, + { + "name": "[variables('agentpri8SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri8Subnet')]" + } + }, + { + "name": "[variables('agentpri9SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri9Subnet')]" + } + }, + { + "name": "[variables('agentpri10SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri10Subnet')]" + } + }, + { + "name": "[variables('agentpublic1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpublic1Subnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpublic1FQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpublic1IPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmmode_expected_params.json b/pkg/acsengine/testdata/largeclusters/swarmmode_expected_params.json new file mode 100644 index 000000000..d89bdb380 --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmode_expected_params.json @@ -0,0 +1,131 @@ +{ + "agentpri0Count": { + "value": 100 + }, + "agentpri0Subnet": { + "value": "10.0.0.0/16" + }, + "agentpri0VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri10Count": { + "value": 100 + }, + "agentpri10Subnet": { + "value": "10.10.0.0/16" + }, + "agentpri10VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri1Count": { + "value": 100 + }, + "agentpri1Subnet": { + "value": "10.1.0.0/16" + }, + "agentpri1VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri2Count": { + "value": 100 + }, + "agentpri2Subnet": { + "value": "10.2.0.0/16" + }, + "agentpri2VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri3Count": { + "value": 100 + }, + "agentpri3Subnet": { + "value": "10.3.0.0/16" + }, + "agentpri3VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri4Count": { + "value": 100 + }, + "agentpri4Subnet": { + "value": "10.4.0.0/16" + }, + "agentpri4VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri5Count": { + "value": 100 + }, + "agentpri5Subnet": { + "value": "10.5.0.0/16" + }, + "agentpri5VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri6Count": { + "value": 100 + }, + "agentpri6Subnet": { + "value": "10.6.0.0/16" + }, + "agentpri6VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri7Count": { + "value": 100 + }, + "agentpri7Subnet": { + "value": "10.7.0.0/16" + }, + "agentpri7VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri8Count": { + "value": 100 + }, + "agentpri8Subnet": { + "value": "10.8.0.0/16" + }, + "agentpri8VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri9Count": { + "value": 100 + }, + "agentpri9Subnet": { + "value": "10.9.0.0/16" + }, + "agentpri9VMSize": { + "value": "Standard_D2_v2" + }, + "agentpublic1Count": { + "value": 100 + }, + "agentpublic1EndpointDNSNamePrefix": { + "value": "agentpublic1" + }, + "agentpublic1Subnet": { + "value": "10.11.0.0/16" + }, + "agentpublic1VMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8fhkh3jpHUQsrUIezFB5k4Rq9giJM8G1Cr0u2IRMiqG++nat5hbOr3gODpTA0h11q9bzb6nJtK7NtDzIHx+w3YNIVpcTGLiUEsfUbY53IHg7Nl/p3/gkST3g0R6BSL7Hg45SfyvpH7kwY30MoVHG/6P3go4SKlYoHXlgaaNr3fMwUTIeE9ofvyS3fcr6xxlsoB6luKuEs50h0NGsE4QEnbfSY4Yd/C1ucc3mEw+QFXBIsENHfHfZYrLNHm2L8MXYVmAH8k//5sFs4Migln9GiUgEQUT6uOjowsZyXBbXwfT11og+syPkAq4eqjiC76r0w6faVihdBYVoc/UcyupgH azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmmodevmas.json b/pkg/acsengine/testdata/largeclusters/swarmmodevmas.json new file mode 100644 index 000000000..1e47d7a98 --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmodevmas.json @@ -0,0 +1,97 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpri0", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri1", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri2", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri3", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri4", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri5", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri6", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri7", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri8", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri9", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri10", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + }, + { + "name": "agentpri11", + "count": 1, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "AvailabilitySet" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8fhkh3jpHUQsrUIezFB5k4Rq9giJM8G1Cr0u2IRMiqG++nat5hbOr3gODpTA0h11q9bzb6nJtK7NtDzIHx+w3YNIVpcTGLiUEsfUbY53IHg7Nl/p3/gkST3g0R6BSL7Hg45SfyvpH7kwY30MoVHG/6P3go4SKlYoHXlgaaNr3fMwUTIeE9ofvyS3fcr6xxlsoB6luKuEs50h0NGsE4QEnbfSY4Yd/C1ucc3mEw+QFXBIsENHfHfZYrLNHm2L8MXYVmAH8k//5sFs4Migln9GiUgEQUT6uOjowsZyXBbXwfT11og+syPkAq4eqjiC76r0w6faVihdBYVoc/UcyupgH azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected.json b/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected.json new file mode 100644 index 000000000..b763fa834 --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected.json @@ -0,0 +1,4759 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpri0Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri0Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri0'." + }, + "type": "string" + }, + "agentpri0VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri10Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri10Subnet": { + "defaultValue": "10.10.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri10'." + }, + "type": "string" + }, + "agentpri10VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri11Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri11Subnet": { + "defaultValue": "10.11.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri11'." + }, + "type": "string" + }, + "agentpri11VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri1Subnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri1'." + }, + "type": "string" + }, + "agentpri1VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri2Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri2Subnet": { + "defaultValue": "10.2.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri2'." + }, + "type": "string" + }, + "agentpri2VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri3Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri3Subnet": { + "defaultValue": "10.3.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri3'." + }, + "type": "string" + }, + "agentpri3VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri4Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri4Subnet": { + "defaultValue": "10.4.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri4'." + }, + "type": "string" + }, + "agentpri4VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri5Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri5Subnet": { + "defaultValue": "10.5.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri5'." + }, + "type": "string" + }, + "agentpri5VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri6Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri6Subnet": { + "defaultValue": "10.6.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri6'." + }, + "type": "string" + }, + "agentpri6VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri7Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri7Subnet": { + "defaultValue": "10.7.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri7'." + }, + "type": "string" + }, + "agentpri7VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri8Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri8Subnet": { + "defaultValue": "10.8.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri8'." + }, + "type": "string" + }, + "agentpri8VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpri9Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpri9Subnet": { + "defaultValue": "10.9.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpri9'." + }, + "type": "string" + }, + "agentpri9VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpri0AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentpri0AvailabilitySet": "[concat('agentpri0-availabilitySet-', variables('nameSuffix'))]", + "agentpri0Count": "[parameters('agentpri0Count')]", + "agentpri0StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentpri0StorageAccountsCount": "[add(div(variables('agentpri0Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri0Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri0Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri0Subnet": "[parameters('agentpri0Subnet')]", + "agentpri0SubnetName": "[concat(variables('orchestratorName'), '-agentpri0subnet')]", + "agentpri0VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri0-', variables('nameSuffix'))]", + "agentpri0VMSize": "[parameters('agentpri0VMSize')]", + "agentpri0VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri0SubnetName'))]", + "agentpri10AccountName": "[concat(variables('storageAccountBaseName'), 'agnt10')]", + "agentpri10AvailabilitySet": "[concat('agentpri10-availabilitySet-', variables('nameSuffix'))]", + "agentpri10Count": "[parameters('agentpri10Count')]", + "agentpri10StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),10)]", + "agentpri10StorageAccountsCount": "[add(div(variables('agentpri10Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri10Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri10Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri10Subnet": "[parameters('agentpri10Subnet')]", + "agentpri10SubnetName": "[concat(variables('orchestratorName'), '-agentpri10subnet')]", + "agentpri10VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri10-', variables('nameSuffix'))]", + "agentpri10VMSize": "[parameters('agentpri10VMSize')]", + "agentpri10VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri10SubnetName'))]", + "agentpri11AccountName": "[concat(variables('storageAccountBaseName'), 'agnt11')]", + "agentpri11AvailabilitySet": "[concat('agentpri11-availabilitySet-', variables('nameSuffix'))]", + "agentpri11Count": "[parameters('agentpri11Count')]", + "agentpri11StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),11)]", + "agentpri11StorageAccountsCount": "[add(div(variables('agentpri11Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri11Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri11Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri11Subnet": "[parameters('agentpri11Subnet')]", + "agentpri11SubnetName": "[concat(variables('orchestratorName'), '-agentpri11subnet')]", + "agentpri11VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri11-', variables('nameSuffix'))]", + "agentpri11VMSize": "[parameters('agentpri11VMSize')]", + "agentpri11VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri11SubnetName'))]", + "agentpri1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agentpri1AvailabilitySet": "[concat('agentpri1-availabilitySet-', variables('nameSuffix'))]", + "agentpri1Count": "[parameters('agentpri1Count')]", + "agentpri1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agentpri1StorageAccountsCount": "[add(div(variables('agentpri1Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri1Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri1Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri1Subnet": "[parameters('agentpri1Subnet')]", + "agentpri1SubnetName": "[concat(variables('orchestratorName'), '-agentpri1subnet')]", + "agentpri1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri1-', variables('nameSuffix'))]", + "agentpri1VMSize": "[parameters('agentpri1VMSize')]", + "agentpri1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri1SubnetName'))]", + "agentpri2AccountName": "[concat(variables('storageAccountBaseName'), 'agnt2')]", + "agentpri2AvailabilitySet": "[concat('agentpri2-availabilitySet-', variables('nameSuffix'))]", + "agentpri2Count": "[parameters('agentpri2Count')]", + "agentpri2StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),2)]", + "agentpri2StorageAccountsCount": "[add(div(variables('agentpri2Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri2Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri2Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri2Subnet": "[parameters('agentpri2Subnet')]", + "agentpri2SubnetName": "[concat(variables('orchestratorName'), '-agentpri2subnet')]", + "agentpri2VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri2-', variables('nameSuffix'))]", + "agentpri2VMSize": "[parameters('agentpri2VMSize')]", + "agentpri2VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri2SubnetName'))]", + "agentpri3AccountName": "[concat(variables('storageAccountBaseName'), 'agnt3')]", + "agentpri3AvailabilitySet": "[concat('agentpri3-availabilitySet-', variables('nameSuffix'))]", + "agentpri3Count": "[parameters('agentpri3Count')]", + "agentpri3StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),3)]", + "agentpri3StorageAccountsCount": "[add(div(variables('agentpri3Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri3Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri3Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri3Subnet": "[parameters('agentpri3Subnet')]", + "agentpri3SubnetName": "[concat(variables('orchestratorName'), '-agentpri3subnet')]", + "agentpri3VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri3-', variables('nameSuffix'))]", + "agentpri3VMSize": "[parameters('agentpri3VMSize')]", + "agentpri3VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri3SubnetName'))]", + "agentpri4AccountName": "[concat(variables('storageAccountBaseName'), 'agnt4')]", + "agentpri4AvailabilitySet": "[concat('agentpri4-availabilitySet-', variables('nameSuffix'))]", + "agentpri4Count": "[parameters('agentpri4Count')]", + "agentpri4StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),4)]", + "agentpri4StorageAccountsCount": "[add(div(variables('agentpri4Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri4Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri4Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri4Subnet": "[parameters('agentpri4Subnet')]", + "agentpri4SubnetName": "[concat(variables('orchestratorName'), '-agentpri4subnet')]", + "agentpri4VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri4-', variables('nameSuffix'))]", + "agentpri4VMSize": "[parameters('agentpri4VMSize')]", + "agentpri4VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri4SubnetName'))]", + "agentpri5AccountName": "[concat(variables('storageAccountBaseName'), 'agnt5')]", + "agentpri5AvailabilitySet": "[concat('agentpri5-availabilitySet-', variables('nameSuffix'))]", + "agentpri5Count": "[parameters('agentpri5Count')]", + "agentpri5StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),5)]", + "agentpri5StorageAccountsCount": "[add(div(variables('agentpri5Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri5Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri5Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri5Subnet": "[parameters('agentpri5Subnet')]", + "agentpri5SubnetName": "[concat(variables('orchestratorName'), '-agentpri5subnet')]", + "agentpri5VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri5-', variables('nameSuffix'))]", + "agentpri5VMSize": "[parameters('agentpri5VMSize')]", + "agentpri5VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri5SubnetName'))]", + "agentpri6AccountName": "[concat(variables('storageAccountBaseName'), 'agnt6')]", + "agentpri6AvailabilitySet": "[concat('agentpri6-availabilitySet-', variables('nameSuffix'))]", + "agentpri6Count": "[parameters('agentpri6Count')]", + "agentpri6StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),6)]", + "agentpri6StorageAccountsCount": "[add(div(variables('agentpri6Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri6Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri6Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri6Subnet": "[parameters('agentpri6Subnet')]", + "agentpri6SubnetName": "[concat(variables('orchestratorName'), '-agentpri6subnet')]", + "agentpri6VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri6-', variables('nameSuffix'))]", + "agentpri6VMSize": "[parameters('agentpri6VMSize')]", + "agentpri6VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri6SubnetName'))]", + "agentpri7AccountName": "[concat(variables('storageAccountBaseName'), 'agnt7')]", + "agentpri7AvailabilitySet": "[concat('agentpri7-availabilitySet-', variables('nameSuffix'))]", + "agentpri7Count": "[parameters('agentpri7Count')]", + "agentpri7StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),7)]", + "agentpri7StorageAccountsCount": "[add(div(variables('agentpri7Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri7Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri7Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri7Subnet": "[parameters('agentpri7Subnet')]", + "agentpri7SubnetName": "[concat(variables('orchestratorName'), '-agentpri7subnet')]", + "agentpri7VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri7-', variables('nameSuffix'))]", + "agentpri7VMSize": "[parameters('agentpri7VMSize')]", + "agentpri7VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri7SubnetName'))]", + "agentpri8AccountName": "[concat(variables('storageAccountBaseName'), 'agnt8')]", + "agentpri8AvailabilitySet": "[concat('agentpri8-availabilitySet-', variables('nameSuffix'))]", + "agentpri8Count": "[parameters('agentpri8Count')]", + "agentpri8StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),8)]", + "agentpri8StorageAccountsCount": "[add(div(variables('agentpri8Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri8Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri8Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri8Subnet": "[parameters('agentpri8Subnet')]", + "agentpri8SubnetName": "[concat(variables('orchestratorName'), '-agentpri8subnet')]", + "agentpri8VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri8-', variables('nameSuffix'))]", + "agentpri8VMSize": "[parameters('agentpri8VMSize')]", + "agentpri8VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri8SubnetName'))]", + "agentpri9AccountName": "[concat(variables('storageAccountBaseName'), 'agnt9')]", + "agentpri9AvailabilitySet": "[concat('agentpri9-availabilitySet-', variables('nameSuffix'))]", + "agentpri9Count": "[parameters('agentpri9Count')]", + "agentpri9StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),9)]", + "agentpri9StorageAccountsCount": "[add(div(variables('agentpri9Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('agentpri9Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('agentpri9Count'), variables('maxVMsPerStorageAccount')),1)))]", + "agentpri9Subnet": "[parameters('agentpri9Subnet')]", + "agentpri9SubnetName": "[concat(variables('orchestratorName'), '-agentpri9subnet')]", + "agentpri9VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpri9-', variables('nameSuffix'))]", + "agentpri9VMSize": "[parameters('agentpri9VMSize')]", + "agentpri9VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpri9SubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri0Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri0VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri0VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri0StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri0VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri0AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri0Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri0VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri0AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri0VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri0AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri0VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri0VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri0VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri0VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri0StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri0AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri0VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri0VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri1Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri1VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri1VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri1AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri1Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri1VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri1AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri1VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri1AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri1VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri1VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri1VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xZe3PbNhL/H59iS2tqOw1FSWkuU2eUG8dWzp6rLY9ld24uTmOIXFk4U4ACgH7U1Xe/wYsPWUrcNpmpMglJcIH97S5+i11m47tkzHgypmpKyMaf/5EN2BN8wq4KiTC6pXIGRyJDGHKEt+KOGIGzKVPAuNI0zxXoKcJE5Lm4ZfwKUjGbC45cK7IBMeyL9Bpl7Rb2jIBCO1Rbf0aVRqmWh+mVW+ovGEQUaojvCMF0KiBSmkptkNa0pHlhtEPqLaeaCR6RjGokcwX0jpD94d6/B6cf94ZHJ8PR4OMvg9PR4fC4H3XbP7U7EVn24QmVdIbOoiaao93R2eB0b3h+fNZvPXQXfuDkdPDu8D/91kMvjLw7PB2d7e7vn/ZbDy8WZPe/56eD89HAPP64ICfD0dnh8ehs9+efR3unhydn56eH/dbDywV5uzsajM7fHg/M+v9YkF+OjnePBv3LqVCa0xlempHzo7eD0/6ldUnLScDvoDCDTZW0n73/tRP/9OFi6729/HCx/ayVXHSTTTPXI10z92KrnL39zE8Pc30EjmyoYU8UXO9Aq+aQqClxInHC7koRp3hJ5h2TSsNulslSrnRcEL2ZGbt3AtgwHNzgXtjb5xDss4NNjZVjd6BVPYTXZYB2oFXeRyvJaEk2mwkO7wqems22cosTglwVEnd/KyQeo74V8nprmzwQgA1wryz7uHsF5h9FIDwfIM319L7fJQATIYEB4/DQbbe7vcVryAQBALi9MuwYJhneJLzIc5hqPd9JTDK5aqdiZoXYBN5D658Q4yfowAc7pqfI7Y0BE/YWTKmCMSKHiSh4ZgilGS/QCy4B6/hh57+6JUzB1AlFXmYskV7b+wmzF5UjzqFr1sgENxocyqYOiDl6yCXgleq40EHlc6Bj4XKET3KR94LLD+5hDtStdsc09IjH1YiL8YoRTCkHiUrkN/ik6HSq8JSOjdnfPRLfIhAp5ebZO886PcskKvXnY7RYQSpyMPSp9rLm8EtCmHLnEnjaWcuiZj6Cfh+iKlk0TZSoC8nB+BdzhfWxbsDDJlDqeR2mBt9Yj2RoPEP9IRmRCTPQ7NlYAXu8RkPVsvpOQ71d6/PauTuMnXbngc7hifVa1Hqo8uGi9bCUhxers6BLhCG2CvOJocD+8WidsE+0rRCtMqGb46fIBGhEiCkkqNPEBFI91ks24NBtmLI2WaPGi5ktRh2BbG1gnt3MiBC/99yzD0WTzJ3lVBtryVDBjxDHErW8j1PBucRJYQ7QOL6lTNvxfvclxJ+GsU3IaidJrlC3M6vI5GVj8vSrpgRnta/SvGGYgSrSFJWaFHn+9GS8IJrNEBruIcTGqFAoZyKDmP4LnDm14zL4/nyeUV15GjKK5rQUc3tWRoQURgDd2337cuje+SCA2xCz64xJiOduS6h7pXGW+WvinalQ3rAU2xlx7hqZAjEoNpHPmdLIQXDY6b149RK2uABa6OlzGBfaBPqGo942on4FmisBU2oSloYx4xloYQ+EgrM7UGZlDVRDckNlIgteIhHpdYXdlPIQp7DpXPJ+5HC6AA/uMLVA+0uPSaGk7QSyhufiA9CpOdc7bfvHWRIfWEg7SbIGSgRvnuS6RNyglCzDtqHJZoj/2iit4FizPYia1PKjZfFjHRQz8i3pxvS0GBuqeWuT1IFIJOZIFaokE7c8FzRLWqu7Az8x9hPjy8KdLOqyvJ1dGg+bmOUipXktcmHWN+B4U8G34Hpo8tKpofoPd18w0WUGt7dSnftNG0s03vUv3VYLKUOi7eNChdxIwLUajOowoapjLG4ztrYCe1FtIqs7LMEn4qtGowmjszIPPyq/6ojmCmL6Rwvkhtb1ZVkFoFaRRc0aKiT21ef1uh/ZKA9Ts22YBlnkqEJMwZzNcynMTsQ/2vqT1dVUWbmF0iGCflnH+Somgg+v62GsXLEn0Z1GFDje+g8HgsPE9p6hKKtm+egoK2cNjGOa3aDUTGFsKlhobdUKzW2TjV9BHLuTZq2Ei06o4yp8I0wFz6i891iAao2zuYWsBfxPMG7KN7xjqvryUQG2OGciQy2ukfejdW92008Fk5hZwrjf+sZlzeKtLe+c+ACa7ncnkvOZQRzbCRB/ghnl9ArldmPdJQ4+itxnDeg8EqzYU5rGmnZYNr0kVYx5FQYHZrWyGsPc7xHQNUFMRZFnfFMbsnBMtQmljdy63qdcL3Q7jwxpbEy7LWLv5iXwK2LzKuQW23ysb1kO6I1BptQ0FE5awFxIDb1erwdUwS3mubn2ega3z+4ZQMwgUsmvJ062lfibC34SZifdyJcjamr+Zh99t/cFTCPUjr83lOV0zHKm70FMgqdNi7MDm76b2LSAaWGKkNJltgty5Ywhc30dKxpakQrJUkcVoOza4acTdDU5P0vMz5PyKxDStMx1Pn6Zi0/iYZODtW1b517JuydzrgGmHoSSYNb/X6RWjVYe21+jk98p76G16lsufNeHKGOKjnPMIvhAGhs6VJ6MXz23Pco1S68NajGZwNx+dvJNrkolm2tjRfn/A6apiBrVca/z5PJ4NdjfgYtpMa/pePPGtTe5uErob4XExH9kj8dCaKUlnccGqMfZzsUV9N5834Xv3QcGZ2dZBph2CXlmSBssch/m7Td6J2yqyRw1Zk/4tO+nhJLDlZ6Gi8FvlN+DxBll3GYzMdG3VJq2ZAW31bTQJiIQm0RxS/wRvQHGfdCFGeOFRrN60OcSz6Og1BcKnvh/AAAA//+L8+RX2RkAAA==\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri1VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri1AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri1VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri1VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri2Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri2VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri2VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri2StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri2VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri2AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri2Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri2VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri2AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri2VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri2AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri2VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri2VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri2VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri2VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri2AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri2VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri2VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri3Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri3VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri3VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri3StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri3VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri3AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri3Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri3VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri3AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri3VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri3AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri3VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri3VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri3VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri3VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri3StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri3AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri3VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri3VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri4Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri4VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri4VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri4StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri4VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri4AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri4Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri4VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri4AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri4VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri4AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri4VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri4VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri4VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri4VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri4StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri4AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri4VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri4VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri5Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri5VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri5VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri5StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri5VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri5AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri5Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri5VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri5AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri5VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri5AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri5VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri5VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri5VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri5VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri5StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri5AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri5VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri5VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri6Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri6VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri6VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri6StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri6VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri6AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri6Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri6VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri6AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri6VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri6AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri6VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri6VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri6VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri6VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri6StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri6AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri6VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri6VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri7Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri7VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri7VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri7StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri7VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri7AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri7Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri7VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri7AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri7VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri7AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri7VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri7VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri7VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri7VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri7StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri7AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri7VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri7VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri8Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri8VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri8VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri8StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri8VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri8AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri8Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri8VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri8AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri8VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri8AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri8VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri8VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri8VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri8VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri8StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri8AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri8VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri8VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri9Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri9VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri9VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri9StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri9VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri9AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri9Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri9VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri9AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri9VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri9AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri9VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri9VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri9VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri9VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri9StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri9AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri9VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri9VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri10Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri10VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri10VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri10StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri10VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri10AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri10Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri10VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri10AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri10VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri10AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri10VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri10VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri10VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri10VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri10StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri10AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri10VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri10VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri11Count')]", + "name": "loop" + }, + "dependsOn": [ + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri11VMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "privateIPAllocationMethod": "Dynamic", + "subnet": { + "id": "[variables('agentpri11VnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpri11StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri11AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpri11VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpri11AvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('agentpri11Count')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri11AccountName'))]", + "[concat('Microsoft.Network/networkInterfaces/', variables('agentpri11VMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/', variables('agentpri11AvailabilitySet'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpri11VMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('agentpri11AvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('agentpri11VMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('agentpri11VMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('agentpri11VMNamePrefix'), copyIndex())]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "name": "[concat(variables('agentpri11VMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(),variables('maxVMsPerStorageAccount')),variables('agentpri11StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpri11AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('agentpri11VMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpri11VMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpri0Subnet')]", + "[variables('agentpri1Subnet')]", + "[variables('agentpri2Subnet')]", + "[variables('agentpri3Subnet')]", + "[variables('agentpri4Subnet')]", + "[variables('agentpri5Subnet')]", + "[variables('agentpri6Subnet')]", + "[variables('agentpri7Subnet')]", + "[variables('agentpri8Subnet')]", + "[variables('agentpri9Subnet')]", + "[variables('agentpri10Subnet')]", + "[variables('agentpri11Subnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpri0SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri0Subnet')]" + } + }, + { + "name": "[variables('agentpri1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri1Subnet')]" + } + }, + { + "name": "[variables('agentpri2SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri2Subnet')]" + } + }, + { + "name": "[variables('agentpri3SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri3Subnet')]" + } + }, + { + "name": "[variables('agentpri4SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri4Subnet')]" + } + }, + { + "name": "[variables('agentpri5SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri5Subnet')]" + } + }, + { + "name": "[variables('agentpri6SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri6Subnet')]" + } + }, + { + "name": "[variables('agentpri7SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri7Subnet')]" + } + }, + { + "name": "[variables('agentpri8SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri8Subnet')]" + } + }, + { + "name": "[variables('agentpri9SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri9Subnet')]" + } + }, + { + "name": "[variables('agentpri10SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri10Subnet')]" + } + }, + { + "name": "[variables('agentpri11SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpri11Subnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected_params.json b/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected_params.json new file mode 100644 index 000000000..10cbe8bff --- /dev/null +++ b/pkg/acsengine/testdata/largeclusters/swarmmodevmas_expected_params.json @@ -0,0 +1,128 @@ +{ + "agentpri0Count": { + "value": 1 + }, + "agentpri0Subnet": { + "value": "10.0.0.0/16" + }, + "agentpri0VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri10Count": { + "value": 1 + }, + "agentpri10Subnet": { + "value": "10.10.0.0/16" + }, + "agentpri10VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri11Count": { + "value": 1 + }, + "agentpri11Subnet": { + "value": "10.11.0.0/16" + }, + "agentpri11VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri1Count": { + "value": 1 + }, + "agentpri1Subnet": { + "value": "10.1.0.0/16" + }, + "agentpri1VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri2Count": { + "value": 1 + }, + "agentpri2Subnet": { + "value": "10.2.0.0/16" + }, + "agentpri2VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri3Count": { + "value": 1 + }, + "agentpri3Subnet": { + "value": "10.3.0.0/16" + }, + "agentpri3VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri4Count": { + "value": 1 + }, + "agentpri4Subnet": { + "value": "10.4.0.0/16" + }, + "agentpri4VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri5Count": { + "value": 1 + }, + "agentpri5Subnet": { + "value": "10.5.0.0/16" + }, + "agentpri5VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri6Count": { + "value": 1 + }, + "agentpri6Subnet": { + "value": "10.6.0.0/16" + }, + "agentpri6VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri7Count": { + "value": 1 + }, + "agentpri7Subnet": { + "value": "10.7.0.0/16" + }, + "agentpri7VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri8Count": { + "value": 1 + }, + "agentpri8Subnet": { + "value": "10.8.0.0/16" + }, + "agentpri8VMSize": { + "value": "Standard_D2_v2" + }, + "agentpri9Count": { + "value": 1 + }, + "agentpri9Subnet": { + "value": "10.9.0.0/16" + }, + "agentpri9VMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8fhkh3jpHUQsrUIezFB5k4Rq9giJM8G1Cr0u2IRMiqG++nat5hbOr3gODpTA0h11q9bzb6nJtK7NtDzIHx+w3YNIVpcTGLiUEsfUbY53IHg7Nl/p3/gkST3g0R6BSL7Hg45SfyvpH7kwY30MoVHG/6P3go4SKlYoHXlgaaNr3fMwUTIeE9ofvyS3fcr6xxlsoB6luKuEs50h0NGsE4QEnbfSY4Yd/C1ucc3mEw+QFXBIsENHfHfZYrLNHm2L8MXYVmAH8k//5sFs4Migln9GiUgEQUT6uOjowsZyXBbXwfT11og+syPkAq4eqjiC76r0w6faVihdBYVoc/UcyupgH azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/largeclusters/swarmvmas_expected.json b/pkg/acsengine/testdata/largeclusters/swarmvmas_expected.json index 3a86086e8..0dd32231d 100644 --- a/pkg/acsengine/testdata/largeclusters/swarmvmas_expected.json +++ b/pkg/acsengine/testdata/largeclusters/swarmvmas_expected.json @@ -2570,10 +2570,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentpri0AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", "agentpri0AvailabilitySet": "[concat('agentpri0-availabilitySet-', variables('nameSuffix'))]", "agentpri0Count": "[parameters('agentpri0Count')]", @@ -2697,10 +2697,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -2709,8 +2710,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -3101,7 +3135,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri0VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3215,7 +3249,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri1VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3329,7 +3363,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri2VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3443,7 +3477,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri3VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3557,7 +3591,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri4VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3671,7 +3705,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri5VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3785,7 +3819,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri6VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -3899,7 +3933,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri7VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4013,7 +4047,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri8VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4127,7 +4161,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri9VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4241,7 +4275,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri10VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4355,7 +4389,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('agentpri11VMNamePrefix'), copyIndex())]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -4574,6 +4608,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -4583,7 +4635,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -4597,11 +4650,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -4643,7 +4692,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/simple/swarm_expected.json b/pkg/acsengine/testdata/simple/swarm_expected.json index 22abb8a3e..7f3dd0a8a 100644 --- a/pkg/acsengine/testdata/simple/swarm_expected.json +++ b/pkg/acsengine/testdata/simple/swarm_expected.json @@ -526,10 +526,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentpool1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", "agentpool1Count": "[parameters('agentpool1Count')]", "agentpool1EndpointDNSNamePrefix": "[tolower(parameters('agentpool1EndpointDNSNamePrefix'))]", @@ -558,10 +558,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -570,8 +571,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1076,7 +1110,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1178,7 +1212,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpool2VMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1337,6 +1371,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1346,7 +1398,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1360,11 +1413,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1406,7 +1455,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/simple/swarmmode.json b/pkg/acsengine/testdata/simple/swarmmode.json new file mode 100644 index 000000000..7a79947d7 --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode.json @@ -0,0 +1,51 @@ +{ + "apiVersion": "vlabs", + "plan": {}, + "properties": { + "provisioningState": "", + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2", + "firstConsecutiveStaticIP": "172.16.0.5" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agentdns1", + "ports": [ + 80, + 443, + 8080 + ], + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "StorageAccount" + }, + { + "name": "agentpool2", + "count": 3, + "vmSize": "Standard_D2_v2", + "availabilityProfile": "VirtualMachineScaleSets", + "storageProfile": "StorageAccount" + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + }, + "windowsProfile": {}, + "servicePrincipalProfile": {}, + "certificateProfile": {} + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/simple/swarmmode_classicmode.json b/pkg/acsengine/testdata/simple/swarmmode_classicmode.json new file mode 100644 index 000000000..3cabaf42f --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode_classicmode.json @@ -0,0 +1,38 @@ +{ + "apiVersion": "vlabs", + "plan": {}, + "properties": { + "provisioningState": "", + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2" + }, + "agentPoolProfiles": [ + { + "name": "agentpool1", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agentdns1", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected.json b/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected.json new file mode 100644 index 000000000..e236636f7 --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected.json @@ -0,0 +1,1454 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentEndpointDNSNamePrefix": { + "defaultValue": "UNUSED", + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpool1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpool1EndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpool1Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpool1'." + }, + "type": "string" + }, + "agentpool1VMSize": { + "allowedValues": [ + "Basic_A0", + "Basic_A1", + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A0", + "Standard_A1", + "Standard_A1_v2", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D1", + "Standard_D1_v2", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS1", + "Standard_DS1_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F1", + "Standard_F16", + "Standard_F16s", + "Standard_F1s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "disablePasswordAuthentication": { + "defaultValue": true, + "metadata": { + "description": "This setting controls whether password auth is disabled for Linux VMs provisioned by this template. Default is true which disables password and makes SSH key required." + }, + "type": "bool" + }, + "enableNewStorageAccountNaming": { + "defaultValue": true, + "metadata": { + "description": "If true: uses DNS name prefix + Orchestrator name + Region to create storage account name to reduce name collision probability. If false: uses DNS name prefix + Orchestrator name to create storage account name to maintain template idempotency." + }, + "type": "bool" + }, + "enableVMDiagnostics": { + "defaultValue": true, + "metadata": { + "description": "Allows user to enable/disable boot & vm diagnostics." + }, + "type": "bool" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "isValidation": { + "allowedValues": [ + 0, + 1 + ], + "defaultValue": 0, + "metadata": { + "description": "This is testing in the validation region" + }, + "type": "int" + }, + "jumpboxEndpointDNSNamePrefix": { + "defaultValue": "UNUSED", + "metadata": { + "description": "Sets the Domain name label for the jumpbox. The concatenation of the domain name label and the regionalized DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "linuxAdminPassword": { + "defaultValue": "UNUSED", + "metadata": { + "description": "Password for the Linux Virtual Machine. Not Required. If not set, you must provide a SSH key." + }, + "type": "securestring" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "linuxOffer": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the offer of the image used by the linux cluster" + }, + "type": "string" + }, + "linuxPublisher": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the publisher of the image used by the linux cluster" + }, + "type": "string" + }, + "linuxSku": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the linux sku used by the linux cluster" + }, + "type": "string" + }, + "linuxVersion": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the linux version used by the linux cluster" + }, + "type": "string" + }, + "masterCount": { + "allowedValues": [ + 1, + 3, + 5 + ], + "defaultValue": 1, + "metadata": { + "description": "The number of Mesos masters for the cluster." + }, + "type": "int" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A0", + "Basic_A1", + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A0", + "Standard_A1", + "Standard_A1_v2", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D1", + "Standard_D1_v2", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS1", + "Standard_DS1_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F1", + "Standard_F16", + "Standard_F16s", + "Standard_F1s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "oauthEnabled": { + "allowedValues": [ + "true", + "false" + ], + "defaultValue": "false", + "metadata": { + "description": "Enable OAuth authentication" + }, + "type": "string" + }, + "postInstallScriptURI": { + "defaultValue": "disabled", + "metadata": { + "description": "After installation, this specifies a script to download and install. To disabled, set value to 'disabled'." + }, + "type": "string" + }, + "setLinuxConfigurationForVMCreate": { + "allowedValues": [ + 0, + 1 + ], + "defaultValue": 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." + }, + "type": "int" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + }, + "vmsPerStorageAccount": { + "defaultValue": 5, + "metadata": { + "description": "This specifies the number of VMs per storage accounts" + }, + "type": "int" + }, + "windowsAdminPassword": { + "defaultValue": "UNUSED", + "metadata": { + "description": "Password for the Windows Virtual Machine." + }, + "type": "securestring" + }, + "windowsAdminUsername": { + "defaultValue": "UNUSED", + "metadata": { + "description": "User name for the Windows Virtual Machine (Password Only Supported)." + }, + "type": "string" + }, + "windowsJumpboxOffer": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the windows offer used by the windows" + }, + "type": "string" + }, + "windowsJumpboxPublisher": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the windows publisher used by the windows" + }, + "type": "string" + }, + "windowsJumpboxSku": { + "defaultValue": "UNUSED", + "metadata": { + "description": "This is the windows sku used by the windows" + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpool1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentpool1Count": "[parameters('agentpool1Count')]", + "agentpool1EndpointDNSNamePrefix": "[tolower(parameters('agentpool1EndpointDNSNamePrefix'))]", + "agentpool1IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpool1EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpool1LbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpool1LbName'))]", + "agentpool1LbIPConfigID": "[concat(variables('agentpool1LbID'),'/frontendIPConfigurations/', variables('agentpool1LbIPConfigName'))]", + "agentpool1LbIPConfigName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentpool1StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpool1Subnet": "[parameters('agentpool1Subnet')]", + "agentpool1SubnetName": "[concat(variables('orchestratorName'), '-agentpool1subnet')]", + "agentpool1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1VMSize": "[parameters('agentpool1VMSize')]", + "agentpool1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpool1SubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": "[parameters('masterCount')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A0": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A1": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A0": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A1_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D1_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS1_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F1s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpool1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpool1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1IPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpool1EndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1LbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpool1LbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpool1LbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpool1IPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[variables('vnetID')]", + "[variables('agentpool1LbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpool1VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpool1VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpool1Count')]", + "name": "[variables('agentpool1VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpool1VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpool1Subnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpool1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpool1Subnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpool1FQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))).dnsSettings.fqdn]" + }, + "diagnosticsStorageAccountUri": { + "type": "string", + "value": "" + }, + "jumpboxFQDN": { + "type": "string", + "value": "" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected_params.json b/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected_params.json new file mode 100644 index 000000000..e53a18429 --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode_classicmode_expected_params.json @@ -0,0 +1,35 @@ +{ + "agentpool1Count": { + "value": 3 + }, + "agentpool1EndpointDNSNamePrefix": { + "value": "agentdns1" + }, + "agentpool1Subnet": { + "value": "10.0.0.0/16" + }, + "agentpool1VMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterCount": { + "value": 3 + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/simple/swarmmode_expected.json b/pkg/acsengine/testdata/simple/swarmmode_expected.json new file mode 100644 index 000000000..02a11dcf6 --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode_expected.json @@ -0,0 +1,1526 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentpool1Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpool1EndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpool1Subnet": { + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpool1'." + }, + "type": "string" + }, + "agentpool1VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpool2Count": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpool2Subnet": { + "defaultValue": "10.1.0.0/16", + "metadata": { + "description": "Sets the subnet of agent pool 'agentpool2'." + }, + "type": "string" + }, + "agentpool2VMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "172.16.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterSubnet": { + "defaultValue": "172.16.0.0/24", + "metadata": { + "description": "Sets the subnet of the master node(s)." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentpool1AccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentpool1Count": "[parameters('agentpool1Count')]", + "agentpool1EndpointDNSNamePrefix": "[tolower(parameters('agentpool1EndpointDNSNamePrefix'))]", + "agentpool1IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpool1EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpool1LbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpool1LbName'))]", + "agentpool1LbIPConfigID": "[concat(variables('agentpool1LbID'),'/frontendIPConfigurations/', variables('agentpool1LbIPConfigName'))]", + "agentpool1LbIPConfigName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1LbName": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentpool1StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpool1Subnet": "[parameters('agentpool1Subnet')]", + "agentpool1SubnetName": "[concat(variables('orchestratorName'), '-agentpool1subnet')]", + "agentpool1VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpool1-', variables('nameSuffix'))]", + "agentpool1VMSize": "[parameters('agentpool1VMSize')]", + "agentpool1VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpool1SubnetName'))]", + "agentpool2AccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agentpool2Count": "[parameters('agentpool2Count')]", + "agentpool2StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agentpool2StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpool2Subnet": "[parameters('agentpool2Subnet')]", + "agentpool2SubnetName": "[concat(variables('orchestratorName'), '-agentpool2subnet')]", + "agentpool2VMNamePrefix": "[concat(variables('orchestratorName'), '-agentpool2-', variables('nameSuffix'))]", + "agentpool2VMSize": "[parameters('agentpool2VMSize')]", + "agentpool2VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('agentpool2SubnetName'))]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterSubnet": "[parameters('masterSubnet')]", + "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20, + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]" + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpool1StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpool1VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1IPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpool1EndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agentpool1LbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpool1LbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpool1LbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpool1IPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpool1LbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpool1LbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName'))]", + "[variables('vnetID')]", + "[variables('agentpool1LbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpool1VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpool1LbID'), '/backendAddressPools/', variables('agentpool1LbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpool1VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpool1VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool1StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool1AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpool1Count')]", + "name": "[variables('agentpool1VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpool1VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpool2StorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpool2VMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName'))]", + "[variables('vnetID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpool2VMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentpool2VnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpool2VMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpool2StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpool2AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpool2Count')]", + "name": "[variables('agentpool2VMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpool2VMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('virtualNetworkName')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('masterSubnet')]", + "[variables('agentpool1Subnet')]", + "[variables('agentpool2Subnet')]" + ] + }, + "subnets": [ + { + "name": "[variables('masterSubnetName')]", + "properties": { + "addressPrefix": "[variables('masterSubnet')]" + } + }, + { + "name": "[variables('agentpool1SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpool1Subnet')]" + } + }, + { + "name": "[variables('agentpool2SubnetName')]", + "properties": { + "addressPrefix": "[variables('agentpool2Subnet')]" + } + } + ] + }, + "type": "Microsoft.Network/virtualNetworks" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('vnetID')]", + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpool1FQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpool1IPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/simple/swarmmode_expected_params.json b/pkg/acsengine/testdata/simple/swarmmode_expected_params.json new file mode 100644 index 000000000..0a3471a20 --- /dev/null +++ b/pkg/acsengine/testdata/simple/swarmmode_expected_params.json @@ -0,0 +1,41 @@ +{ + "agentpool1Count": { + "value": 3 + }, + "agentpool1EndpointDNSNamePrefix": { + "value": "agentdns1" + }, + "agentpool1Subnet": { + "value": "10.0.0.0/16" + }, + "agentpool1VMSize": { + "value": "Standard_D2_v2" + }, + "agentpool2Count": { + "value": 3 + }, + "agentpool2Subnet": { + "value": "10.1.0.0/16" + }, + "agentpool2VMSize": { + "value": "Standard_D2_v2" + }, + "firstConsecutiveStaticIP": { + "value": "172.16.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterSubnet": { + "value": "172.16.0.0/24" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/vnet/swarmmodevnet.json b/pkg/acsengine/testdata/vnet/swarmmodevnet.json new file mode 100644 index 000000000..d830ab524 --- /dev/null +++ b/pkg/acsengine/testdata/vnet/swarmmodevnet.json @@ -0,0 +1,45 @@ +{ + "apiVersion": "vlabs", + "properties": { + "orchestratorProfile": { + "orchestratorType": "DockerCE" + }, + "masterProfile": { + "count": 3, + "dnsPrefix": "masterdns1", + "vmSize": "Standard_D2_v2", + "vnetSubnetId": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleMasterSubnet", + "firstConsecutiveStaticIP": "10.100.0.5" + }, + "agentPoolProfiles": [ + { + "name": "agentprivate", + "count": 3, + "vmSize": "Standard_D2_v2", + "vnetSubnetId": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet" + }, + { + "name": "agentpublic", + "count": 3, + "vmSize": "Standard_D2_v2", + "dnsPrefix": "agentpublic", + "vnetSubnetId": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet", + "ports": [ + 80, + 443, + 8080 + ] + } + ], + "linuxProfile": { + "adminUsername": "azureuser", + "ssh": { + "publicKeys": [ + { + "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } + ] + } + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/vnet/swarmmodevnet_expected.json b/pkg/acsengine/testdata/vnet/swarmmodevnet_expected.json new file mode 100644 index 000000000..42c3145e0 --- /dev/null +++ b/pkg/acsengine/testdata/vnet/swarmmodevnet_expected.json @@ -0,0 +1,1477 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "agentprivateCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentprivateVMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentprivateVnetSubnetID": { + "metadata": { + "description": "Sets the vnet subnet of agent pool 'agentprivate'." + }, + "type": "string" + }, + "agentpublicCount": { + "allowedValues": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100 + ], + "metadata": { + "description": "The number of agents for the cluster. This value can be from 1 to 100" + }, + "type": "int" + }, + "agentpublicEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the agent pool IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "agentpublicVMSize": { + "allowedValues": [ + "Basic_A2", + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A2_v2", + "Standard_A2m_v2", + "Standard_A3", + "Standard_A4", + "Standard_A4_v2", + "Standard_A4m_v2", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A8_v2", + "Standard_A8m_v2", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS11", + "Standard_DS11_v2", + "Standard_DS12", + "Standard_DS12_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS2", + "Standard_DS2_v2", + "Standard_DS3", + "Standard_DS3_v2", + "Standard_DS4", + "Standard_DS4_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F16s", + "Standard_F2", + "Standard_F2s", + "Standard_F4", + "Standard_F4s", + "Standard_F8", + "Standard_F8s", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS1", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "agentpublicVnetSubnetID": { + "metadata": { + "description": "Sets the vnet subnet of agent pool 'agentpublic'." + }, + "type": "string" + }, + "firstConsecutiveStaticIP": { + "defaultValue": "10.100.0.5", + "metadata": { + "description": "Sets the static IP of the first master" + }, + "type": "string" + }, + "linuxAdminUsername": { + "metadata": { + "description": "User name for the Linux Virtual Machines (SSH or Password)." + }, + "type": "string" + }, + "masterEndpointDNSNamePrefix": { + "metadata": { + "description": "Sets the Domain name label for the master IP Address. The concatenation of the domain name label and the regional DNS zone make up the fully qualified domain name associated with the public IP address." + }, + "type": "string" + }, + "masterVMSize": { + "allowedValues": [ + "Basic_A3", + "Basic_A4", + "Standard_A10", + "Standard_A11", + "Standard_A2", + "Standard_A3", + "Standard_A4", + "Standard_A5", + "Standard_A6", + "Standard_A7", + "Standard_A8", + "Standard_A9", + "Standard_D11", + "Standard_D11_v2", + "Standard_D12", + "Standard_D12_v2", + "Standard_D13", + "Standard_D13_v2", + "Standard_D14", + "Standard_D14_v2", + "Standard_D15_v2", + "Standard_D2", + "Standard_D2_v2", + "Standard_D3", + "Standard_D3_v2", + "Standard_D4", + "Standard_D4_v2", + "Standard_D5_v2", + "Standard_DS13", + "Standard_DS13_v2", + "Standard_DS14", + "Standard_DS14_v2", + "Standard_DS15_v2", + "Standard_DS5_v2", + "Standard_F16", + "Standard_F8", + "Standard_G1", + "Standard_G2", + "Standard_G3", + "Standard_G4", + "Standard_G5", + "Standard_GS2", + "Standard_GS3", + "Standard_GS4", + "Standard_GS5", + "Standard_H16", + "Standard_H16m", + "Standard_H16mr", + "Standard_H16r", + "Standard_H8", + "Standard_H8m", + "Standard_NC12", + "Standard_NC24", + "Standard_NC24r", + "Standard_NC6", + "Standard_NV12", + "Standard_NV24", + "Standard_NV6" + ], + "metadata": { + "description": "The size of the Virtual Machine." + }, + "type": "string" + }, + "masterVnetSubnetID": { + "metadata": { + "description": "Sets the vnet subnet of the master." + }, + "type": "string" + }, + "nameSuffix": { + "defaultValue": "31559618", + "metadata": { + "description": "A string hash of the master DNS name to uniquely identify the cluster." + }, + "type": "string" + }, + "sshRSAPublicKey": { + "metadata": { + "description": "SSH public key used for auth to all Linux machines. Not Required. If not set, you must provide a password key." + }, + "type": "string" + } + }, + "variables": { + "adminUsername": "[parameters('linuxAdminUsername')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentMaxVMs": 100, + "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentprivateAccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", + "agentprivateCount": "[parameters('agentprivateCount')]", + "agentprivateStorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", + "agentprivateStorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentprivateVMNamePrefix": "[concat(variables('orchestratorName'), '-agentprivate-', variables('nameSuffix'))]", + "agentprivateVMSize": "[parameters('agentprivateVMSize')]", + "agentprivateVnetSubnetID": "[parameters('agentprivateVnetSubnetID')]", + "agentpublicAccountName": "[concat(variables('storageAccountBaseName'), 'agnt1')]", + "agentpublicCount": "[parameters('agentpublicCount')]", + "agentpublicEndpointDNSNamePrefix": "[tolower(parameters('agentpublicEndpointDNSNamePrefix'))]", + "agentpublicIPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('agentpublicEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "agentpublicLbBackendPoolName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('agentpublicLbName'))]", + "agentpublicLbIPConfigID": "[concat(variables('agentpublicLbID'),'/frontendIPConfigurations/', variables('agentpublicLbIPConfigName'))]", + "agentpublicLbIPConfigName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicLbName": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicStorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),1)]", + "agentpublicStorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", + "agentpublicVMNamePrefix": "[concat(variables('orchestratorName'), '-agentpublic-', variables('nameSuffix'))]", + "agentpublicVMSize": "[parameters('agentpublicVMSize')]", + "agentpublicVnetSubnetID": "[parameters('agentpublicVnetSubnetID')]", + "apiVersionDefault": "2016-03-30", + "apiVersionStorage": "2015-06-15", + "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarmmode-cluster.sh", + "dataStorageAccountPrefixSeed": 97, + "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", + "masterCount": 3, + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", + "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", + "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", + "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", + "masterLbBackendPoolName": "[concat(variables('orchestratorName'), '-master-pool-', variables('nameSuffix'))]", + "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", + "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", + "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], + "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", + "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", + "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", + "masterVMSize": "[parameters('masterVMSize')]", + "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", + "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", + "maxVMsPerPool": 100, + "maxVMsPerStorageAccount": 20, + "nameSuffix": "[parameters('nameSuffix')]", + "orchestratorName": "swarm", + "osImageOffer": "UbuntuServer", + "osImagePublisher": "Canonical", + "osImageSKU": "16.04.0-LTS", + "osImageVersion": "latest", + "postInstallScriptURI": "disabled", + "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", + "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", + "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),resourceGroup().location))]", + "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'))]", + "vmSizesMap": { + "Basic_A2": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A3": { + "storageAccountType": "Standard_LRS" + }, + "Basic_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A10": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A2m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A4m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A7": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A8m_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_A9": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D11_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D12_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D13_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D14_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D15_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D2_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D3_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D4_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_D5_v2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_DS11": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS11_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS12_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS13_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS14_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS15_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS2_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS3_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS4_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_DS5_v2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_F16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F16s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F2s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F4s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_F8s": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G1": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G2": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G3": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G4": { + "storageAccountType": "Standard_LRS" + }, + "Standard_G5": { + "storageAccountType": "Standard_LRS" + }, + "Standard_GS1": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS2": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS3": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS4": { + "storageAccountType": "Premium_LRS" + }, + "Standard_GS5": { + "storageAccountType": "Premium_LRS" + }, + "Standard_H16": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16mr": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H16r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8": { + "storageAccountType": "Standard_LRS" + }, + "Standard_H8m": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC24r": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NC6": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV12": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV24": { + "storageAccountType": "Standard_LRS" + }, + "Standard_NV6": { + "storageAccountType": "Standard_LRS" + } + }, + "vmsPerStorageAccount": 20 + }, + "resources": [ + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentprivateStorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentprivateVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentprivateVMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "subnet": { + "id": "[variables('agentprivateVnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentprivateVMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentprivateStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentprivateAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentprivateCount')]", + "name": "[variables('agentprivateVMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentprivateVMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "copy": { + "count": "[variables('agentpublicStorageAccountsCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('agentpublicVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('agentpublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('agentpublicEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('agentpublicLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('agentpublicLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('agentpublicLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('agentpublicIPAddressName'))]" + } + } + } + ], + "inboundNatRules": [], + "loadBalancingRules": [ + { + "name": "LBRule80", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + "backendPort": 80, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublicLbIPConfigID')]" + }, + "frontendPort": 80, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublicLbID'),'/probes/tcp80Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule443", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + "backendPort": 443, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublicLbIPConfigID')]" + }, + "frontendPort": 443, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublicLbID'),'/probes/tcp443Probe')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBRule8080", + "properties": { + "backendAddressPool": { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + }, + "backendPort": 8080, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('agentpublicLbIPConfigID')]" + }, + "frontendPort": 8080, + "idleTimeoutInMinutes": 5, + "loadDistribution": "Default", + "probe": { + "id": "[concat(variables('agentpublicLbID'),'/probes/tcp8080Probe')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "tcp80Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 80, + "protocol": "tcp" + } + }, + { + "name": "tcp443Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 443, + "protocol": "tcp" + } + }, + { + "name": "tcp8080Probe", + "properties": { + "intervalInSeconds": "5", + "numberOfProbes": "2", + "port": 8080, + "protocol": "tcp" + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName'))]", + "[variables('agentpublicLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('agentpublicVMNamePrefix'), '-vmss')]", + "properties": { + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "nic", + "properties": { + "ipConfigurations": [ + { + "name": "nicipconfig", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('agentpublicLbID'), '/backendAddressPools/', variables('agentpublicLbBackendPoolName'))]" + } + ], + "subnet": { + "id": "[variables('agentpublicVnetSubnetID')]" + } + } + } + ], + "primary": "true" + } + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computerNamePrefix": "[variables('agentpublicVMNamePrefix')]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[parameters('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "latest" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "vmssosdisk", + "vhdContainers": [ + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", + "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('agentpublicStorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('agentpublicAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" + ] + } + } + } + }, + "sku": { + "capacity": "[variables('agentpublicCount')]", + "name": "[variables('agentpublicVMSize')]", + "tier": "Standard" + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('agentpublicVMNamePrefix'), '-vmss')]" + }, + "type": "Microsoft.Compute/virtualMachineScaleSets" + }, + { + "apiVersion": "[variables('apiVersionStorage')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterStorageAccountName')]", + "properties": { + "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" + }, + "type": "Microsoft.Storage/storageAccounts" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterAvailabilitySet')]", + "properties": {}, + "type": "Microsoft.Compute/availabilitySets" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "location": "[resourceGroup().location]", + "name": "[variables('masterPublicIPAddressName')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('masterEndpointDNSNamePrefix')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "type": "Microsoft.Network/publicIPAddresses" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" + ], + "location": "[resourceGroup().location]", + "name": "[variables('masterLbName')]", + "properties": { + "backendAddressPools": [ + { + "name": "[variables('masterLbBackendPoolName')]" + } + ], + "frontendIPConfigurations": [ + { + "name": "[variables('masterLbIPConfigName')]", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" + } + } + } + ] + }, + "type": "Microsoft.Network/loadBalancers" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "masterLbLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterLbName'), '/', 'SSH-', variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "backendPort": 22, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "[copyIndex(2200)]", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "nicLoopNode" + }, + "dependsOn": [ + "[variables('masterLbID')]", + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "properties": { + "ipConfigurations": [ + { + "name": "ipConfigNode", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" + } + ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", + "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", + "privateIPAllocationMethod": "Static", + "subnet": { + "id": "[variables('masterVnetSubnetID')]" + } + } + } + ] + }, + "type": "Microsoft.Network/networkInterfaces" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", + "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", + "[variables('masterStorageAccountName')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "properties": { + "availabilitySet": { + "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('masterAvailabilitySet'))]" + }, + "hardwareProfile": { + "vmSize": "[variables('masterVMSize')]" + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('masterVMNamePrefix'), 'nic-', copyIndex()))]" + } + ] + }, + "osProfile": { + "adminUsername": "[variables('adminUsername')]", + "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarmmode-cluster.sh\n permissions: \"0744\"\n\n')]", + "linuxConfiguration": { + "disablePasswordAuthentication": "true", + "ssh": { + "publicKeys": [ + { + "keyData": "[variables('sshRSAPublicKey')]", + "path": "[variables('sshKeyPath')]" + } + ] + } + } + }, + "storageProfile": { + "imageReference": { + "offer": "[variables('osImageOffer')]", + "publisher": "[variables('osImagePublisher')]", + "sku": "[variables('osImageSKU')]", + "version": "[variables('osImageVersion')]" + }, + "osDisk": { + "caching": "ReadWrite", + "createOption": "FromImage", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(),'-osdisk')]", + "vhd": { + "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('masterStorageAccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'vhds/', variables('masterVMNamePrefix'), copyIndex(), '-osdisk.vhd')]" + } + } + } + }, + "tags": { + "creationSource": "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" + }, + "type": "Microsoft.Compute/virtualMachines" + }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "copy": { + "count": "[variables('masterCount')]", + "name": "vmLoopNode" + }, + "dependsOn": [ + "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", + "properties": { + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "commandToExecute": "[variables('masterCustomScript')]", + "fileUris": [] + }, + "type": "CustomScriptForLinux", + "typeHandlerVersion": "1.4" + }, + "type": "Microsoft.Compute/virtualMachines/extensions" + } + ], + "outputs": { + "agentpublicFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('agentpublicIPAddressName'))).dnsSettings.fqdn]" + }, + "masterFQDN": { + "type": "string", + "value": "[reference(concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))).dnsSettings.fqdn]" + } + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/vnet/swarmmodevnet_expected_params.json b/pkg/acsengine/testdata/vnet/swarmmodevnet_expected_params.json new file mode 100644 index 000000000..9d081e9cb --- /dev/null +++ b/pkg/acsengine/testdata/vnet/swarmmodevnet_expected_params.json @@ -0,0 +1,41 @@ +{ + "agentprivateCount": { + "value": 3 + }, + "agentprivateVMSize": { + "value": "Standard_D2_v2" + }, + "agentprivateVnetSubnetID": { + "value": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet" + }, + "agentpublicCount": { + "value": 3 + }, + "agentpublicEndpointDNSNamePrefix": { + "value": "agentpublic" + }, + "agentpublicVMSize": { + "value": "Standard_D2_v2" + }, + "agentpublicVnetSubnetID": { + "value": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleAgentSubnet" + }, + "firstConsecutiveStaticIP": { + "value": "10.100.0.5" + }, + "linuxAdminUsername": { + "value": "azureuser" + }, + "masterEndpointDNSNamePrefix": { + "value": "masterdns1" + }, + "masterVMSize": { + "value": "Standard_D2_v2" + }, + "masterVnetSubnetID": { + "value": "/subscriptions/SUBSCRIPTION/resourceGroups/ExampleRG/providers/Microsoft.Network/virtualNetworks/ExampleCustomVNET/subnets/ExampleMasterSubnet" + }, + "sshRSAPublicKey": { + "value": "ssh-rsa PUBLICKEY azureuser@linuxvm" + } +} \ No newline at end of file diff --git a/pkg/acsengine/testdata/vnet/swarmvnet_expected.json b/pkg/acsengine/testdata/vnet/swarmvnet_expected.json index 0650cb6ca..c43313cf0 100644 --- a/pkg/acsengine/testdata/vnet/swarmvnet_expected.json +++ b/pkg/acsengine/testdata/vnet/swarmvnet_expected.json @@ -523,10 +523,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentprivateAccountName": "[concat(variables('storageAccountBaseName'), 'agnt0')]", "agentprivateCount": "[parameters('agentprivateCount')]", "agentprivateStorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),0)]", @@ -551,10 +551,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 3, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -563,8 +564,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", "masterVMSize": "[parameters('masterVMSize')]", @@ -928,7 +962,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentprivateVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1165,7 +1199,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('agentpublicVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1289,6 +1323,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1297,7 +1349,8 @@ }, "dependsOn": [ "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1311,11 +1364,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1357,7 +1406,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/windows/swarm-vmas_expected.json b/pkg/acsengine/testdata/windows/swarm-vmas_expected.json index 9c064b333..927909e2c 100644 --- a/pkg/acsengine/testdata/windows/swarm-vmas_expected.json +++ b/pkg/acsengine/testdata/windows/swarm-vmas_expected.json @@ -538,10 +538,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -550,10 +550,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -562,8 +563,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1430,6 +1464,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1439,7 +1491,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1453,11 +1506,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1499,7 +1548,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n H4sIAAAJbogA/8xYbXPbuBH+zl+xR3POdhKKkpJcW2WUjuMojadnyyPZ107juwgiVxJqEuABoGzXp//ewQspUi++XCeZqW8uIpcL7OJ5FrsLHHwXTSmLpkQuPE+igvDe8zBecPClIkJRNgd5R0QGcVpIhQJizmZ0XgiiKGe+lxCFXi6B3Hve+B8no/PPPw1G47PhRd8343qdVqfV9r33w9O/D0afT4fnl8PxYK3Uaf3Q6vreQf3PO4BLIkiGCoXc+OSdn4yvBqPT4fXFVT947Kyc4HI0+HD2z37w2C0lH85G46uT9+9H/eDx5co7+df1aHA9HujXVyvvcji+OrsYX538+OP4dHR2eXU9OusHj69X3ruT8WB8/e5ioOf/YeX9dH5xcj7oTxZcKkYynGjJ9fm7wag/MUgFVgN+A4kJHMqo9ezTL+3wLz/fHH0yP89vjp8F0U0nOtRjnad7xt4cVaOPn7nh5VhHzDkxRJzygqkeBDVA/KbGpcAZva9UrOENnQ9USAUnSSIqvQq4UnWZ6XX3SmdLcQmD/WAeX0C5PiNsWlwD24Ng/VJ+rgjqQVA9+16T/ypATnmWcQYfChbrQJQ71TxkshB48p9C4AWqOy5uj469Rw/gAOwnUAsEzSzoJQKVIFDydEmmKXpgvoyMAD8iSdXiod/xAGZcAAXK4LHTanW67dUbSLgHYAeUOBkBncEnCP4KIf4KbfjZyNQCmXnQfpRhBQsiYYrIYMYLluh9pigr0Cnu8KTtPln4mguxq0DpO52pQHJrnmfU/MgUMQe9mIQzbcQ6um0GQobO88pva3FtLeEogXFVmn0BZMpt8qBMKpKm1g+8p8rYnFFvkwRm+QH9j/SgfH8C9jXqd3OduYZRgsuIFWkKC6XyXqRT27wV8+yrMrHh2DYL5UqohIVV+j0W2ps0NG3sp2DDnKbAmdxHAZ3ZBG5fciBrYrqe82t7c9AcYsJKer+InY1NYYAN6f87E9+CiJiw2t4woCeJQCn/d45WOzKb93Ho6t2kBvjE86jMbK53uc+szG8WBej3wV9n7OYSBapCMND4YiqxLuuU/tAZVHbelENLbAwiiUmvBKyS7+kcQCWZI1Nrx7bnaJjaNN9umDdzPW2dgVGy1mPOZJFKJZx9+07EXPZ9vx7RE2kiNTg6qhXbsHN8PIE3JmKMT/bb8PRqcNWf4H0utgoqPIeATozy2aWhyg8e15VwFTzW5lj53nq3+FWJ9c228dv+9sap+x88rt9W4ZRzJZUgeYj3Ocaq0TWAX98Iu80F9A/ZI8kShaISIbALdTYq/p4aLFCJh/DfnLKN0cZDtz1t97Qe5q1KPs2UwVFF7rHrB9tPQl5xtNrdctiuo9zDEtOZDoz3F+N9yq6rCcpdWXVPutcrEg4KEUICEao40htWbtv1DuDMJgZ4z+NbFNsazoxT06mE2ERpmnT9npiRvue5HGNnciHfTNrtzZIaKkFRwisIHSsxZ0zgrNDdahjeEaqMvN95DeGvw9AUXtmLojmqljWs669e8uKrpn67aruUMnliArKIY5RyVqTplxfdlaeo7v3q8HiGokKiyHgCIfmbg7HWmu7MOQcw1scmR5fhIqVSIQPOoNd9+afXcMQ4kEItXsC0UBr6JUN1XIb0oTsoDS+vxn0//AgFo/e9KIqWRESiYJFDVfL4FsKP0G6Z/+zUYehOaaFUXGDf7oFeFB0GjT3Q+/PrdrumXW3XfhWuZsJD/3BXtCY4I0WqnCsmlW5FoYMr5lnOJfrN4Du10m8dg1QtiqmOP+dp5LyJBKZIJMoo4Xcs5SSJgt3nUzcwdAPDSWHLqpxUj9kE3kJUSBGlPCapOU43R32DwG8a+BYbwFHkxQu9AZ7f/84S7X6RKJY0xpJ8geYOoTyGNRJPrcckqhyw7tOMa1q2t8N8uY4TY7ucgs34VwW86UZ7Z/7Zai/rHuUSQvJHDwANq/vbzrUDtY7Tb/aILqHtqVP7/ryDqojoyKAKRJGiLDkFXZNywXWw4c7D91Nz7+4Ws9uECghziBKiSGSTV9XHuVymEcrIHHtw4+eCzwUtMqd645seLssIS3oQ6mBEAaHp/cp7lnrHAJBzoWTP4BnCja+zokmNN/5a9lLLXm7KOlrW2SWLiiRvyrta3t0l29R9pW29craWPC0yrLlXh6VnXoyeY0QDQtI78iBvfM9evdWxChqXc02oMsLIHE1+zVMam5s9COtNXKMqQBgmVMZ8ieIh5LmC22UrJ2rRd1lWAy6hqj07Ss829HpeM7nxLKXstvaxRu82KKYgGcO92vNeZHydrXmuIqKPThpNRShDITcyWushS3X/nRdykewZUSWpKhEXOYSJWV2e1CI3y1NUOjuXV6ouNdibVc7MQbtxLtp/mvpIluZSVi7KzkJxgyZ0u90uEAl3mKb6t9vVILjEnACEFHwZ/XJpdYPIPdywy3J01PFthZdyof9PPruDqPPpEwS77k3huz74CZVkmmKizwkNh8saS9n8hWmIbml8q5fAZzPIze2C63FlLGiutNPVpTSEMfiNPqDb/uJGYLezvwHjiyKv2Xj7Fkx7lfJ5SbJrjNbnJu2o87OV8jl0337fge/9WvNTZUMgCpAlwGfViuwFubkr34yJDCWX+27XnXaZdOWDVJhpwkvICHsAgRmhzAQFn6k7InS7taM3lYtCaTIgFMD4necOYwegkYMOZJQVCvXspT0bgVt81CcqQfhvAAAA///iNHIQSRgAAA==\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/windows/swarmWinAndLin_expected.json b/pkg/acsengine/testdata/windows/swarmWinAndLin_expected.json index 88e158363..86304e71f 100644 --- a/pkg/acsengine/testdata/windows/swarmWinAndLin_expected.json +++ b/pkg/acsengine/testdata/windows/swarmWinAndLin_expected.json @@ -743,10 +743,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -755,10 +755,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -767,8 +768,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1550,7 +1584,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computerNamePrefix": "[variables('privatelinuxVMNamePrefix')]", - "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", + "customData": "[base64(concat('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n',variables('agentRunCmdFile'),variables('agentRunCmd')))]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { @@ -1716,6 +1750,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1725,7 +1777,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1739,11 +1792,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1785,7 +1834,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/acsengine/testdata/windows/swarm_expected.json b/pkg/acsengine/testdata/windows/swarm_expected.json index f512ca853..3cb71ef2f 100644 --- a/pkg/acsengine/testdata/windows/swarm_expected.json +++ b/pkg/acsengine/testdata/windows/swarm_expected.json @@ -538,10 +538,10 @@ }, "variables": { "adminUsername": "[parameters('linuxAdminUsername')]", - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", + "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", "agentMaxVMs": 100, "agentRunCmd": "[concat('runcmd:\n - [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", + "agentRunCmdFile": "[concat(' - content: |\n #!/bin/bash\n ','sudo mkdir -p /var/log/azure\n ',variables('agentCustomScript'),'\n path: /opt/azure/containers/install-cluster.sh\n permissions: \"0744\"\n')]", "agentWindowsBackendPort": 3389, "agentWindowsOffer": "WindowsServer", "agentWindowsPublisher": "MicrosoftWindowsServer", @@ -550,10 +550,11 @@ "apiVersionDefault": "2016-03-30", "apiVersionStorage": "2015-06-15", "clusterInstallParameters": "[concat(variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'))]", + "configureClusterScriptFile": "configure-swarm-cluster.sh", "dataStorageAccountPrefixSeed": 97, "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", "masterCount": 1, - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/configure-swarm-cluster.sh ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", + "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", @@ -562,8 +563,41 @@ "masterLbID": "[resourceId('Microsoft.Network/loadBalancers',variables('masterLbName'))]", "masterLbIPConfigID": "[concat(variables('masterLbID'),'/frontendIPConfigurations/', variables('masterLbIPConfigName'))]", "masterLbIPConfigName": "[concat(variables('orchestratorName'), '-master-lbFrontEnd-', variables('nameSuffix'))]", + "masterLbInboundNatRules": [ + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" + }, + { + "id": "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" + } + ], + [ + { + "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" + } + ] + ], "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", + "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'))]", + "masterSshPort22InboundNatRuleNamePrefix": "[concat(variables('masterLbName'),'/SSHPort22-',variables('masterVMNamePrefix'))]", "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", "masterSubnet": "[parameters('masterSubnet')]", "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", @@ -1393,6 +1427,24 @@ }, "type": "Microsoft.Network/loadBalancers/inboundNatRules" }, + { + "apiVersion": "[variables('apiVersionDefault')]", + "dependsOn": [ + "[variables('masterLbID')]" + ], + "location": "[resourceGroup().location]", + "name": "[concat(variables('masterSshPort22InboundNatRuleNamePrefix'), '0')]", + "properties": { + "backendPort": 2222, + "enableFloatingIP": false, + "frontendIPConfiguration": { + "id": "[variables('masterLbIPConfigID')]" + }, + "frontendPort": "22", + "protocol": "tcp" + }, + "type": "Microsoft.Network/loadBalancers/inboundNatRules" + }, { "apiVersion": "[variables('apiVersionDefault')]", "copy": { @@ -1402,7 +1454,8 @@ "dependsOn": [ "[variables('vnetID')]", "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" + "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", + "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" ], "location": "[resourceGroup().location]", "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", @@ -1416,11 +1469,7 @@ "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" } ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], + "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", "privateIPAllocationMethod": "Static", "subnet": { @@ -1462,7 +1511,7 @@ "osProfile": { "adminUsername": "[variables('adminUsername')]", "computername": "[concat(variables('masterVMNamePrefix'), copyIndex())]", - "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", + "customData": "[base64('#cloud-config\n\nwrite_files:\n - encoding: gzip\n content: !!binary |\n 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\n path: /opt/azure/containers/configure-swarm-cluster.sh\n permissions: \"0744\"\n\n')]", "linuxConfiguration": { "disablePasswordAuthentication": "true", "ssh": { diff --git a/pkg/api/const.go b/pkg/api/const.go index a9bca0db3..b3e6bc037 100644 --- a/pkg/api/const.go +++ b/pkg/api/const.go @@ -16,6 +16,8 @@ const ( Swarm OrchestratorType = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes OrchestratorType = "Kubernetes" + // DockerCE is the string constant for the Swarm Mode orchestrator type + DockerCE OrchestratorType = "DockerCE" ) const ( diff --git a/pkg/api/types.go b/pkg/api/types.go index 2904f85eb..6a646e0f4 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -330,3 +330,8 @@ func (w *WindowsProfile) HasSecrets() bool { func (l *LinuxProfile) HasSecrets() bool { return len(l.Secrets) > 0 } + +// IsSwarmMode returns true if this template is for Swarm Mode orchestrator +func (o *OrchestratorProfile) IsSwarmMode() bool { + return o.OrchestratorType == DockerCE +} diff --git a/pkg/api/v20160330/validate.go b/pkg/api/v20160330/validate.go index 11b6bc689..e79539019 100644 --- a/pkg/api/v20160330/validate.go +++ b/pkg/api/v20160330/validate.go @@ -127,8 +127,7 @@ func validateDNSName(dnsName string) error { if err != nil { return err } - submatches := re.FindStringSubmatch(dnsName) - if len(submatches) != 2 { + if !re.MatchString(dnsName) { return fmt.Errorf("DNS name '%s' is invalid. The DNS name must contain between 3 and 45 characters. The name can contain only letters, numbers, and hyphens. The name must start with a letter and must end with a letter or a number. (length was %d)", dnsName, len(dnsName)) } return nil diff --git a/pkg/api/v20160930/validate.go b/pkg/api/v20160930/validate.go index 4ba4f239c..81df1af81 100644 --- a/pkg/api/v20160930/validate.go +++ b/pkg/api/v20160930/validate.go @@ -128,8 +128,7 @@ func validateDNSName(dnsName string) error { if err != nil { return err } - submatches := re.FindStringSubmatch(dnsName) - if len(submatches) != 2 { + if !re.MatchString(dnsName) { return fmt.Errorf("DNS name '%s' is invalid. The DNS name must contain between 3 and 45 characters. The name can contain only letters, numbers, and hyphens. The name must start with a letter and must end with a letter or a number. (length was %d)", dnsName, len(dnsName)) } return nil diff --git a/pkg/api/v20170131/const.go b/pkg/api/v20170131/const.go new file mode 100644 index 000000000..3c56b6e9d --- /dev/null +++ b/pkg/api/v20170131/const.go @@ -0,0 +1,33 @@ +package v20170131 + +const ( + // APIVersion is the version of this API + APIVersion = "2017-01-31" +) + +// the orchestrators supported by 2017-01-31 +const ( + // Mesos is the string constant for the Mesos orchestrator type + Mesos OrchestratorType = "Mesos" + // DCOS is the string constant for DCOS orchestrator type and defaults to DCOS187 + DCOS = "DCOS" + // Swarm is the string constant for the Swarm orchestrator type + Swarm = "Swarm" + // Kubernetes is the string constant for the Kubernetes orchestrator type + Kubernetes = "Kubernetes" + // DockerCE is the string constant for the Swarm Mode orchestrator type + DockerCE = "DockerCE" +) + +const ( + Windows OSType = "Windows" + Linux OSType = "Linux" +) + +// validation values +const ( + // MinAgentCount are the minimum number of agents + MinAgentCount = 1 + // MaxAgentCount are the maximum number of agents + MaxAgentCount = 100 +) diff --git a/pkg/api/v20170131/doc.go b/pkg/api/v20170131/doc.go new file mode 100644 index 000000000..c2622bd91 --- /dev/null +++ b/pkg/api/v20170131/doc.go @@ -0,0 +1,2 @@ +// Package v20170131 stores api model for version "2017-01-31" +package v20170131 diff --git a/pkg/api/v20170131/types.go b/pkg/api/v20170131/types.go new file mode 100644 index 000000000..115b73e6b --- /dev/null +++ b/pkg/api/v20170131/types.go @@ -0,0 +1,207 @@ +package v20170131 + +import ( + neturl "net/url" +) + +// ResourcePurchasePlan defines resource plan as required by ARM +// for billing purposes. +type ResourcePurchasePlan struct { + Name string `json:"name,omitempty"` + Product string `json:"product,omitempty"` + PromotionCode string `json:"promotionCode,omitempty"` + Publisher string `json:"publisher,omitempty"` +} + +// ContainerService complies with the ARM model of +// resource definition in a JSON template. +type ContainerService struct { + ID string `json:"id,omitempty"` + Location string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + Plan ResourcePurchasePlan `json:"plan,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type string `json:"type,omitempty"` + + Properties Properties `json:"properties"` +} + +// Properties represents the ACS cluster definition +type Properties struct { + ProvisioningState ProvisioningState `json:"provisioningState"` + OrchestratorProfile OrchestratorProfile `json:"orchestratorProfile"` + MasterProfile MasterProfile `json:"masterProfile"` + AgentPoolProfiles []AgentPoolProfile `json:"agentPoolProfiles"` + LinuxProfile LinuxProfile `json:"linuxProfile"` + WindowsProfile WindowsProfile `json:"windowsProfile"` + DiagnosticsProfile DiagnosticsProfile `json:"diagnosticsProfile"` + JumpboxProfile JumpboxProfile `json:"jumpboxProfile"` + ServicePrincipalProfile ServicePrincipalProfile `json:"servicePrincipalProfile"` + CustomProfile CustomProfile `json:"customProfile"` +} + +// ServicePrincipalProfile contains the client and secret used by the cluster for Azure Resource CRUD +type ServicePrincipalProfile struct { + ClientID string `json:"clientId,omitempty"` + Secret string `json:"secret,omitempty"` +} + + +// CustomProfile specifies custom properties that are used for +// cluster instantiation. Should not be used by most users. +type CustomProfile struct { + Orchestrator string `json:"orchestrator,omitempty"` +} + +// LinuxProfile represents the Linux configuration passed to the cluster +type LinuxProfile struct { + AdminUsername string `json:"adminUsername"` + + SSH struct { + PublicKeys []struct { + KeyData string `json:"keyData"` + } `json:"publicKeys"` + } `json:"ssh"` +} + +// WindowsProfile represents the Windows configuration passed to the cluster +type WindowsProfile struct { + AdminUsername string `json:"adminUsername,omitempty"` + AdminPassword string `json:"adminPassword,omitempty"` +} + +// ProvisioningState represents the current state of container service resource. +type ProvisioningState string + +const ( + // Creating means ContainerService resource is being created. + Creating ProvisioningState = "Creating" + // Updating means an existing ContainerService resource is being updated + Updating ProvisioningState = "Updating" + // Failed means resource is in failed state + Failed ProvisioningState = "Failed" + // Succeeded means resource created succeeded during last create/update + Succeeded ProvisioningState = "Succeeded" + // Deleting means resource is in the process of being deleted + Deleting ProvisioningState = "Deleting" + // Migrating means resource is being migrated from one subscription or + // resource group to another + Migrating ProvisioningState = "Migrating" +) + +// OrchestratorProfile contains Orchestrator properties +type OrchestratorProfile struct { + OrchestratorType OrchestratorType `json:"orchestratorType"` +} + +// MasterProfile represents the definition of master cluster +type MasterProfile struct { + Count int `json:"count"` + DNSPrefix string `json:"dnsPrefix"` + + // Master LB public endpoint/FQDN with port + // The format will be FQDN:2376 + // Not used during PUT, returned as part of GET + FQDN string `json:"fqdn,omitempty"` + + // subnet is internal + subnet string +} + +// AgentPoolProfile represents configuration of VMs running agent +// daemons that register with the master and offer resources to +// host applications in containers. +type AgentPoolProfile struct { + Name string `json:"name"` + Count int `json:"count"` + VMSize string `json:"vmSize"` + DNSPrefix string `json:"dnsPrefix"` + FQDN string `json:"fqdn,omitempty"` + + // OSType is the operating system type for agents + // Set as nullable to support backward compat because + // this property was added later. + // If the value is null or not set, it defaulted to Linux. + OSType OSType `json:"osType,omitempty"` + + // subnet is internal + subnet string +} + +// JumpboxProfile dscribes properties of the jumpbox setup +// in the ACS container cluster. +type JumpboxProfile struct { + OSType OSType `json:"osType,omitempty"` + DNSPrefix string `json:"dnsPrefix"` + + // Jumpbox public endpoint/FQDN with port + // The format will be FQDN:2376 + // Not used during PUT, returned as part of GET + FQDN string `json:"fqdn,omitempty"` +} + +// DiagnosticsProfile setting to enable/disable capturing +// diagnostics for VMs hosting container cluster. +type DiagnosticsProfile struct { + VMDiagnostics VMDiagnostics `json:"vmDiagnostics"` +} + +// VMDiagnostics contains settings to on/off boot diagnostics collection +// in RD Host +type VMDiagnostics struct { + Enabled bool `json:"enabled"` + + // Specifies storage account Uri where Boot Diagnostics (CRP & + // VMSS BootDiagostics) and VM Diagnostics logs (using Linux + // Diagnostics Extension) will be stored. Uri will be of standard + // blob domain. i.e. https://storageaccount.blob.core.windows.net/ + // This field is readonly as ACS RP will create a storage account + // for the customer. + StorageURL neturl.URL `json:"storageUrl"` +} + +// OrchestratorType defines orchestrators supported by ACS +type OrchestratorType string + +// OSType represents OS types of agents +type OSType string + +// HasWindows returns true if the cluster contains windows +func (a *Properties) HasWindows() bool { + for _, agentPoolProfile := range a.AgentPoolProfiles { + if agentPoolProfile.OSType == Windows { + return true + } + } + return false +} + +// GetSubnet returns the read-only subnet for the master +func (m *MasterProfile) GetSubnet() string { + return m.subnet +} + +// SetSubnet sets the read-only subnet for the master +func (m *MasterProfile) SetSubnet(subnet string) { + m.subnet = subnet +} + +// IsWindows returns true if the agent pool is windows +func (a *AgentPoolProfile) IsWindows() bool { + return a.OSType == Windows +} + +// GetSubnet returns the read-only subnet for the agent pool +func (a *AgentPoolProfile) GetSubnet() string { + return a.subnet +} + +// SetSubnet sets the read-only subnet for the agent pool +func (a *AgentPoolProfile) SetSubnet(subnet string) { + a.subnet = subnet +} + +// IsSwarmMode returns true if this template is for Swarm Mode orchestrator +func (o *OrchestratorProfile) IsSwarmMode() bool { + return o.OrchestratorType == DockerCE +} diff --git a/pkg/api/v20170131/validate.go b/pkg/api/v20170131/validate.go new file mode 100644 index 000000000..400949edf --- /dev/null +++ b/pkg/api/v20170131/validate.go @@ -0,0 +1,158 @@ +package v20170131 + +import ( + "errors" + "fmt" + "regexp" +) + +// Validate implements APIObject +func (o *OrchestratorProfile) Validate() error { + switch o.OrchestratorType { + case DCOS: + case Mesos: + case Swarm: + case Kubernetes: + case DockerCE: + default: + return fmt.Errorf("OrchestratorProfile has unknown orchestrator: %s", o.OrchestratorType) + } + + return nil +} + +// Validate implements APIObject +func (m *MasterProfile) Validate() error { + if m.Count != 1 && m.Count != 3 && m.Count != 5 { + return fmt.Errorf("MasterProfile count needs to be 1, 3, or 5") + } + if e := validateName(m.DNSPrefix, "MasterProfile.DNSPrefix"); e != nil { + return e + } + if e := validateDNSName(m.DNSPrefix); e != nil { + return e + } + return nil +} + +// Validate implements APIObject +func (a *AgentPoolProfile) Validate() error { + if e := validateName(a.Name, "AgentPoolProfile.Name"); e != nil { + return e + } + if e := validatePoolName(a.Name); e != nil { + return e + } + if a.Count < MinAgentCount || a.Count > MaxAgentCount { + return fmt.Errorf("AgentPoolProfile count needs to be in the range [%d,%d]", MinAgentCount, MaxAgentCount) + } + if e := validateName(a.VMSize, "AgentPoolProfile.VMSize"); e != nil { + return e + } + return nil +} + +// Validate implements APIObject +func (l *LinuxProfile) Validate() error { + if e := validateName(l.AdminUsername, "LinuxProfile.AdminUsername"); e != nil { + return e + } + if len(l.SSH.PublicKeys) != 1 { + return errors.New("LinuxProfile.PublicKeys requires only 1 SSH Key") + } + if e := validateName(l.SSH.PublicKeys[0].KeyData, "LinuxProfile.PublicKeys.KeyData"); e != nil { + return e + } + return nil +} + +// Validate implements APIObject +func (a *Properties) Validate() error { + if e := a.OrchestratorProfile.Validate(); e != nil { + return e + } + if e := a.MasterProfile.Validate(); e != nil { + return e + } + if e := validateUniqueProfileNames(a.AgentPoolProfiles); e != nil { + return e + } + + for _, agentPoolProfile := range a.AgentPoolProfiles { + if e := agentPoolProfile.Validate(); e != nil { + return e + } + if agentPoolProfile.OSType == Windows { + switch a.OrchestratorProfile.OrchestratorType { + case Swarm: + default: + return fmt.Errorf("Orchestrator %s does not support Windows", a.OrchestratorProfile.OrchestratorType) + } + if len(a.WindowsProfile.AdminUsername) == 0 { + return fmt.Errorf("WindowsProfile.AdminUsername must not be empty since agent pool '%s' specifies windows", agentPoolProfile.Name) + } + if len(a.WindowsProfile.AdminPassword) == 0 { + return fmt.Errorf("WindowsProfile.AdminPassword must not be empty since agent pool '%s' specifies windows", agentPoolProfile.Name) + } + } + } + if e := a.LinuxProfile.Validate(); e != nil { + return e + } + return nil +} + +func validateName(name string, label string) error { + if name == "" { + return fmt.Errorf("%s must be a non-empty value", label) + } + return nil +} + +func validatePoolName(poolName string) error { + // we will cap at length of 12 and all lowercase letters since this makes up the VMName + poolNameRegex := `^([a-z][a-z0-9]{0,11})$` + re, err := regexp.Compile(poolNameRegex) + if err != nil { + return err + } + submatches := re.FindStringSubmatch(poolName) + if len(submatches) != 2 { + return fmt.Errorf("pool name '%s' is invalid. A pool name must start with a lowercase letter, have max length of 12, and only have characters a-z0-9", poolName) + } + return nil +} + +func validateDNSName(dnsName string) error { + dnsNameRegex := `^([a-z][a-z0-9-]{1,45}[a-z0-9])$` + re, err := regexp.Compile(dnsNameRegex) + if err != nil { + return err + } + if !re.MatchString(dnsName) { + return fmt.Errorf("DNS name '%s' is invalid. The DNS name must contain between 3 and 45 characters. The name can contain only letters, numbers, and hyphens. The name must start with a letter and must end with a letter or a number. (length was %d)", dnsName, len(dnsName)) + } + return nil +} + +func validateUniqueProfileNames(profiles []AgentPoolProfile) error { + profileNames := make(map[string]bool) + for _, profile := range profiles { + if _, ok := profileNames[profile.Name]; ok { + return fmt.Errorf("profile name '%s' already exists, profile names must be unique across pools", profile.Name) + } + profileNames[profile.Name] = true + } + return nil +} + +func validateUniquePorts(ports []int, name string) error { + portMap := make(map[int]bool) + for _, port := range ports { + if _, ok := portMap[port]; ok { + return fmt.Errorf("agent profile '%s' has duplicate port '%d', ports must be unique", name, port) + } + portMap[port] = true + } + return nil +} diff --git a/pkg/api/vlabs/const.go b/pkg/api/vlabs/const.go index c0e4bc06b..8b86568f5 100644 --- a/pkg/api/vlabs/const.go +++ b/pkg/api/vlabs/const.go @@ -19,6 +19,8 @@ const ( Swarm = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes = "Kubernetes" + // DockerCE is the string constant for the Swarm Mode orchestrator type + DockerCE = "DockerCE" ) const ( diff --git a/pkg/api/vlabs/types.go b/pkg/api/vlabs/types.go index 563c1bbc9..daf93d488 100644 --- a/pkg/api/vlabs/types.go +++ b/pkg/api/vlabs/types.go @@ -254,3 +254,8 @@ func (a *AgentPoolProfile) GetSubnet() string { func (a *AgentPoolProfile) SetSubnet(subnet string) { a.subnet = subnet } + +// IsSwarmMode returns true if this template is for Swarm Mode orchestrator +func (o *OrchestratorProfile) IsSwarmMode() bool { + return o.OrchestratorType == DockerCE +} diff --git a/pkg/api/vlabs/validate.go b/pkg/api/vlabs/validate.go index 2c707a120..79f954728 100644 --- a/pkg/api/vlabs/validate.go +++ b/pkg/api/vlabs/validate.go @@ -17,6 +17,7 @@ func (o *OrchestratorProfile) Validate() error { case DCOS173: case Swarm: case Kubernetes: + case DockerCE: default: return fmt.Errorf("OrchestratorProfile has unknown orchestrator: %s", o.OrchestratorType) } @@ -161,6 +162,18 @@ func (a *Properties) Validate() error { return fmt.Errorf("only 1 master may be specified with %s", a.OrchestratorProfile.OrchestratorType) } + if a.MasterProfile.StorageProfile == StorageAccountClassic { + switch a.OrchestratorProfile.OrchestratorType { + case DCOS: + case DCOS173: + case DCOS184: + case DCOS187: + case Swarm: + default: + return fmt.Errorf("StorageAccountClassic is not supported in MasterProfile for Orchestrator %s \n", a.OrchestratorProfile.OrchestratorType) + } + } + for _, agentPoolProfile := range a.AgentPoolProfiles { if e := agentPoolProfile.Validate(); e != nil { return e @@ -181,10 +194,24 @@ func (a *Properties) Validate() error { case DCOS184: case DCOS187: case Swarm: + case DockerCE: default: return fmt.Errorf("HA volumes are currently unsupported for Orchestrator %s", a.OrchestratorProfile.OrchestratorType) } } + + if agentPoolProfile.StorageProfile == StorageAccountClassic { + switch a.OrchestratorProfile.OrchestratorType { + case DCOS: + case DCOS173: + case DCOS184: + case DCOS187: + case Swarm: + default: + return fmt.Errorf("StorageAccountClassic is not supported in agentPoolProfile for Orchestrator %s \n", a.OrchestratorProfile.OrchestratorType) + } + } + if a.OrchestratorProfile.OrchestratorType == Kubernetes && (agentPoolProfile.AvailabilityProfile == VirtualMachineScaleSets || len(agentPoolProfile.AvailabilityProfile) == 0) { return fmt.Errorf("VirtualMachineScaleSets are not supported with Kubernetes since Kubernetes requires the ability to attach/detach disks. To fix specify \"AvailabilityProfile\":\"%s\"", AvailabilitySet) } diff --git a/test/cluster-tests/dcos/test.sh b/test/cluster-tests/dcos/test.sh old mode 100755 new mode 100644 diff --git a/test/cluster-tests/kubernetes/test.sh b/test/cluster-tests/kubernetes/test.sh old mode 100755 new mode 100644