From 04f7ff84eefe7ad5a5c13de96fbfa61414ba2482 Mon Sep 17 00:00:00 2001 From: Matt Boersma Date: Sat, 14 Nov 2020 11:11:02 -0700 Subject: [PATCH] refactor: remove unsupported orchestrators (#3965) --- .codecov/codecov.yml | 1 - README_zh-CN.md | 7 +- docs/topics/clusterdefinitions.zh-CN.md | 10 +- docs/topics/extensions.md | 2 +- docs/tutorials/quickstart.zh-CN.md | 2 +- parts/dcos/bstrap/bootstrapcustomdata.yml | 87 - parts/dcos/bstrap/bootstrapparams.t | 149 - parts/dcos/bstrap/bootstrapprovision.sh | 34 - parts/dcos/bstrap/bootstrapresources.t | 158 - parts/dcos/bstrap/bootstrapvars.t | 9 - parts/dcos/bstrap/dcos1.11.0.customdata.t | 99 - parts/dcos/bstrap/dcos1.11.2.customdata.t | 87 - parts/dcos/bstrap/dcosbase.t | 65 - parts/dcos/bstrap/dcosmasterresources.t | 355 - parts/dcos/bstrap/dcosmastervars.t | 141 - parts/dcos/bstrap/dcosprovision.sh | 54 - parts/dcos/dcosWindowsAgentResourcesVmas.t | 294 - parts/dcos/dcosWindowsAgentResourcesVmss.t | 229 - parts/dcos/dcosWindowsProvision.ps1 | 214 - parts/dcos/dcosagentresourcesvmas.t | 250 - parts/dcos/dcosagentresourcesvmss.t | 205 - parts/dcos/dcosagentvars.t | 64 - parts/dcos/dcosbase.t | 65 - parts/dcos/dcoscustomdata110.t | 343 - parts/dcos/dcoscustomdata184.t | 371 - parts/dcos/dcoscustomdata187.t | 364 - parts/dcos/dcoscustomdata188.t | 364 - parts/dcos/dcoscustomdata190.t | 357 - parts/dcos/dcoscustomdata198.t | 357 - parts/dcos/dcosmasterresources.t | 423 - parts/dcos/dcosmastervars.t | 149 - parts/dcos/dcosparams.t | 35 - parts/dcos/dcosprovision.sh | 49 - parts/dcos/dcosprovisionsource.sh | 58 - .../Install-ContainerHost-And-Join-Swarm.ps1 | 214 - parts/swarm/Join-SwarmMode-cluster.ps1 | 335 - parts/swarm/configure-swarm-cluster.sh | 294 - parts/swarm/configure-swarmmode-cluster.sh | 374 - parts/swarm/swarmagentresourcesvmas.t | 258 - parts/swarm/swarmagentresourcesvmss.t | 206 - parts/swarm/swarmagentvars.t | 51 - parts/swarm/swarmbase.t | 50 - parts/swarm/swarmmasterresources.t | 287 - parts/swarm/swarmmastervars.t | 178 - parts/swarm/swarmparams.t | 15 - parts/swarm/swarmwinagentresourcesvmas.t | 259 - parts/swarm/swarmwinagentresourcesvmss.t | 208 - pkg/api/azenvtypes.go | 59 - pkg/api/azenvtypes_test.go | 3 - pkg/api/common/const.go | 57 - pkg/api/common/versions.go | 2 - pkg/api/common/versions_test.go | 4 +- pkg/api/const.go | 38 - pkg/api/converterfromapi.go | 57 - pkg/api/converterfromapi_test.go | 71 +- pkg/api/convertertoapi.go | 83 - pkg/api/convertertoapi_test.go | 158 +- pkg/api/defaults-custom-cloud-profile.go | 6 - pkg/api/defaults.go | 52 +- pkg/api/defaults_test.go | 57 +- pkg/api/mocks.go | 3 - pkg/api/orchestrators.go | 116 +- pkg/api/orchestrators_test.go | 85 - pkg/api/strictjson_test.go | 2 +- pkg/api/types.go | 41 - pkg/api/types_test.go | 187 - pkg/api/vlabs/azenvtypes.go | 21 - pkg/api/vlabs/const.go | 6 - pkg/api/vlabs/types.go | 25 - pkg/api/vlabs/types_test.go | 17 +- pkg/api/vlabs/validate.go | 39 +- pkg/api/vlabs/validate_test.go | 60 +- pkg/engine/const.go | 70 +- pkg/engine/engine.go | 217 +- pkg/engine/engine_dcos.go | 290 - pkg/engine/engine_test.go | 54 - pkg/engine/params.go | 90 +- pkg/engine/template_generator.go | 119 +- pkg/engine/template_generator_test.go | 10 - pkg/engine/templates_generated.go | 9008 +---------------- .../testdata/disks-managed/dcos-vmas.json | 47 - .../testdata/disks-managed/dcos-vmss.json | 47 - .../testdata/disks-managed/swarm-vmas.json | 47 - .../testdata/disks-managed/swarm-vmss.json | 47 - .../disks-managed/swarm-windows-vmas.json | 53 - .../disks-managed/swarm-windows-vmss.json | 53 - .../disks-managed/swarmmode-vmas.json | 47 - .../disks-managed/swarmmode-vmss.json | 47 - .../testdata/disks-storageaccount/dcos.json | 47 - .../testdata/disks-storageaccount/swarm.json | 47 - .../disks-storageaccount/swarmmode.json | 47 - pkg/engine/testdata/extensions/dcos.json | 53 - pkg/engine/testdata/extensions/swarmmode.json | 76 - pkg/engine/testdata/key-vault-certs/dcos.json | 53 - .../testdata/key-vault-certs/swarm.json | 90 - .../testdata/key-vault-certs/swarmmode.json | 63 - .../testdata/largeclusters/dcos-vmas.json | 103 - pkg/engine/testdata/largeclusters/dcos.json | 91 - pkg/engine/testdata/largeclusters/swarm.json | 91 - .../testdata/largeclusters/swarmmode.json | 91 - .../testdata/largeclusters/swarmmodevmas.json | 97 - .../testdata/largeclusters/swarmvmas.json | 97 - pkg/engine/testdata/location/dcos.json | 42 - pkg/engine/testdata/location/swarm.json | 42 - pkg/engine/testdata/simple/dcos.json | 41 - pkg/engine/testdata/simple/dcos1.10.0.json | 42 - pkg/engine/testdata/simple/dcos1.8.8.json | 42 - pkg/engine/testdata/simple/dcos1.9.0.json | 42 - pkg/engine/testdata/simple/swarm.json | 41 - pkg/engine/testdata/simple/swarmmode.json | 51 - .../simple/swarmmode_classicmode.json | 38 - pkg/engine/testdata/vnet/dcosvnet.json | 51 - pkg/engine/testdata/vnet/swarmmodevnet.json | 45 - pkg/engine/testdata/vnet/swarmvnet.json | 45 - pkg/engine/testdata/windows/swarm-vmas.json | 49 - pkg/engine/testdata/windows/swarm.json | 47 - .../testdata/windows/swarmWinAndLin.json | 53 - .../swarmmode-windows_classicmode.json | 43 - .../testdata/windows/swarmmodeWinAndLin.json | 58 - pkg/engine/types.go | 19 - pkg/helpers/azure_skus_dcos.go | 315 - pkg/helpers/azure_skus_dcos_test.go | 229 - pkg/operations/dcosupgrade/doc.go | 6 - pkg/operations/dcosupgrade/upgradecluster.go | 53 - pkg/operations/dcosupgrade/upgrader.go | 247 - scripts/validate-shell.sh | 2 +- 126 files changed, 49 insertions(+), 22315 deletions(-) delete mode 100644 parts/dcos/bstrap/bootstrapcustomdata.yml delete mode 100644 parts/dcos/bstrap/bootstrapparams.t delete mode 100644 parts/dcos/bstrap/bootstrapprovision.sh delete mode 100644 parts/dcos/bstrap/bootstrapresources.t delete mode 100644 parts/dcos/bstrap/bootstrapvars.t delete mode 100644 parts/dcos/bstrap/dcos1.11.0.customdata.t delete mode 100644 parts/dcos/bstrap/dcos1.11.2.customdata.t delete mode 100644 parts/dcos/bstrap/dcosbase.t delete mode 100644 parts/dcos/bstrap/dcosmasterresources.t delete mode 100644 parts/dcos/bstrap/dcosmastervars.t delete mode 100644 parts/dcos/bstrap/dcosprovision.sh delete mode 100644 parts/dcos/dcosWindowsAgentResourcesVmas.t delete mode 100644 parts/dcos/dcosWindowsAgentResourcesVmss.t delete mode 100644 parts/dcos/dcosWindowsProvision.ps1 delete mode 100644 parts/dcos/dcosagentresourcesvmas.t delete mode 100644 parts/dcos/dcosagentresourcesvmss.t delete mode 100644 parts/dcos/dcosagentvars.t delete mode 100644 parts/dcos/dcosbase.t delete mode 100644 parts/dcos/dcoscustomdata110.t delete mode 100644 parts/dcos/dcoscustomdata184.t delete mode 100644 parts/dcos/dcoscustomdata187.t delete mode 100644 parts/dcos/dcoscustomdata188.t delete mode 100644 parts/dcos/dcoscustomdata190.t delete mode 100644 parts/dcos/dcoscustomdata198.t delete mode 100644 parts/dcos/dcosmasterresources.t delete mode 100644 parts/dcos/dcosmastervars.t delete mode 100644 parts/dcos/dcosparams.t delete mode 100644 parts/dcos/dcosprovision.sh delete mode 100755 parts/dcos/dcosprovisionsource.sh delete mode 100644 parts/swarm/Install-ContainerHost-And-Join-Swarm.ps1 delete mode 100644 parts/swarm/Join-SwarmMode-cluster.ps1 delete mode 100644 parts/swarm/configure-swarm-cluster.sh delete mode 100644 parts/swarm/configure-swarmmode-cluster.sh delete mode 100644 parts/swarm/swarmagentresourcesvmas.t delete mode 100644 parts/swarm/swarmagentresourcesvmss.t delete mode 100644 parts/swarm/swarmagentvars.t delete mode 100644 parts/swarm/swarmbase.t delete mode 100644 parts/swarm/swarmmasterresources.t delete mode 100644 parts/swarm/swarmmastervars.t delete mode 100644 parts/swarm/swarmparams.t delete mode 100644 parts/swarm/swarmwinagentresourcesvmas.t delete mode 100644 parts/swarm/swarmwinagentresourcesvmss.t delete mode 100644 pkg/engine/engine_dcos.go delete mode 100644 pkg/engine/testdata/disks-managed/dcos-vmas.json delete mode 100644 pkg/engine/testdata/disks-managed/dcos-vmss.json delete mode 100644 pkg/engine/testdata/disks-managed/swarm-vmas.json delete mode 100644 pkg/engine/testdata/disks-managed/swarm-vmss.json delete mode 100644 pkg/engine/testdata/disks-managed/swarm-windows-vmas.json delete mode 100644 pkg/engine/testdata/disks-managed/swarm-windows-vmss.json delete mode 100644 pkg/engine/testdata/disks-managed/swarmmode-vmas.json delete mode 100644 pkg/engine/testdata/disks-managed/swarmmode-vmss.json delete mode 100644 pkg/engine/testdata/disks-storageaccount/dcos.json delete mode 100644 pkg/engine/testdata/disks-storageaccount/swarm.json delete mode 100644 pkg/engine/testdata/disks-storageaccount/swarmmode.json delete mode 100644 pkg/engine/testdata/extensions/dcos.json delete mode 100644 pkg/engine/testdata/extensions/swarmmode.json delete mode 100644 pkg/engine/testdata/key-vault-certs/dcos.json delete mode 100644 pkg/engine/testdata/key-vault-certs/swarm.json delete mode 100644 pkg/engine/testdata/key-vault-certs/swarmmode.json delete mode 100644 pkg/engine/testdata/largeclusters/dcos-vmas.json delete mode 100644 pkg/engine/testdata/largeclusters/dcos.json delete mode 100644 pkg/engine/testdata/largeclusters/swarm.json delete mode 100644 pkg/engine/testdata/largeclusters/swarmmode.json delete mode 100644 pkg/engine/testdata/largeclusters/swarmmodevmas.json delete mode 100644 pkg/engine/testdata/largeclusters/swarmvmas.json delete mode 100644 pkg/engine/testdata/location/dcos.json delete mode 100644 pkg/engine/testdata/location/swarm.json delete mode 100644 pkg/engine/testdata/simple/dcos.json delete mode 100644 pkg/engine/testdata/simple/dcos1.10.0.json delete mode 100644 pkg/engine/testdata/simple/dcos1.8.8.json delete mode 100644 pkg/engine/testdata/simple/dcos1.9.0.json delete mode 100644 pkg/engine/testdata/simple/swarm.json delete mode 100644 pkg/engine/testdata/simple/swarmmode.json delete mode 100644 pkg/engine/testdata/simple/swarmmode_classicmode.json delete mode 100644 pkg/engine/testdata/vnet/dcosvnet.json delete mode 100644 pkg/engine/testdata/vnet/swarmmodevnet.json delete mode 100644 pkg/engine/testdata/vnet/swarmvnet.json delete mode 100644 pkg/engine/testdata/windows/swarm-vmas.json delete mode 100644 pkg/engine/testdata/windows/swarm.json delete mode 100644 pkg/engine/testdata/windows/swarmWinAndLin.json delete mode 100644 pkg/engine/testdata/windows/swarmmode-windows_classicmode.json delete mode 100644 pkg/engine/testdata/windows/swarmmodeWinAndLin.json delete mode 100644 pkg/helpers/azure_skus_dcos.go delete mode 100644 pkg/helpers/azure_skus_dcos_test.go delete mode 100644 pkg/operations/dcosupgrade/doc.go delete mode 100644 pkg/operations/dcosupgrade/upgradecluster.go delete mode 100644 pkg/operations/dcosupgrade/upgrader.go diff --git a/.codecov/codecov.yml b/.codecov/codecov.yml index ee443ea00..1d56e5377 100644 --- a/.codecov/codecov.yml +++ b/.codecov/codecov.yml @@ -37,6 +37,5 @@ ignore: - "pkg/armhelpers/mockclients.go" - "pkg/engine/testutils.go" - "pkg/test/*.go" - - "pkg/engine/engine_dcos.go" - "pkg/engine/templates_generated.go" - "pkg/i18n/translations_generated.go" diff --git a/README_zh-CN.md b/README_zh-CN.md index b7eb36c70..4dc058b8a 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -2,10 +2,10 @@ ## 概览 -微软容器服务引擎(`aks-engine`)用于将一个容器集群描述文件转化成一组ARM(Azure Resource Manager)模板,通过在Azure上部署这些模板,用户可以很方便地在Azure上建立一套基于Docker的容器服务集群。用户可以自由地选择集群编排引擎DC/OS, Kubernetes或者是Swarm/Swarm Mode。集群描述文件使用和ARM模板相同的语法,它们都可以用来部署Azure容器服务。 +微软容器服务引擎(`aks-engine`)用于将一个容器集群描述文件转化成一组ARM(Azure Resource Manager)模板,通过在Azure上部署这些模板,用户可以很方便地在Azure上建立一套基于Docker的容器服务集群。用户可以自由地选择集群编排引擎DC/OS, Kubernetes或者是Swarm。集群描述文件使用和ARM模板相同的语法,它们都可以用来部署Azure容器服务。 集群描述文件提供了一下几个功能: -* 可以自由选择DC/OS, Kubernetes, Swarm Mode和Swarm等多种编排引擎 +* 可以自由选择DC/OS, Kubernetes和Swarm等多种编排引擎 * 可以自由定制集群节点的规格,包括: * 虚机的规格 * 节点的数量 @@ -18,10 +18,7 @@ * [AKS Engine](docs/aksengine.md) - 演示如何使用ACS引擎来生成基于Docker的容器集群 * [Cluster Definition](docs/clusterdefinition.md) - 详细介绍集群描述文件的格式 -* [DC/OS Walkthrough](docs/dcos.md) - 演示如何使用ACS引擎在Azure上创建DC/OS集群 * [Kubernetes Walkthrough](docs/kubernetes.md) - 演示如何使用ACS引擎在Azure上创建Kubernetes集群 -* [Swarm Walkthrough](docs/swarm.md) - 演示如何使用ACS引擎在Azure上创建Swarm集群 -* [Swarm Mode Walkthrough](docs/swarmmode.md) - 演示如何使用ACS引擎在Azure上创建Swarm Mode集群 * [Custom VNET](examples/vnet) - 演示如何在用户自定义VNET上创建容器集群 * [Attached Disks](examples/disks-storageaccount) - 演示如何在一个集群节点上创建4个磁盘 * [Managed Disks](examples/disks-managed) - 演示如何管理托管磁盘 diff --git a/docs/topics/clusterdefinitions.zh-CN.md b/docs/topics/clusterdefinitions.zh-CN.md index c146791ed..1e8777fa8 100644 --- a/docs/topics/clusterdefinitions.zh-CN.md +++ b/docs/topics/clusterdefinitions.zh-CN.md @@ -20,10 +20,7 @@ 可选的编排引擎如下所示: -1. `DCOS` - 指定编排引擎为 [DC/OS编排引擎](dcos.md)。 -2. `Kubernetes` - 指定编排引擎为 [Kubernetes编排引擎](kubernetes.md)。 -3. `Swarm` - 指定编排引擎为 [Swarm编排引擎](swarm.md)。 -4. `Swarm Mode` - 指定编排引擎为 [Swarm Mode编排引擎](swarmmode.md)。 +1. `Kubernetes` - 指定编排引擎为 [Kubernetes编排引擎](kubernetes.md)。 ### masterProfile `masterProfile` 指定了集群中master节点的各种配置。 @@ -107,10 +104,7 @@ 可选的编排引擎如下所示: -1. `DCOS` - 指定编排引擎为 [DC/OS编排引擎](dcos.md)。 -2. `Swarm` - 指定编排引擎为 [Swarm编排引擎](swarm.md)。 -3. `Kubernetes` - 指定编排引擎为 [Kubernetes编排引擎](kubernetes.md)。 -4. `Swarm Mode` - 指定编排引擎为 [Swarm Mode编排引擎](swarmmode.md)。 +1. `Kubernetes` - 指定编排引擎为 [Kubernetes编排引擎](kubernetes.md)。 ### masterProfile `masterProfile` 指定了集群中master节点的各种配置。 diff --git a/docs/topics/extensions.md b/docs/topics/extensions.md index 4852504dd..387200589 100644 --- a/docs/topics/extensions.md +++ b/docs/topics/extensions.md @@ -169,7 +169,7 @@ In order to install a preprovision extension, there are two required files - sup |File Name|Description| |-----------------------------|---| -|supported-orchestrators.json |Defines what orchestrators are supported by the extension (Swarm, Dcos, or Kubernetes)| +|supported-orchestrators.json |Defines what orchestrators are supported by the extension (Kubernetes)| |template.json |The ARM template used to deploy the extension| |template-link.json |The ARM template snippet which will be injected into azuredeploy.json to call template.json| |EXTENSION-NAME.sh |The script file that will execute on the VM itself via Custom Script Extension to perform installation of the extension| diff --git a/docs/tutorials/quickstart.zh-CN.md b/docs/tutorials/quickstart.zh-CN.md index 1fbef9c3e..3854c326a 100644 --- a/docs/tutorials/quickstart.zh-CN.md +++ b/docs/tutorials/quickstart.zh-CN.md @@ -1,6 +1,6 @@ # 微软Azure容器服务引擎 -微软容器服务引擎(`aks-engine`)用于将一个容器集群描述文件转化成一组ARM(Azure Resource Manager)模板,通过在Azure上部署这些模板,用户可以很方便地在Azure上建立一套基于Docker的容器服务集群。用户可以自由地选择集群编排引擎DC/OS, Kubernetes或者是Swarm/Swarm Mode。集群描述文件使用和ARM模板相同的语法,它们都可以用来部署Azure容器服务。 +微软容器服务引擎(`aks-engine`)用于将一个容器集群描述文件转化成一组ARM(Azure Resource Manager)模板,通过在Azure上部署这些模板,用户可以很方便地在Azure上建立一套基于Docker的容器服务集群。用户可以自由地选择集群编排引擎DC/OS, Kubernetes或者是。集群描述文件使用和ARM模板相同的语法,它们都可以用来部署Azure容器服务。 # 基于Docker的部署 diff --git a/parts/dcos/bstrap/bootstrapcustomdata.yml b/parts/dcos/bstrap/bootstrapcustomdata.yml deleted file mode 100644 index 2d234013e..000000000 --- a/parts/dcos/bstrap/bootstrapcustomdata.yml +++ /dev/null @@ -1,87 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: - - [ ln, -s, /bin/rm, /usr/bin/rm ] - - [ ln, -s, /bin/mkdir, /usr/bin/mkdir ] - - [ ln, -s, /bin/tar, /usr/bin/tar ] - - [ ln, -s, /bin/ln, /usr/bin/ln ] - - [ ln, -s, /bin/cp, /usr/bin/cp ] - - [ ln, -s, /bin/systemctl, /usr/bin/systemctl ] - - [ ln, -s, /bin/mount, /usr/bin/mount ] - - [ ln, -s, /bin/bash, /usr/bin/bash ] - - [ ln, -s, /usr/sbin/useradd, /usr/bin/useradd ] - - /opt/azure/containers/provision.sh - - /opt/azure/dcos/init_bootstrap.sh -write_files: -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- content: | - #!/bin/sh - - curl -H Metadata:true -fsSL "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/privateIpAddress?api-version=2017-04-02&format=text" - owner: root - path: /opt/azure/dcos/genconf/ip-detect - permissions: '0755' -- content: | - bootstrap_url: http://BOOTSTRAP_IP:8086 - cluster_name: azure-dcos - exhibitor_storage_backend: static - master_discovery: static - oauth_enabled: BOOTSTRAP_OAUTH_ENABLED - ip_detect_public_filename: genconf/ip-detect - master_list: -MASTER_IP_LIST - resolvers: - - 168.63.129.16 - dns_search: - owner: root - path: /opt/azure/dcos/genconf/config.yaml - permissions: '0644' -- content: | - #!/bin/bash - - source /opt/azure/containers/provision_source.sh - - # update dns_search - dns=$(grep search /etc/resolv.conf | cut -d " " -f 2) - sed -i "/dns_search:/c dns_search: $dns" /opt/azure/dcos/genconf/config.yaml - # install and run bootstrap package - cd /opt/azure/dcos - retrycmd_if_failure 10 10 120 curl -fsSL -o dcos_generate_config.sh.sha1sum {{{dcosBootstrapURL}}}.sha1sum - retry_download 1 1 120 {{{dcosBootstrapURL}}} dcos_generate_config.sh $(cat dcos_generate_config.sh.sha1sum) - bash dcos_generate_config.sh - docker run -d -p 8086:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx - owner: root - path: /opt/azure/dcos/init_bootstrap.sh - permissions: '0755' -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" diff --git a/parts/dcos/bstrap/bootstrapparams.t b/parts/dcos/bstrap/bootstrapparams.t deleted file mode 100644 index 1bf2e220c..000000000 --- a/parts/dcos/bstrap/bootstrapparams.t +++ /dev/null @@ -1,149 +0,0 @@ - "linuxAdminUsername": { - "metadata": { - "description": "User name for the Linux Virtual Machines (SSH or Password)." - }, - "type": "string" - }, - {{range .ExtensionProfiles}} - "{{.Name}}Parameters": { - "metadata": { - "description": "Parameters for the extension" - }, - "type": "securestring" - }, - {{end}} - "bootstrapStaticIP": { - "metadata": { - "description": "Sets the static IP of the first bootstrap" - }, - "type": "string" - }, - "bootstrapVMSize": { - {{GetMasterAllowedSizes}} - "metadata": { - "description": "The size of the Virtual Machine." - }, - "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" - }, - "nameSuffix": { - "defaultValue": "{{GetUniqueNameSuffix}}", - "metadata": { - "description": "A string hash of the bootstrap DNS name to uniquely identify the cluster." - }, - "type": "string" - }, - "osImageName": { - "defaultValue": "", - "metadata": { - "description": "Name of a Linux OS image. Needs to be used in conjuction with osImageResourceGroup." - }, - "type": "string" - }, - "osImageResourceGroup": { - "defaultValue": "", - "metadata": { - "description": "Resource group of a Linux OS image. Needs to be used in conjuction with osImageName." - }, - "type": "string" - }, - "osImageOffer": { - "defaultValue": "UbuntuServer", - "metadata": { - "description": "Linux OS image type." - }, - "type": "string" - }, - "osImagePublisher": { - "defaultValue": "Canonical", - "metadata": { - "description": "OS image publisher." - }, - "type": "string" - }, - "osImageSKU": { - "defaultValue": "16.04-LTS", - "metadata": { - "description": "OS image SKU." - }, - "type": "string" - }, - "osImageVersion": { - "defaultValue": "16.04.201804050", - "metadata": { - "description": "OS image version." - }, - "type": "string" - }, - "fqdnEndpointSuffix":{ - "defaultValue": "cloudapp.azure.com", - "metadata": { - "description": "Endpoint of FQDN." - }, - "type": "string" - }, - "targetEnvironment": { - "defaultValue": "AzurePublicCloud", - "metadata": { - "description": "The azure deploy environment. Currently support: AzurePublicCloud, AzureChinaCloud" - }, - "type": "string" - }, - "location": { - "defaultValue": "{{GetLocation}}", - "metadata": { - "description": "Sets the location for all resources in the cluster" - }, - "type": "string" - } -{{if .LinuxProfile.HasSecrets}} - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - , - "linuxKeyVaultID{{$vIndex}}": { - "metadata": { - "description": "KeyVaultId{{$vIndex}} to install certificates from on linux machines." - }, - "type": "string" - } - {{range $cIndex, $cert := $vault.VaultCertificates}} - , - "linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}": { - "metadata": { - "description": "CertificateURL{{$cIndex}} to install from KeyVaultId{{$vIndex}} on linux machines." - }, - "type": "string" - } - {{end}} - {{end}} -{{end}} -{{if .HasWindows}}{{if .WindowsProfile.HasSecrets}} - {{range $vIndex, $vault := .WindowsProfile.Secrets}} - , - "windowsKeyVaultID{{$vIndex}}": { - "metadata": { - "description": "KeyVaultId{{$vIndex}} to install certificates from on windows machines." - }, - "type": "string" - } - {{range $cIndex, $cert := $vault.VaultCertificates}} - , - "windowsKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}": { - "metadata": { - "description": "Url to retrieve Certificate{{$cIndex}} from KeyVaultId{{$vIndex}} to install on windows machines." - }, - "type": "string" - }, - "windowsKeyVaultID{{$vIndex}}CertificateStore{{$cIndex}}": { - "metadata": { - "description": "CertificateStore to install Certificate{{$cIndex}} from KeyVaultId{{$vIndex}} on windows machines." - }, - "type": "string" - } - {{end}} - {{end}} -{{end}} {{end}} diff --git a/parts/dcos/bstrap/bootstrapprovision.sh b/parts/dcos/bstrap/bootstrapprovision.sh deleted file mode 100644 index bc0a63ae8..000000000 --- a/parts/dcos/bstrap/bootstrapprovision.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -source /opt/azure/containers/provision_source.sh -source /opt/azure/dcos/environment - -# default dc/os component download address (Azure CDN) -packages=( - https://dcos-mirror.azureedge.net/pkg/libltdl7_2.4.6-0.1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb -) - -# sha1sum checksums for @packages -sha1sums=( - 9a0f9f2769d3dc834737aa7df50aaaea369af98d - 94f6e89be6d45d9988269a237eb27c7d6a844d7f -) - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - packages=( - http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - http://mirror.kaiyuanshe.cn/docker-ce/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - ) - ;; -esac - -len=$((${#packages[@]}-1)) -for i in $(seq 0 $len); do - retry_get_install_deb 10 10 120 ${packages[$i]} ${sha1sums[$i]} - if [ $? -ne 0 ]; then - exit 1 - fi -done diff --git a/parts/dcos/bstrap/bootstrapresources.t b/parts/dcos/bstrap/bootstrapresources.t deleted file mode 100644 index da037bf0f..000000000 --- a/parts/dcos/bstrap/bootstrapresources.t +++ /dev/null @@ -1,158 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('bootstrapNSGName')]", - "properties": { - "securityRules": [ - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - }, - { - "properties": { - "priority": 201, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "8086", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow bootstrap service", - "sourceAddressPrefix": "*" - }, - "name": "Port8086" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('bootstrapNSGID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('bootstrapVMName'), '-nic')]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "privateIPAddress": "[variables('bootstrapStaticIP')]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[variables('bootstrapNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('bootstrapVMName'), '-nic')]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ], - "tags": - { - "creationSource": "[concat('acsengine-', variables('bootstrapVMName'))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "bootstrap" - }, - "location": "[variables('location')]", - "name": "[variables('bootstrapVMName')]", - "properties": { - "hardwareProfile": { - "vmSize": "[variables('bootstrapVMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('bootstrapVMName'), '-nic'))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[variables('bootstrapVMName')]", - {{GetDCOSBootstrapCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"name": "[concat(variables('bootstrapVMName'), '-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('masterStorageAccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'vhds/',variables('bootstrapVMName'),-osdisk.vhd')]" - } -{{end}} -{{if ne .OrchestratorProfile.DcosConfig.BootstrapProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": "60" -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('bootstrapVMName'), '/bootstrapready')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "[concat('/bin/bash -c \"until curl -f http://', variables('bootstrapStaticIP'), ':8086/dcos_install.sh > /dev/null; do echo waiting for bootstrap node; sleep 15; done; echo bootstrap node up\"')]" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} diff --git a/parts/dcos/bstrap/bootstrapvars.t b/parts/dcos/bstrap/bootstrapvars.t deleted file mode 100644 index 3cc8c0a2d..000000000 --- a/parts/dcos/bstrap/bootstrapvars.t +++ /dev/null @@ -1,9 +0,0 @@ -{{if .OrchestratorProfile.DcosConfig.BootstrapProfile}} - , - "dcosBootstrapURL": "[parameters('dcosBootstrapURL')]", - "bootstrapVMSize": "[parameters('bootstrapVMSize')]", - "bootstrapNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('bootstrapNSGName'))]", - "bootstrapNSGName": "[concat('bootstrap-nsg-', variables('nameSuffix'))]", - "bootstrapVMName": "[concat('bootstrap-', variables('nameSuffix'))]", - "bootstrapStaticIP": "[parameters('bootstrapStaticIP')]" -{{end}} diff --git a/parts/dcos/bstrap/dcos1.11.0.customdata.t b/parts/dcos/bstrap/dcos1.11.0.customdata.t deleted file mode 100644 index 2ce2107ca..000000000 --- a/parts/dcos/bstrap/dcos1.11.0.customdata.t +++ /dev/null @@ -1,99 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- ln -s /bin/rm /usr/bin/rm -- ln -s /bin/mkdir /usr/bin/mkdir -- ln -s /bin/tar /usr/bin/tar -- ln -s /bin/ln /usr/bin/ln -- ln -s /bin/cp /usr/bin/cp -- ln -s /bin/systemctl /usr/bin/systemctl -- ln -s /bin/mount /usr/bin/mount -- ln -s /bin/bash /usr/bin/bash -- ln -s /usr/sbin/useradd /usr/bin/useradd -- systemctl disable --now resolvconf.service -- systemctl mask --now lxc-net.service -- systemctl disable --now unscd.service -- systemctl stop --now unscd.service -- /opt/azure/containers/provision.sh -- bash /tmp/dcos/dcos_install.sh ROLENAME -- /opt/azure/dcos/postinstall-cond.sh -- bash /opt/azure/dcos/diagnostics_fix.sh -write_files: -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- content: | - #!/bin/bash - - for f in /opt/mesosphere/packages/dcos-config--setup_*/etc/dcos-diagnostics-runner-config.json; do - if [ -e $f ]; then - sed -i.bak "99 s/1s/10s/" $f - fi - done - owner: root - path: /opt/azure/dcos/diagnostics_fix.sh - permissions: '0744' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -- content: | - #!/bin/bash - if [ -f /opt/azure/dcos/postinstall.sh ]; then /opt/azure/dcos/postinstall.sh; fi - path: /opt/azure/dcos/postinstall-cond.sh - permissions: "0744" - owner: "root" diff --git a/parts/dcos/bstrap/dcos1.11.2.customdata.t b/parts/dcos/bstrap/dcos1.11.2.customdata.t deleted file mode 100644 index 36670658f..000000000 --- a/parts/dcos/bstrap/dcos1.11.2.customdata.t +++ /dev/null @@ -1,87 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- ln -s /bin/rm /usr/bin/rm -- ln -s /bin/mkdir /usr/bin/mkdir -- ln -s /bin/tar /usr/bin/tar -- ln -s /bin/ln /usr/bin/ln -- ln -s /bin/cp /usr/bin/cp -- ln -s /bin/systemctl /usr/bin/systemctl -- ln -s /bin/mount /usr/bin/mount -- ln -s /bin/bash /usr/bin/bash -- ln -s /usr/sbin/useradd /usr/bin/useradd -- systemctl disable --now resolvconf.service -- systemctl mask --now lxc-net.service -- systemctl disable --now unscd.service -- systemctl stop --now unscd.service -- /opt/azure/containers/provision.sh -- bash /tmp/dcos/dcos_install.sh ROLENAME -- /opt/azure/dcos/postinstall-cond.sh -write_files: -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -- content: | - #!/bin/bash - if [ -f /opt/azure/dcos/postinstall.sh ]; then /opt/azure/dcos/postinstall.sh; fi - path: /opt/azure/dcos/postinstall-cond.sh - permissions: "0744" - owner: "root" diff --git a/parts/dcos/bstrap/dcosbase.t b/parts/dcos/bstrap/dcosbase.t deleted file mode 100644 index 58cc6a3de..000000000 --- a/parts/dcos/bstrap/dcosbase.t +++ /dev/null @@ -1,65 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - "dcosBinariesURL": { - "metadata": { - "description": "The download url for dcos/mesos windows binaries." - }, - "type": "string" - }, - "dcosBinariesVersion": { - "metadata": { - "description": "DCOS windows binaries version" - }, - "type": "string" - }, - {{template "windowsparams.t"}}, - {{end}} - {{template "dcos/dcosparams.t" .}} - {{template "dcos/bstrap/bootstrapparams.t" .}}, - {{template "masterparams.t" .}} - }, - "variables": { - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "dcos/dcosagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "dcos/bstrap/dcosmastervars.t" .}} - {{template "dcos/bstrap/bootstrapvars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosWindowsAgentResourcesVmas.t" .}}, - {{else}} - {{template "dcos/dcosWindowsAgentResourcesVmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosagentresourcesvmas.t" .}}, - {{else}} - {{template "dcos/dcosagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "dcos/bstrap/bootstrapresources.t" .}}, - {{template "dcos/bstrap/dcosmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} diff --git a/parts/dcos/bstrap/dcosmasterresources.t b/parts/dcos/bstrap/dcosmasterresources.t deleted file mode 100644 index b9af27b3f..000000000 --- a/parts/dcos/bstrap/dcosmasterresources.t +++ /dev/null @@ -1,355 +0,0 @@ -{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountExhibitorName')]", - "properties": { - "accountType": "Standard_LRS" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - {{GetVNETSubnetDependencies}} - ], - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets true}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] -{{if .MasterProfile.OAuthEnabled}} - ,"loadBalancingRules": [ - { - "name": "LBRule443", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - }, - { - "name": "LBRule80", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - } - ], - "probes": [ - { - "name": "dcosMasterProbe", - "properties": { - "protocol": "Http", - "port": 5050, - "requestPath": "/health", - "intervalInSeconds": 5, - "numberOfProbes": 2 - } - } - ] -{{end}} - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('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')]", - "location": "[variables('location')]", - "name": "[variables('masterNSGName')]", - "properties": { - "securityRules": [ - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('masterNSGID')]", -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - ,"networkSecurityGroup": { - "id": "[variables('masterNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), '/extensions/bootstrapready')]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "master" - }, - "location": "[variables('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())]", - {{GetDCOSMasterCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('masterVMNamePrefix'), sub(variables('masterCount'), 1))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), sub(variables('masterCount'), 1), '/waitforleader')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "sh -c 'until ping -c1 leader.mesos;do echo waiting for leader.mesos;sleep 15;done;echo leader.mesos up'" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} diff --git a/parts/dcos/bstrap/dcosmastervars.t b/parts/dcos/bstrap/dcosmastervars.t deleted file mode 100644 index e95d89e0b..000000000 --- a/parts/dcos/bstrap/dcosmastervars.t +++ /dev/null @@ -1,141 +0,0 @@ - "adminUsername": "[parameters('linuxAdminUsername')]", - "targetEnvironment": "[parameters('targetEnvironment')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", - "apiVersionLinkDefault": "2015-01-01", - "singleQuote": "'", - "doubleSingleQuote": "''", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "orchestratorVersion": "{{.OrchestratorProfile.OrchestratorVersion}}", -{{if .HasWindows}} - "windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsBackendPort": 3389, - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "dcosWindowsBootstrapURL" : "[parameters('dcosWindowsBootstrapURL')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsMasterCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), variables('singleQuote'), ' ; ')]", - - "windowsMasterCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsMasterCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1')]", -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterHttpSourceAddressPrefix": "{{.MasterProfile.HTTPSourceAddressPrefix}}", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('masterNSGName'))]", - "masterNSGName": "[concat(variables('orchestratorName'), '-master-nsg-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "apiVersionStorage": "2015-06-15", - - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location'),variables('orchestratorName')))]", - "masterStorageAccountExhibitorName": "[concat(variables('storageAccountBaseName'), 'exhb0')]", - "storageAccountType": "Standard_LRS", -{{if .HasStorageAccountDisks}} - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), 'mstr0')]", -{{end}} -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMNic": [ - "[concat(variables('masterVMNamePrefix'), 'nic-0')]", - "[concat(variables('masterVMNamePrefix'), 'nic-1')]", - "[concat(variables('masterVMNamePrefix'), 'nic-2')]", - "[concat(variables('masterVMNamePrefix'), 'nic-3')]", - "[concat(variables('masterVMNamePrefix'), 'nic-4')]", - "[concat(variables('masterVMNamePrefix'), 'nic-5')]", - "[concat(variables('masterVMNamePrefix'), 'nic-6')]" - ], - "masterVMSize": "[parameters('masterVMSize')]", - "nameSuffix": "[parameters('nameSuffix')]", - "oauthEnabled": "{{.MasterProfile.OAuthEnabled}}", - "orchestratorName": "dcos", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "[parameters('osImageSKU')]", - "osImageVersion": "[parameters('osImageVersion')]", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", - "masterLbInboundNatRules": [ - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" - } - ] - ] diff --git a/parts/dcos/bstrap/dcosprovision.sh b/parts/dcos/bstrap/dcosprovision.sh deleted file mode 100644 index 8ff378efb..000000000 --- a/parts/dcos/bstrap/dcosprovision.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -source /opt/azure/containers/provision_source.sh -source /opt/azure/dcos/environment - -TMPDIR="/tmp/dcos" -mkdir -p $TMPDIR - -# default dc/os component download address (Azure CDN) -packages=( - https://dcos-mirror.azureedge.net/pkg/libipset3_6.29-1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/ipset_6.29-1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/unzip_6.0-20ubuntu1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/libltdl7_2.4.6-0.1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - https://dcos-mirror.azureedge.net/pkg/selinux-utils_2.4-3build2_amd64.deb -) - -# sha1sum checksums for @packages -sha1sums=( - f88d09688291917c8bb65682fea9f5d571ec8d6a - 807dc11f5bfa39bb4b0dc9024fc51bb309905a21 - 57ae2bb6ded1fdf91b6d518294134df1ff13fcca - 9a0f9f2769d3dc834737aa7df50aaaea369af98d - 94f6e89be6d45d9988269a237eb27c7d6a844d7f - 77bdb5847060845c0a158f567b1ddd7fa34b7236 -) - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - packages=( - http://acsengine.blob.core.chinacloudapi.cn/dcos/libipset3_6.29-1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/ipset_6.29-1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/unzip_6.0-20ubuntu1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - http://mirror.kaiyuanshe.cn/docker-ce/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/selinux-utils_2.4-3build2_amd64.deb - ) - ;; -esac - -len=$((${#packages[@]}-1)) -for i in $(seq 0 $len); do - retry_get_install_deb 10 10 120 ${packages[$i]} ${sha1sums[$i]} - if [ $? -ne 0 ]; then - exit 1 - fi -done - -retrycmd_if_failure 10 10 120 curl -fsSL -o $TMPDIR/dcos_install.sh http://BOOTSTRAP_IP:8086/dcos_install.sh -if [ $? -ne 0 ]; then - exit 1 -fi diff --git a/parts/dcos/dcosWindowsAgentResourcesVmas.t b/parts/dcos/dcosWindowsAgentResourcesVmas.t deleted file mode 100644 index 3d966f8a9..000000000 --- a/parts/dcos/dcosWindowsAgentResourcesVmas.t +++ /dev/null @@ -1,294 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if HasWindowsCustomImage}} - {"type": "Microsoft.Compute/images", - "apiVersion": "2017-12-01", - "name": "{{.Name}}CustomWindowsImage", - "location": "[variables('location')]", - "properties": { - "storageProfile": { - "osDisk": { - "osType": "Windows", - "osState": "Generalized", - "blobUri": "[parameters('agentWindowsSourceUrl')]", - "storageAccountType": "Standard_LRS" - } - } - } - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{GetDCOSWindowsAgentCustomData .}} - - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { -{{if HasWindowsCustomImage}} - "id": "[resourceId('Microsoft.Compute/images','{{.Name}}CustomWindowsImage')]" -{{else}} - "offer": "[variables('agentWindowsOffer')]", - "publisher": "[variables('agentWindowsPublisher')]", - "sku": "[variables('agentWindowsSKU')]", - "version": "[variables('agentWindowsVersion')]" -{{end}} - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/cse')]", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('{{.Name}}windowsAgentCustomScript')]" - } - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } diff --git a/parts/dcos/dcosWindowsAgentResourcesVmss.t b/parts/dcos/dcosWindowsAgentResourcesVmss.t deleted file mode 100644 index ef17f773c..000000000 --- a/parts/dcos/dcosWindowsAgentResourcesVmss.t +++ /dev/null @@ -1,229 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if HasWindowsCustomImage}} - {"type": "Microsoft.Compute/images", - "apiVersion": "2017-12-01", - "name": "{{.Name}}CustomWindowsImage", - "location": "[variables('location')]", - "properties": { - "storageProfile": { - "osDisk": { - "osType": "Windows", - "osState": "Generalized", - "blobUri": "[parameters('agentWindowsSourceUrl')]", - "storageAccountType": "Standard_LRS" - } - } - } - }, -{{end}} -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if IsPublic .Ports}} - ,"[concat('Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'))]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "overprovision": false, - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "computerNamePrefix": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs')]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{GetDCOSWindowsAgentCustomData .}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { -{{if HasWindowsCustomImage}} - "id": "[resourceId('Microsoft.Compute/images','{{.Name}}CustomWindowsImage')]" -{{else}} - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "latest" -{{end}} - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]" - - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - }, - "extensionProfile": { - "extensions": [ - { - "name": "vmssCustomScriptExtension", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('{{.Name}}windowsAgentCustomScript')]" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } diff --git a/parts/dcos/dcosWindowsProvision.ps1 b/parts/dcos/dcosWindowsProvision.ps1 deleted file mode 100644 index a2933b7ea..000000000 --- a/parts/dcos/dcosWindowsProvision.ps1 +++ /dev/null @@ -1,214 +0,0 @@ -<# - .SYNOPSIS - Provisions VM as a DCOS agent. - - .DESCRIPTION - Provisions VM as a DCOS agent. - - Invoke by: - -#> - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $masterCount, - - [string] - [ValidateNotNullOrEmpty()] - $firstMasterIP, - - [string] - [ValidateNotNullOrEmpty()] - $bootstrapUri, - - [parameter()] - [ValidateNotNullOrEmpty()] - $isAgent, - - [parameter()] - [ValidateNotNullOrEmpty()] - $subnet, - - [parameter()] - [AllowNull()] - $isPublic = $false, - - [string] - [AllowNull()] - $customAttrs = "", - - [string] - [AllowNull()] - $preprovisionExtensionParams = "" -) - - - - -$global:BootstrapInstallDir = "C:\AzureData" - -filter Timestamp {"$(Get-Date -Format o): $_"} - - -function -Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - - -function -Expand-ZIPFile($file, $destination) -{ - $shell = new-object -com shell.application - $zip = $shell.NameSpace($file) - foreach($item in $zip.items()) - { - $shell.Namespace($destination).copyhere($item, 0x14) - } -} - - -function -Remove-Directory($dirname) -{ - - try { - #Get-ChildItem $dirname -Recurse | Remove-Item -force -confirm:$false - # This doesn't work because of long file names - # But this does: - Invoke-Expression ("cmd /C rmdir /s /q "+$dirname) - } - catch { - # If this fails we don't want it to stop - - } -} - - -function -Check-Subnet ([string]$cidr, [string]$ip) -{ - try { - - $network, [int]$subnetlen = $cidr.Split('/') - - if ($subnetlen -eq 0) - { - $subnetlen = 8 # Default in case we get an IP addr, not CIDR - } - $a = ([IPAddress] $network) - [uint32] $unetwork = [uint32]$a.Address - - $mask = -bnot ((-bnot [uint32]0) -shl (32 - $subnetlen)) - - $a = [IPAddress]$ip - [uint32] $uip = [uint32]$a.Address - - return ($unetwork -eq ($mask -band $uip)) - } - catch { - return $false - } -} - -# -# Gets the bootstrap script from the blob store and places it in c:\AzureData - -function -Get-BootstrapScript($download_uri, $download_dir) -{ - # Get Mesos Binaries - $scriptfile = "DCOSWindowsAgentSetup.ps1" - - Write-Log "get script $download_uri/$scriptfile and put it $download_dir\$scriptfile" - - Invoke-WebRequest -Uri ($download_uri+"/"+$scriptfile) -OutFile ($download_dir+"\"+$scriptfile) -} - - -try -{ - # Set to false for debugging. This will output the start script to - # c:\AzureData\dcosProvisionScript.log, and then you can RDP - # to the windows machine, and run the script manually to watch - # the output. - Write-Log "Get the install script" - - Write-Log ("Parameters = isAgent = ["+ $isAgent + "] mastercount = ["+$MasterCount + "] First master ip= [" + $firstMasterIp+ "] boostrap URI = ["+ $bootstrapUri+"] Subnet = ["+ $subnet +"]" + " -customAttrs " + $customAttrs + " -preprovisionExtensionParms = "+ $preprovisionExtensionParams ) - - # Get the boostrap script - - Get-BootstrapScript $bootstrapUri $global:BootstrapInstallDir - - # Convert Master count and first IP to a JSON array of IPAddresses - $ip = ([IPAddress]$firstMasterIp).getAddressBytes() - [Array]::Reverse($ip) - $ip = ([IPAddress]($ip -join '.')).Address - - $MasterIP = @([IPAddress]$null) - - for ($i = 0; $i -lt $MasterCount; $i++ ) - { - $new_ip = ([IPAddress]$ip).getAddressBytes() - [Array]::Reverse($new_ip) - $new_ip = [IPAddress]($new_ip -join '.') - $MasterIP += $new_ip - - $ip++ - - } - $master_str = $MasterIP.IPAddressToString - - # Add the port numbers - if ($master_str.count -eq 1) { - $master_str += ":2181" - } - else { - for ($i = 0; $i -lt $master_str.count; $i++) - { - $master_str[$i] += ":2181" - } - } - $master_json = ConvertTo-Json $master_str - $master_json = $master_json -replace [Environment]::NewLine,"" - - $private_ip = ( Get-NetIPAddress | where { $_.AddressFamily -eq "IPv4" } | where { Check-Subnet $subnet $_.IPAddress } ) # We know the subnet we are on. Makes it easier and more robust - [Environment]::SetEnvironmentVariable("DCOS_AGENT_IP", $private_ip.IPAddress, "Machine") - - if ($isAgent) - { - $run_cmd = $global:BootstrapInstallDir+"\DCOSWindowsAgentSetup.ps1 -MasterIP '$master_json' -AgentPrivateIP "+($private_ip.IPAddress) +" -BootstrapUrl '$bootstrapUri' " - if ($isPublic) - { - $run_cmd += " -isPublic:`$true " - } - if ($customAttrs) - { - $run_cmd += " -customAttrs '$customAttrs'" - } - $run_cmd += ">"+$global:BootstrapInstallDir+"\DCOSWindowsAgentSetup.log 2>&1" - Write-Log "run setup script $run_cmd" - Invoke-Expression $run_cmd - Write-Log "setup script completed" - } - else # We must be deploying a master - { - $run_cmd = $global:BootstrapInstallDir+"\DCOSWindowsMasterSetup.ps1 -MasterIP '$master_json' -MasterPrivateIP $privateIP.IPAddress -BootstrapUrl '$bootstrapUri'" - Write-Log "run setup script $run_cmd" - Invoke-Expression $run_cmd - } - - PREPROVISION_EXTENSION - - Write-Log "Provisioning script succeeded" -} -catch -{ - Write-Log "Provisioning script failed" - Write-Error $_ - exit 1 -} diff --git a/parts/dcos/dcosagentresourcesvmas.t b/parts/dcos/dcosagentresourcesvmas.t deleted file mode 100644 index 795869b83..000000000 --- a/parts/dcos/dcosagentresourcesvmas.t +++ /dev/null @@ -1,250 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" -{{if HasBootstrap}} - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), /extensions/bootstrapready')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - {{GetDCOSAgentCustomData .}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - - } - }, - "type": "Microsoft.Compute/virtualMachines" - } diff --git a/parts/dcos/dcosagentresourcesvmss.t b/parts/dcos/dcosagentresourcesvmss.t deleted file mode 100644 index dac37af62..000000000 --- a/parts/dcos/dcosagentresourcesvmss.t +++ /dev/null @@ -1,205 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if IsPublic .Ports}} - ,"[concat('Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'))]" -{{end}} -{{if HasBootstrap}} - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), '/extensions/bootstrapready')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), 'vmss')]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'vmss')]", - "properties": { - "overprovision": false, - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", - {{GetDCOSAgentCustomData .}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]" - - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } diff --git a/parts/dcos/dcosagentvars.t b/parts/dcos/dcosagentvars.t deleted file mode 100644 index 859603b62..000000000 --- a/parts/dcos/dcosagentvars.t +++ /dev/null @@ -1,64 +0,0 @@ - "{{.Name}}Count": "[parameters('{{.Name}}Count')]", - "{{.Name}}NSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('{{.Name}}NSGName'))]", - "{{.Name}}NSGName": "[concat(variables('orchestratorName'), '-{{.Name}}-nsg-', variables('nameSuffix'))]", -{{if .IsWindows}} - - "winResourceNamePrefix" : "[substring(variables('nameSuffix'), 0, 5)]", - {{if IsPublic .Ports}} - "{{.Name}}VMNamePrefix": "[concat('wp', variables('winResourceNamePrefix'), add(900,variables('{{.Name}}Index')))]", - "{{.Name}}windowsAgentCustomAttributes": "[concat(' -customAttrs ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentCustomNodeAttributes . }}', variables('doubleSingleQuote') )]", - "{{.Name}}windowsAgentCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'), '-subnet ', variables('{{.Name}}Subnet'), ' -MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), ' -bootstrapUri ', '\"', variables('dcosWindowsBootstrapURL'), '\"', ' -isAgent $true -isPublic $true ', variables('{{.Name}}windowsAgentCustomAttributes'), ' -preprovisionExtensionParams ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentPreprovisionParameters .}}', variables('doubleSingleQuote'), variables('singleQuote'), ' ; ')]", - {{else}} - "{{.Name}}VMNamePrefix": "[concat('w', variables('winResourceNamePrefix'), add(900,variables('{{.Name}}Index')))]", - "{{.Name}}windowsAgentCustomAttributes": "[concat(' -customAttrs ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentCustomNodeAttributes . }}', variables('doubleSingleQuote') )]", - "{{.Name}}windowsAgentCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'), '-subnet ', variables('{{.Name}}Subnet'), ' -MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), ' -bootstrapUri ', '\"', variables('dcosWindowsBootstrapURL'), '\"', ' -isAgent $true -isPublic $false ', variables('{{.Name}}windowsAgentCustomAttributes'), ' -preprovisionExtensionParams ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentPreprovisionParameters .}}', variables('doubleSingleQuote'), variables('singleQuote'), ' ; ')]", - {{end}} - - "{{.Name}}windowsAgentCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('{{.Name}}windowsAgentCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1; exit $LASTEXITCODE')]", - -{{else}} - "{{.Name}}VMNamePrefix": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'), '-')]", -{{end}} - - "{{.Name}}VMSize": "[parameters('{{.Name}}VMSize')]", - "{{.Name}}VMSizeTier": "[split(parameters('{{.Name}}VMSize'),'_')[0]]", -{{if .IsAvailabilitySets}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[add(div(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),1)))]", - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),variables('{{.Name}}Index'))]", - {{end}} - "{{.Name}}AvailabilitySet": "[concat('{{.Name}}-availabilitySet-', variables('nameSuffix'))]", - "{{.Name}}Offset": "[parameters('{{.Name}}Offset')]", -{{else}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", - {{end}} -{{end}} -{{if .IsCustomVNET}} - "{{.Name}}VnetSubnetID": "[parameters('{{.Name}}VnetSubnetID')]", -{{else}} - "{{.Name}}Subnet": "[parameters('{{.Name}}Subnet')]", - "{{.Name}}SubnetName": "[concat(variables('orchestratorName'), '-{{.Name}}Subnet')]", - "{{.Name}}VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('{{.Name}}SubnetName'))]", -{{end}} -{{if IsPublic .Ports}} - "{{.Name}}EndpointDNSNamePrefix": "[tolower(parameters('{{.Name}}EndpointDNSNamePrefix'))]", - "{{.Name}}IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('{{.Name}}EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "{{.Name}}LbBackendPoolName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('{{.Name}}LbName'))]", - "{{.Name}}LbIPConfigID": "[concat(variables('{{.Name}}LbID'),'/frontendIPConfigurations/', variables('{{.Name}}LbIPConfigName'))]", - "{{.Name}}LbIPConfigName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - {{if .IsWindows}} - "{{.Name}}WindowsRDPNatRangeStart": 3389, - "{{.Name}}WindowsRDPEndRangeStop": "[add(variables('{{.Name}}WindowsRDPNatRangeStart'), add(variables('{{.Name}}Count'),variables('{{.Name}}Count')))]", - - {{end}} -{{end}} -{{if HasPrivateRegistry}} - "registry" : "[tolower(parameters('registry'))]", - "registryKey" : "[parameters('registryKey')]", -{{else}} - "registry" : "", - "registryKey" : "", -{{end}} diff --git a/parts/dcos/dcosbase.t b/parts/dcos/dcosbase.t deleted file mode 100644 index e2be64169..000000000 --- a/parts/dcos/dcosbase.t +++ /dev/null @@ -1,65 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - "dcosBinariesURL": { - "metadata": { - "description": "The download url for dcos/mesos windows binaries." - }, - "type": "string" - }, - "dcosBinariesVersion": { - "metadata": { - "description": "DCOS windows binaries version" - }, - "type": "string" - }, - {{template "windowsparams.t"}}, - {{end}} - {{template "dcos/dcosparams.t" .}} - {{template "masterparams.t" .}} - }, - "variables": { - "dcosRepositoryURL": "[parameters('dcosRepositoryURL')]", - "dcosClusterPackageListID": "[parameters('dcosClusterPackageListID')]", - "dcosProviderPackageID": "[parameters('dcosProviderPackageID')]", - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "dcos/dcosagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "dcos/dcosmastervars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosWindowsAgentResourcesVmas.t" .}}, - {{else}} - {{template "dcos/dcosWindowsAgentResourcesVmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosagentresourcesvmas.t" .}}, - {{else}} - {{template "dcos/dcosagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "dcos/dcosmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} diff --git a/parts/dcos/dcoscustomdata110.t b/parts/dcos/dcoscustomdata110.t deleted file mode 100644 index 86730c990..000000000 --- a/parts/dcos/dcoscustomdata110.t +++ /dev/null @@ -1,343 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdc-gpt ];then echo DCOS-5890;parted -s /dev/sdc mklabel - gpt&&touch /var/lib/sdc-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdd-gpt ];then echo DCOS-5890;parted -s /dev/sdd mklabel - gpt&&touch /var/lib/sdd-gpt;fi" -- bash -c "if [ ! -f /var/lib/sde-gpt ];then echo DCOS-5890;parted -s /dev/sde mklabel - gpt&&touch /var/lib/sde-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdf-gpt ];then echo DCOS-5890;parted -s /dev/sdf mklabel - gpt&&touch /var/lib/sdf-gpt;fi" -- bash -c "mkdir -p /dcos/volume{0,1,2,3}" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt - /dev/sdc: - layout: true - overwrite: true - table_type: gpt - /dev/sdd: - layout: true - overwrite: true - table_type: gpt - /dev/sde: - layout: true - overwrite: true - table_type: gpt - /dev/sdf: - layout: true - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -- device: /dev/sdc1 - filesystem: ext4 - overwrite: true -- device: /dev/sdd1 - filesystem: ext4 - overwrite: true -- device: /dev/sde1 - filesystem: ext4 - overwrite: true -- device: /dev/sdf1 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -- - /dev/sdc1 - - /dcos/volume0 -- - /dev/sdd1 - - /dcos/volume1 -- - /dev/sde1 - - /dcos/volume2 -- - /dev/sdf1 - - /dcos/volume3 -runcmd: PREPROVISION_EXTENSION -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["adminrouter--1166a3736442e7963a68d1d644bf5f54ca3cb01d", "avro-cpp--9cb0ee14e3cd5bbdb171efcc72a84d16862ea02d", - "boost-libs--8d515c2f703c666ae1b6c5ccc35cc0f8fa36677f", "bootstrap--c1bc86593e212cf9fe83db2246bacd129a6b3adc", - "boto--3890cb2817c00b874ba033abe784b5b343caa3c7", "check-time--79e3f6ab99125471e1d94d5f6bc0fea88446831c", - "cni--7a8572e385c3f5262945c52c8003d1bbb22cf7aa", "cosmos--e84c5bf3259405df90d682536ba445cc4839a324", - "curl--17866a8ae9305826aa5f357a09db2c1f2b2c2ad0", "dcos-checks--8fd33919e6f163dba1bd13e4c7e4e0523919a719", - "dcos-cni--12a77c1e9bebd4cbd600524a864c2bd8483330d3", "dcos-config--setup_{{{dcosProviderPackageID}}}", - "dcos-diagnostics--e3b557b0ec8e98617d0cd0fdf136ef9dded96316", "dcos-history--23de88ddc1a5f9018dd11b279c5be6a768a18de4", - "dcos-image--df630d8e930d6650ce3d0ade519660142233d862", "dcos-image-deps--81d23d00b1acddb316c9b15fd8499c2b10f6b697", - "dcos-integration-test--9ec173650d4e73ba494603324e7583d23970e4b8", "dcos-log--d2af4b1a47d3755a51823e95fbc6c366cf0f9269", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--2a26c0b50b0b6564f86c48d50aa86f681c9af93c", - "dcos-oauth--445bb1388670981c6acc667b2529fc32d4c1fbd4", "dcos-signal--4366023212ea49a64c5c9aef1965e5a3133c4b61", - "dcos-test-utils--1066d896d25f4c1e3f6d9a5e7f9c1c6e8c675bb7", "dcos-ui--cc2e3d26537ea190efacd6f899dd4cc2210d45b7", - "dnspython--0be432372a3820eafcfa66975943c9536dbe1164", "docker-gc--89f5535aea154dca504f84cd60eac6f61836aef9", - "dvdcli--ee85411e3cb9f0988ed54b5cc0789172b887f12f", "erlang--d693172f6f033707c7f07ff78fc18ac543d66b41", - "exhibitor--c3e48bbae19c0ed9c30d7f9396305d1e77130658", "flask--6d0f985ad677e8422c7190cbe207424acd813c3b", - "java--ce5ff19502fca31eaf4a9af86d50a10a8c212a5b", "libevent--05dc18bc0ab7434b2738318c5ebaa2e61a311f50", - "libffi--0e5b99b94f296b2a9a1b75e9fe5f74f5446f5e9b", "libsodium--e7056355f1fe160ade83aac0d11352a2bf3844e6", - "logrotate--877aece1fd506af3b9167b6938c316adfa79d4f5", "marathon--accdc43bafeca02da1be340baba4b55011eadf63", - "mesos--0677ce2b7d2e8c45091f6481884542f1f765c3d5", "mesos-dns--600da87080b7634f2380594499004a7ff0b34662", - "mesos-modules--1f5c4860450949db92ed27326c3146526041e681", "metronome--2ec6f56be44ed822e7228cb66c4dae6a78345789", - "navstar--c66f92f01d837433de3e2b19d221c64d26cc54b1", "ncurses--030fd6b08ed46a7ecce001c36901f5b4ad5d2af5", - "octarine--4e37c062d2f145f9c2ce01d30dadf72c2aac5c4a", "openssl--44777d19d54a3c33cc19543f2201cb20bf085d98", - "pkgpanda-api--30cb1e68f92ed5d4b89d57ca526f8a69b44132c8", "pkgpanda-role--612a6734567cc0c7c2ae1d508f03172f4bc7beed", - "pytest--5e26c8ed9fd2c325672d56fe558299bfbd0f7018", "python--5a4285ff7296548732203950bf73d360ea67f6ab", - "python-azure-mgmt-resource--26cbe8349f3fe139f7dc8bff7f0cb735382314fc", "python-cryptography--0d83d8afef4a8faddf0d8b713619d9d76e510a9e", - "python-dateutil--519201adebeba186049ecd79a9f358f614173b10", "python-docopt--0af809c220a922f7f6c58f15beafebaa043477c7", - "python-gunicorn--2ceb53716237da0736f67f4004682083f6ac68e1", "python-isodate--c9efb5859a0cfb06d82f25220cc5b387914af85d", - "python-jinja2--601a1443aa4c649ab1da10c2a6d7a4477a263fb3", "python-kazoo--0ff8e6ef528f58c6f36f0a9df6dc27d3871e5c27", - "python-markupsafe--1388c95920b4eb920c7a753d620a1ad07fc8b64d", "python-passlib--4691268be760073188b555dc436f836c6706b37a", - "python-pyyaml--d8a775d6e43da5eb239af5cccdf1d3fceeb0335f", "python-requests--db0474fab16019ba29a609a354285f221c1a2859", - "python-retrying--37dd25bf69bcbefe0c50139085d6bb2e22ccf439", "python-tox--322c468e2a75c5b143cb06af460b5e801ee34342", - "rexray--da7f17f8a4b772c0bac3f8d289a08abd4ff272b4", "six--93734bac9907087744815f9cb5b6152e9a198fae", - "spartan--c3d8005b1340bcbc3a00496861745b2d0bb2d697", "strace--9be573456909e3931a890785eb6474af7e0dcce4", - "teamcity-messages--073793b16cf369e58ebdb6348b93ed14b0e5e59a", "toybox--0c49f879bfe2f99e6f99b397136894fa5096fa0c"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-docker: - disabled: true - service: vfs - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://mesosphere.blob.core.windows.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" diff --git a/parts/dcos/dcoscustomdata184.t b/parts/dcos/dcoscustomdata184.t deleted file mode 100644 index f5cae8441..000000000 --- a/parts/dcos/dcoscustomdata184.t +++ /dev/null @@ -1,371 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/testing - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: 'BOOTSTRAP_ID=5b4aa43610c57ee1d60b4aa0751a1fb75824c083 - - ' - owner: root - path: /etc/mesosphere/setup-flags/bootstrap-id - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - EnvironmentFile=/etc/mesosphere/setup-flags/bootstrap-id - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 - -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" diff --git a/parts/dcos/dcoscustomdata187.t b/parts/dcos/dcoscustomdata187.t deleted file mode 100644 index e1a6e9e58..000000000 --- a/parts/dcos/dcoscustomdata187.t +++ /dev/null @@ -1,364 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/stable - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" diff --git a/parts/dcos/dcoscustomdata188.t b/parts/dcos/dcoscustomdata188.t deleted file mode 100644 index 6380c2022..000000000 --- a/parts/dcos/dcoscustomdata188.t +++ /dev/null @@ -1,364 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/stable - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" diff --git a/parts/dcos/dcoscustomdata190.t b/parts/dcos/dcoscustomdata190.t deleted file mode 100644 index 61c13441c..000000000 --- a/parts/dcos/dcoscustomdata190.t +++ /dev/null @@ -1,357 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- sed -i "s/^Port 22$/Port 22\nPort 2222/1" /etc/ssh/sshd_config -- service ssh restart -- /opt/azure/containers/setup_ephemeral_disk.sh -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} - -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["3dt--7847ebb24bf6756c3103902971b34c3f09c3afbd", "adminrouter--0493a6fdaed08e1971871818e194aa4607df4f09", - "avro-cpp--760c214063f6b038b522eaf4b768b905fed56ebc", "boost-libs--2015ccb58fb756f61c02ee6aa05cc1e27459a9ec", - "bootstrap--59a905ecee27e71168ed44cefda4481fb76b816d", "boto--6344d31eef082c7bd13259b17034ea7b5c34aedf", - "check-time--be7d0ba757ec87f9965378fee7c76a6ee5ae996d", "cni--e48337da39a8cd379414acfe0da52a9226a10d24", - "cosmos--20decef90f0623ed253a12ec4cf5c148b18d8249", "curl--fc3486c43f98e63f9b12675f1356e8fe842f26b0", - "dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-history--77b0e97d7b25c8bedf8f7da0689cac65b83e3813", - "dcos-image--bda6a02bcb2eb21c4218453a870cc584f921a800", "dcos-image-deps--83584fd868e5b470f7cf754424a9a75b328e9b68", - "dcos-integration-test--c28bcb2347799dca43083f55e4c7b28503176f9c", "dcos-log--4d630df863228f38c6333e44670b4c4b20a74832", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--23ee2f89c58b1258bc959f1d0dd7debcbb3d79d2", - "dcos-oauth--0079529da183c0f23a06d2b069721b6fa6cc7b52", "dcos-signal--1bcd3b612cbdc379380dcba17cdf9a3b6652d9dc", - "dcos-ui--d4afd695796404a5b35950c3daddcae322481ac4", "dnspython--0f833eb9a8abeba3179b43f3a200a8cd42d3795a", - "docker-gc--59a98ed6446a084bf74e4ff4b8e3479f59ea8528", "dvdcli--5374dd4ffb519f1dcefdec89b2247e3404f2e2e3", - "erlang--a9ee2530357a3301e53056b36a93420847b339a3", "exhibitor--72d9d8f947e5411eda524d40dde1a58edeb158ed", - "flask--26d1bcdb2d1c3dcf1d2c03bc0d4f29c86d321b21", "java--cd5e921ce66b0d3303883c06d73a657314044304", - "libevent--208be855d2be29c9271a7bd6c04723ff79946e02", "libffi--83ce3bd7eda2ef089e57efd2bc16c144d5a1f094", - "libsodium--9ff915db08c6bba7d6738af5084e782b13c84bf8", "logrotate--7f7bc4416d3ad101d0c5218872858483b516be07", - "marathon--bfb24f7f90cb3cd52a1cb22a07caafa5013bba21", "mesos--aaedd03eee0d57f5c0d49c74ff1e5721862cad98", - "mesos-dns--0401501b2b5152d01bfa84ff6d007fdafe414b16", "mesos-modules--311849eaae42696b8a7eefe86b9ab3ebd9bd48f5", - "metronome--467e4c64f804dbd4cd8572516e111a3f9298c10d", "navstar--1128db0234105a64fb4be52f4453cd6aa895ff30", - "ncurses--d889894b71aa1a5b311bafef0e85479025b4dacb", "octarine--e86d3312691b12523280d56f6260216729aaa0ad", - "openssl--b01a32a42e3ccba52b417276e9509a441e1d4a82", "pkgpanda-api--541feb8a8be58bdde8fecf1d2e5bfa0515f5a7d0", - "pkgpanda-role--f8a749a4a821476ad2ef7e9dd9d12b6a8c4643a4", "pytest--78aee3e58a049cdab0d266af74f77d658b360b4f", - "python--b7a144a49577a223d37d447c568f51330ee95390", "python-azure-mgmt-resource--03c05550f43b0e7a4455c33fe43b0deb755d87f0", - "python-cryptography--4184767c68e48801dd394072cb370c610a05029d", "python-dateutil--fdc6ff929f65dd0918cf75a9ad56704683d31781", - "python-docopt--beba78faa13e5bf4c52393b4b82d81f3c391aa65", "python-gunicorn--a537f95661fb2689c52fe12510eb0d01cb83af60", - "python-isodate--40d378c688e6badfd16676dd8b51b742bfebc8d5", "python-jinja2--7450f5ae5a822f63f7a58c717207be0456df51ed", - "python-kazoo--cb7ce13a1068cd82dd84ea0de32b529a760a4bdd", "python-markupsafe--dd46d2a3c58611656a235f96d4adc51b2a7a590e", - "python-passlib--802ec3605c0b82428fedba60983b1bafaa036bb8", "python-pyyaml--81dd44cc4a24db7cefa7016c6586a131acf279c3", - "python-requests--1b2cadbd3811cc0c2ee235ce927e13ea1d6af41d", "python-retrying--eb7b8bac133f50492b1e1349cbe77c3e38bd02c3", - "python-tox--07244f8a939a10353634c952c6d88ec4a3c05736", "rexray--869621bb411c9f2a793ea42cdfeed489e1972aaa", - "six--f06424b68523c4dfa2a7c3e7475d479f3d361e42", "spartan--9cc57a3d55452b905d90e3201f56913140914ecc", - "strace--7d01796d64994451c1b2b82d161a335cbe90569b", "teamcity-messages--e623a4d86eb3a8d199cefcc240dd4c5460cb2962", - "toybox--f235594ab8ea9a2864ee72abe86723d76f92e848"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-admin: - host: tcp://127.0.0.1:61003 - default-docker: - disabled: true - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://az837203.vo.msecnd.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - LimitNOFILE=16384 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' - content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -- content: | - #!/bin/bash - # Check the partitions on /dev/sdb created by cloudinit and force a detach and - # reformat of the parition. After which, all will be remounted. - EPHEMERAL_DISK="/dev/sdb" - PARTITIONS=`fdisk -l $EPHEMERAL_DISK | grep "^$EPHEMERAL_DISK" | cut -d" " -f1 | sed "s~$EPHEMERAL_DISK~~"` - if [ -n "$PARTITIONS" ]; then - for f in $PARTITIONS; do - df -k | grep "/dev/sdb$f" - if [ $? -eq 0 ]; then - umount -f /dev/sdb$f - fi - mkfs.ext4 /dev/sdb$f - done - mount -a - fi - # If there is a /var/tmp partition on the ephemeral disk, create a symlink such - # that the /var/log/mesos and /var/log/journal placed on the ephemeral disk. - VAR_TMP_PARTITION=`df -P /var/tmp | tail -1 | cut -d" " -f 1` - echo $VAR_TMP_PARTITION | grep "^$EPHEMERAL_DISK" - if [ $? -eq 0 ]; then - # Handle the /var/log/mesos directory - mkdir -p /var/tmp/log/mesos - if [ -d "/var/log/mesos" ]; then - cp -rp /var/log/mesos/* /var/tmp/log/mesos/ - rm -rf /var/log/mesos - fi - ln -s /var/tmp/log/mesos /var/log/mesos - # Handle the /var/log/journal direcotry - mkdir -p /var/tmp/log/journal - if [ -d "/var/log/journal" ]; then - cp -rp /var/log/journal/* /var/tmp/log/journal/ - rm -rf /var/log/journal - fi - ln -s /var/tmp/log/journal /var/log/journal - fi - path: "/opt/azure/containers/setup_ephemeral_disk.sh" - permissions: "0744" - owner: "root" \ No newline at end of file diff --git a/parts/dcos/dcoscustomdata198.t b/parts/dcos/dcoscustomdata198.t deleted file mode 100644 index 57621571f..000000000 --- a/parts/dcos/dcoscustomdata198.t +++ /dev/null @@ -1,357 +0,0 @@ -bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- sed -i "s/^Port 22$/Port 22\nPort 2222/1" /etc/ssh/sshd_config -- service ssh restart -- /opt/azure/containers/setup_ephemeral_disk.sh -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} - -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["3dt--4eb6a10d16421bc87cb6e93ac97746f36aded925", "adminrouter--31f3f6390c8ef79a2774f42390d6340a24d67f08", - "avro-cpp--6194e9a67928c357c1c1b2bb409536ceef888e04", "boost-libs--2015ccb58fb756f61c02ee6aa05cc1e27459a9ec", - "bootstrap--d50592de9bf45937df7bcc7008e84a8739239c99", "boto--471853efd730e52e4ed7bfb890587432a576982a", - "check-time--be7d0ba757ec87f9965378fee7c76a6ee5ae996d", "cni--e48337da39a8cd379414acfe0da52a9226a10d24", - "cosmos--74e0339c91c278622d9f45b5fb0771872f443140", "curl--e7fd5880e4f94db05692d7e43279d8fe6348cb21", - "dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-history--787ce2fd81cb7469590c12951033f0482e879d2a", - "dcos-image--078703170a2f218447abea4b1be00b7431b340f1", "dcos-image-deps--5512ff49cdbba7f404759a5751a4ab1eae44c677", - "dcos-integration-test--bad12974ed31ace44432ad9a451c5b5dc3e20e81", "dcos-log--4d630df863228f38c6333e44670b4c4b20a74832", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--e65d65e1b65335efdaa6bf7609a671f4288e7af9", - "dcos-oauth--23d8ca77549c1ac6087c11c9f7e8f8a4fddfc948", "dcos-signal--5633dc8da7e864cb34e3d29ed13e6756c7a6df94", - "dcos-ui--6f4af319cf4dd9bb8366de22ec37775beaa96747", "dnspython--1118f0ffaa60e6a779d4614f0ed692d215005f0e", - "docker-gc--9737ec72de5d1edc71175028762f06fe22c8a48c", "dvdcli--5374dd4ffb519f1dcefdec89b2247e3404f2e2e3", - "erlang--984871e11f69e37aeb76a471d4a4b90e93fdf355", "exhibitor--300da0c612afcf27541dbc681da5de3a6408de7e", - "flask--2936647fa917d16ee289d34e61fd1afcc49157b5", "java--091eb5a0f3dcbd7762a43e84c3e2d6aac8891111", - "libevent--468f4ae789f659e452e8356a9d2309c4f41135a8", "libffi--83ce3bd7eda2ef089e57efd2bc16c144d5a1f094", - "libsodium--9ff915db08c6bba7d6738af5084e782b13c84bf8", "logrotate--7f7bc4416d3ad101d0c5218872858483b516be07", - "marathon--99d0cbc65da6be31872878174f3a28fa63d0fa34", "mesos--0c992033b8d43e00dc69f0c548c826d573c82642", - "mesos-dns--ca591a18f9b010999106285fedddd010606c0d06", "mesos-modules--4c176c23a4fd3670d059fec55e2d4c8c7dbf1f6c", - "metronome--138ec50cd4da05bce74b6cd2c84ae873c2bd67ab", "navstar--fdf7e79fdf210548d183badfde00d60c1a540257", - "ncurses--d889894b71aa1a5b311bafef0e85479025b4dacb", "octarine--4e37c062d2f145f9c2ce01d30dadf72c2aac5c4a", - "openssl--ef04a6f76f6e5e194c783bc129fdabad16816aff", "pkgpanda-api--220e45fbd93403f8b4fd7f9c8c3d5178aff6e34b", - "pkgpanda-role--f8a749a4a821476ad2ef7e9dd9d12b6a8c4643a4", "pytest--63ab7e9520e4da70202b81076880fcdf2c1236cf", - "python--3c96ab7f21312f4d7d54a9b901cfe6382aa66b8a", "python-azure-mgmt-resource--2313114eec2adcb37ef61082cd2cfdceabf5c21e", - "python-cryptography--39ee7d59411569700f3343e64c32e9711a83decc", "python-dateutil--d098c1933ca6d754a90734afd366d556cc3107a8", - "python-docopt--85e7726dbb777584a9f5d4dd7bd58ed8ca5466d8", "python-gunicorn--bd425f55abd9236b5ead7e68a3c40c39b8d75bb7", - "python-isodate--9a15007db453e141892966ebf50a9175ee0ba08b", "python-jinja2--9fbc35d1405f06f1959c54629ab7d443cef79076", - "python-kazoo--050358610274815ebacabcdfca874729e53f4e0b", "python-markupsafe--09c65e6cdedd4783137a203cbc1b5a64ef3124eb", - "python-passlib--27056b95ad1a067b7992402e679c6260e673a554", "python-pyyaml--5be319fd73348558d69a03fb6dcb134e9b7f4c48", - "python-requests--63e1c3f4f03efc4607a4c20c5492026a9af7a9c7", "python-retrying--692b1a298d22436e25b2d14fc4f980be444adbe7", - "python-tox--7962137d89dae9eb45dd80b0ea59731fa3f5bbc9", "rexray--f07795e2c10f9a1a27de9d8e67ab171029db2e1d", - "six--9229b1a9d7d57bc086fa50f73fc9a753d9a4605d", "spartan--3dc1785bf698e65ceb2fecf26b2a439de219269f", - "strace--7d01796d64994451c1b2b82d161a335cbe90569b", "teamcity-messages--d13bc3f52ed0e30de3a71d86ff8718984b60b65f", - "toybox--c0e85790eb8aaeefe5037b053c2fcd140ab800a4"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-admin: - host: tcp://127.0.0.1:61003 - default-docker: - disabled: true - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://az837203.vo.msecnd.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - LimitNOFILE=16384 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' - content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -- content: | - #!/bin/bash - # Check the partitions on /dev/sdb created by cloudinit and force a detach and - # reformat of the parition. After which, all will be remounted. - EPHEMERAL_DISK="/dev/sdb" - PARTITIONS=`fdisk -l $EPHEMERAL_DISK | grep "^$EPHEMERAL_DISK" | cut -d" " -f1 | sed "s~$EPHEMERAL_DISK~~"` - if [ -n "$PARTITIONS" ]; then - for f in $PARTITIONS; do - df -k | grep "/dev/sdb$f" - if [ $? -eq 0 ]; then - umount -f /dev/sdb$f - fi - mkfs.ext4 /dev/sdb$f - done - mount -a - fi - # If there is a /var/tmp partition on the ephemeral disk, create a symlink such - # that the /var/log/mesos and /var/log/journal placed on the ephemeral disk. - VAR_TMP_PARTITION=`df -P /var/tmp | tail -1 | cut -d" " -f 1` - echo $VAR_TMP_PARTITION | grep "^$EPHEMERAL_DISK" - if [ $? -eq 0 ]; then - # Handle the /var/log/mesos directory - mkdir -p /var/tmp/log/mesos - if [ -d "/var/log/mesos" ]; then - cp -rp /var/log/mesos/* /var/tmp/log/mesos/ - rm -rf /var/log/mesos - fi - ln -s /var/tmp/log/mesos /var/log/mesos - # Handle the /var/log/journal direcotry - mkdir -p /var/tmp/log/journal - if [ -d "/var/log/journal" ]; then - cp -rp /var/log/journal/* /var/tmp/log/journal/ - rm -rf /var/log/journal - fi - ln -s /var/tmp/log/journal /var/log/journal - fi - path: "/opt/azure/containers/setup_ephemeral_disk.sh" - permissions: "0744" - owner: "root" diff --git a/parts/dcos/dcosmasterresources.t b/parts/dcos/dcosmasterresources.t deleted file mode 100644 index af402d61c..000000000 --- a/parts/dcos/dcosmasterresources.t +++ /dev/null @@ -1,423 +0,0 @@ -{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountExhibitorName')]", - "properties": { - "accountType": "Standard_LRS" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - {{GetVNETSubnetDependencies}} - ], - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets true}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] -{{if .MasterProfile.OAuthEnabled}} - ,"loadBalancingRules": [ - { - "name": "LBRule443", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - }, - { - "name": "LBRule80", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - } - ], - "probes": [ - { - "name": "dcosMasterProbe", - "properties": { - "protocol": "Http", - "port": 5050, - "requestPath": "/health", - "intervalInSeconds": 5, - "numberOfProbes": 2 - } - } - ] -{{end}} - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('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" - }, -{{if IsDCOS19}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[resourceGroup().location]", - - "name": "[concat(variables('masterLbName'), '/', 'SSHPort22-', variables('masterVMNamePrefix'), '0')]", - "properties": { - "backendPort": 2222, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "22", - "protocol": "Tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterNSGName')]", - "properties": { - "securityRules": [ -{{if IsDCOS19}} - { - "properties": { - "priority": 201, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "2222", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "sshPort22" - }, -{{if .MasterProfile.OAuthEnabled}} - { - "name": "http", - "properties": { - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "[variables('masterHttpSourceAddressPrefix')]", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 202, - "direction": "Inbound" - } - }, - { - "name": "https", - "properties": { - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "[variables('masterHttpSourceAddressPrefix')]", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 203, - "direction": "Inbound" - } - }, -{{end}} -{{end}} - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('masterNSGID')]", -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", -{{if IsDCOS19}} - "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'),0)]", -{{end}} - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], -{{if IsDCOS19}} - "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", -{{else}} - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], -{{end}} - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - ,"networkSecurityGroup": { - "id": "[variables('masterNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "location": "[variables('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())]", - {{GetDCOSMasterCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('masterVMNamePrefix'), sub(variables('masterCount'), 1))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), sub(variables('masterCount'), 1), '/waitforleader')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "sh -c 'until ping -c1 leader.mesos;do echo waiting for leader.mesos;sleep 15;done;echo leader.mesos up'" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} diff --git a/parts/dcos/dcosmastervars.t b/parts/dcos/dcosmastervars.t deleted file mode 100644 index edceafe71..000000000 --- a/parts/dcos/dcosmastervars.t +++ /dev/null @@ -1,149 +0,0 @@ - "adminUsername": "[parameters('linuxAdminUsername')]", - "targetEnvironment": "[parameters('targetEnvironment')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", - "apiVersionLinkDefault": "2015-01-01", - "singleQuote": "'", - "doubleSingleQuote": "''", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "orchestratorVersion": "{{.OrchestratorProfile.OrchestratorVersion}}", -{{if .HasWindows}} - "windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsBackendPort": 3389, - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "dcosWindowsBootstrapURL" : "[parameters('dcosWindowsBootstrapURL')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsMasterCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), variables('singleQuote'), ' ; ')]", - - "windowsMasterCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsMasterCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1')]", -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterHttpSourceAddressPrefix": "{{.MasterProfile.HTTPSourceAddressPrefix}}", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('masterNSGName'))]", - "masterNSGName": "[concat(variables('orchestratorName'), '-master-nsg-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "apiVersionStorage": "2015-06-15", - - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location'),variables('orchestratorName')))]", - "masterStorageAccountExhibitorName": "[concat(variables('storageAccountBaseName'), 'exhb0')]", - "storageAccountType": "Standard_LRS", -{{if .HasStorageAccountDisks}} - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), 'mstr0')]", -{{end}} -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMNic": [ - "[concat(variables('masterVMNamePrefix'), 'nic-0')]", - "[concat(variables('masterVMNamePrefix'), 'nic-1')]", - "[concat(variables('masterVMNamePrefix'), 'nic-2')]", - "[concat(variables('masterVMNamePrefix'), 'nic-3')]", - "[concat(variables('masterVMNamePrefix'), 'nic-4')]", - "[concat(variables('masterVMNamePrefix'), 'nic-5')]", - "[concat(variables('masterVMNamePrefix'), 'nic-6')]" - ], - "masterVMSize": "[parameters('masterVMSize')]", - "nameSuffix": "[parameters('nameSuffix')]", - "oauthEnabled": "{{.MasterProfile.OAuthEnabled}}", - "orchestratorName": "dcos", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "[parameters('osImageSKU')]", - "osImageVersion": "[parameters('osImageVersion')]", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", -{{if IsDCOS19}} - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',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')]" - } - ] - ], -{{end}} - "dcosBootstrapURL": "[parameters('dcosBootstrapURL')]" - diff --git a/parts/dcos/dcosparams.t b/parts/dcos/dcosparams.t deleted file mode 100644 index 5d87d8d47..000000000 --- a/parts/dcos/dcosparams.t +++ /dev/null @@ -1,35 +0,0 @@ - "dcosBootstrapURL": { - "defaultValue": "https://dcosio.azureedge.net/dcos/stable/bootstrap/58fd0833ce81b6244fc73bf65b5deb43217b0bd7.bootstrap.tar.xz", - "metadata": { - "description": "The default mesosphere bootstrap package." - }, - "type": "string" - }, - "dcosWindowsBootstrapURL": { - "defaultValue": "http://dcos-win.westus.cloudapp.azure.com/dcos-windows/stable/", - "metadata": { - "description": "The default mesosphere bootstrap package location for windows." - }, - "type": "string" - }, - "dcosRepositoryURL": { - "defaultValue": "https://dcosio.azureedge.net/dcos/stable", - "metadata": { - "description": "The repository URL" - }, - "type": "string" - }, - "dcosClusterPackageListID": { - "defaultValue": "77282d8864a5bf36db345b54a0d1de3674a0e937", - "metadata": { - "description": "The default cluster package list IDs." - }, - "type": "string" - }, - "dcosProviderPackageID": { - "defaultValue": "", - "metadata": { - "description": "The guid for provider dcos-provider package." - }, - "type": "string" - }, diff --git a/parts/dcos/dcosprovision.sh b/parts/dcos/dcosprovision.sh deleted file mode 100644 index 7a5d785e3..000000000 --- a/parts/dcos/dcosprovision.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -MESOSDIR=/var/lib/mesos/dl -mkdir $MESOSDIR - -# load the env vars -. /etc/mesosphere/setup-flags/dcos-deploy-environment - -# default dc/os component download address (Azure CDN) -DOCKER_ENGINE_DOWNLOAD_URL=https://mesosphere.blob.core.windows.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb -LIBIPSET_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/libipset3_6.29-1_amd64.deb -IPSET_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/ipset_6.29-1_amd64.deb -UNZIP_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/unzip_6.0-20ubuntu1_amd64.deb -LIBLTDL_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/libltdl7_2.4.6-0.1_amd64.deb - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - DOCKER_ENGINE_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/docker-engine_1.11.2-0~xenial_amd64.deb - LIBIPSET_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/libipset3_6.29-1_amd64.deb - IPSET_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/ipset_6.29-1_amd64.deb - UNZIP_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/unzip_6.0-20ubuntu1_amd64.deb - LIBLTDL_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - ;; -esac - -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/d.deb $DOCKER_ENGINE_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/1.deb $LIBIPSET_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/2.deb $IPSET_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/3.deb $UNZIP_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/4.deb $LIBLTDL_DOWNLOAD_URL & -wait - -for i in {1..300}; do - dpkg -i $MESOSDIR/{1,2,3,4}.deb - if [ "$?" = "0" ] - then - echo "succeeded" - break - fi - sleep 1 -done - -ROLESFILECONTENTS - -# add Azure update domain and fault domain attributes -ud=$( curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/platformUpdateDomain?api-version=2017-04-02&format=text" ) -fd=$( curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2017-04-02&format=text" ) -echo ";azure.faultdomain:$fd;azure.updatedomain:$ud" >> /var/lib/dcos/mesos-slave-common \ No newline at end of file diff --git a/parts/dcos/dcosprovisionsource.sh b/parts/dcos/dcosprovisionsource.sh deleted file mode 100755 index 8233b77af..000000000 --- a/parts/dcos/dcosprovisionsource.sh +++ /dev/null @@ -1,58 +0,0 @@ -function retry_download() { - retries=$1; wait_sleep=$2; timeout=$3; url=$4; path=$5 checksum=$6 - for i in $(seq 1 $retries); do - rm -f $path - timeout $timeout curl -fsSL $url -o $path - if [ $? -ne 0 ]; then - echo "retry_download[$i] Error: Failed to execute curl -fsSL $url -o $path" - sleep $wait_sleep - continue - fi - if [ ! -z "${checksum:-}" ]; then - actual=$(sha1sum -b $path | cut -f 1 -d " ") - if [ $? -ne 0 ]; then - echo "retry_download[$i] Error: Failed to execute sha1sum -b $path (per $url)" - sleep $wait_sleep - continue - fi - if [ "$checksum" != "$actual" ]; then - echo "retry_download[$i] Error: sha1sum mismatch for $url" - sleep $wait_sleep - continue - fi - fi - return 0 - done - return 1 -} - -function retrycmd_if_failure() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout ${@} - [ $? -eq 0 ] && break || \ - if [ $i -eq $retries ]; then - echo "Error: Failed to execute \"$@\" after $i attempts" - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} - -function retry_get_install_deb() { - retries=$1; wait_sleep=$2; timeout=$3; url=$4; checksum=$5 - deb=$(mktemp) - trap "rm -f $deb" RETURN - retry_download $retries $wait_sleep $timeout $url $deb $checksum - if [ $? -ne 0 ]; then - echo "Error: Failed to download $url" - return 1 - fi - retrycmd_if_failure $retries $wait_sleep $timeout dpkg -i $deb - if [ $? -ne 0 ]; then - echo "Error: Failed to install $url" - return 1 - fi -} diff --git a/parts/swarm/Install-ContainerHost-And-Join-Swarm.ps1 b/parts/swarm/Install-ContainerHost-And-Join-Swarm.ps1 deleted file mode 100644 index 360c8c44e..000000000 --- a/parts/swarm/Install-ContainerHost-And-Join-Swarm.ps1 +++ /dev/null @@ -1,214 +0,0 @@ -############################################################ -# Script adapted from -# https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/windows-server-container-tools/Install-ContainerHost/Install-ContainerHost.ps1 - -<# - .NOTES - Copyright (c) Microsoft Corporation. All rights reserved. - - Use of this sample source code is subject to the terms of the Microsoft - license agreement under which you licensed this sample source code. If - you did not accept the terms of the license agreement, you are not - authorized to use this sample source code. For the terms of the license, - please see the license agreement between you and Microsoft or, if applicable, - see the LICENSE.RTF on your install media or the root of your tools installation. - THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES. - - .SYNOPSIS - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a swarm master. - - .DESCRIPTION - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a swarm master. - - .PARAMETER SwarmMasterIP - IP Address of Docker Swarm Master - - .EXAMPLE - .\Install-ContainerHost.ps1 -SwarmMasterIP 192.168.255.5 - -#> -#Requires -Version 5.0 - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $SwarmMasterIP = "172.16.0.5" -) - -$global:DockerServiceName = "Docker" -$global:HNSServiceName = "hns" - -filter Timestamp {"$(Get-Date -Format o): $_"} - -function Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - -function -Start-Docker() -{ - Write-Log "Starting $global:DockerServiceName..." - $startTime = Get-Date - - while (-not $dockerReady) - { - try - { - Start-Service -Name $global:DockerServiceName -ea Stop - - $dockerReady = $true - } - catch - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Docker Daemon did not start successfully within 5 minutes." - break - } - - $errorStr = $_.Exception.Message - Write-Log "Starting Service failed: $errorStr" - Write-Log "sleeping for 10 seconds..." - Start-Sleep -sec 10 - } - } -} - - -function -Stop-Docker() -{ - Write-Log "Stopping $global:DockerServiceName..." - try - { - Stop-Service -Name $global:DockerServiceName -ea Stop - } - catch - { - Write-Log "Failed to stop Docker" - } -} - -function -Update-DockerServiceRecoveryPolicy() -{ - $dockerReady = $false - $startTime = Get-Date - - # wait until the service exists - while (-not $dockerReady) - { - if (Get-Service $global:DockerServiceName -ErrorAction SilentlyContinue) - { - $dockerReady = $true - } - else - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Unable to find service $global:DockerServiceName within 5 minutes." - break - } - Write-Log "failed to find $global:DockerServiceName, sleeping for 5 seconds" - Start-Sleep -sec 5 - } - } - - Write-Log "Updating docker restart policy, to ensure it restarts on error" - $services = Get-WMIObject win32_service | Where-Object {$_.name -imatch $global:DockerServiceName} - foreach ($service in $services) - { - sc.exe failure $service.name reset= 86400 actions= restart/5000 - } -} - -# Open Windows Firewall Ports Needed -function Open-FirewallPorts() -{ - $ports = @(80,443,2375,8080) - foreach ($port in $ports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $port' dir=in action=allow protocol=TCP localport=$port" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } -} - -# Update Docker Config to have cluster-store=consul:// address configured for Swarm cluster. -function Write-DockerDaemonJson() -{ - $dataDir = $env:ProgramData - - # create the target directory - $targetDir = $dataDir + '\docker\config' - if(!(Test-Path -Path $targetDir )){ - New-Item -ItemType directory -Path $targetDir - } - - Write-Log "Delete key file, so that this node is unique to swarm" - $keyFileName = "$targetDir\key.json" - Write-Log "Removing $($keyFileName)" - if (Test-Path $keyFileName) { - Remove-Item $keyFileName - } - - $ipAddress = Get-IPAddress - - Write-Log "Advertise $($ipAddress) to consul://$($SwarmMasterIP):8500" - $OutFile = @" -{ - "hosts": ["tcp://0.0.0.0:2375", "npipe://"], - "cluster-store": "consul://$($SwarmMasterIP):8500", - "cluster-advertise": "$($ipAddress):2375" -} -"@ - - $OutFile | Out-File -encoding ASCII -filepath "$targetDir\daemon.json" -} - -# Get Node IPV4 Address -function Get-IPAddress() -{ - return (Get-NetIPAddress | where {$_.IPAddress -Like '10.*' -and $_.AddressFamily -eq 'IPV4'})[0].IPAddress -} - -try -{ - Write-Log "Provisioning $global:DockerServiceName... with Swarm IP $SwarmMasterIP" - - Write-Log "Stop Docker" - Stop-Docker - - Write-Log "Opening firewall ports" - Open-FirewallPorts - - Write-Log "Write Docker Configuration" - Write-DockerDaemonJson - - Write-Log "Update Docker restart policy" - Update-DockerServiceRecoveryPolicy - - Write-Log "Start Docker" - Start-Docker - - #remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Wininit" Headless - #Write-Log "shutdown /r /f /t 60" - #shutdown /r /f /t 60 - - Write-Log "Setup Complete" -} -catch -{ - Write-Error $_ -} - - diff --git a/parts/swarm/Join-SwarmMode-cluster.ps1 b/parts/swarm/Join-SwarmMode-cluster.ps1 deleted file mode 100644 index 26e0521d5..000000000 --- a/parts/swarm/Join-SwarmMode-cluster.ps1 +++ /dev/null @@ -1,335 +0,0 @@ -############################################################ -# Script adapted from -# https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/windows-server-container-tools/Install-ContainerHost/Install-ContainerHost.ps1 - -<# - .NOTES - Copyright (c) Microsoft Corporation. All rights reserved. - - Use of this sample source code is subject to the terms of the Microsoft - license agreement under which you licensed this sample source code. If - you did not accept the terms of the license agreement, you are not - authorized to use this sample source code. For the terms of the license, - please see the license agreement between you and Microsoft or, if applicable, - see the LICENSE.RTF on your install media or the root of your tools installation. - THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES. - - .SYNOPSIS - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a Swarm Mode master. - - .DESCRIPTION - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a Swarm Mode master. - - .PARAMETER SwarmMasterIP - IP Address of Docker Swarm Mode Master - - .EXAMPLE - .\Join-SwarmMode-cluster.ps1 -SwarmMasterIP 192.168.255.5 - -#> -#Requires -Version 5.0 - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $SwarmMasterIP = "172.16.0.5" -) - -$global:DockerServiceName = "Docker" -$global:DockerBinariesURL = "https://acsengine.blob.core.windows.net/swarmm/docker.zip" -$global:DockerExePath = "C:\Program Files\Docker" -$global:IsNewDockerVersion = $false - -filter Timestamp {"$(Get-Date -Format o): $_"} - -function Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - -function Start-Docker() -{ - Write-Log "Starting $global:DockerServiceName..." - $startTime = Get-Date - - while (-not $dockerReady) - { - try - { - Start-Service -Name $global:DockerServiceName -ea Stop - - $dockerReady = $true - } - catch - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Docker Daemon did not start successfully within 5 minutes." - break - } - - $errorStr = $_.Exception.Message - Write-Log "Starting Service failed: $errorStr" - Write-Log "sleeping for 10 seconds..." - Start-Sleep -sec 10 - } - } -} - -function Stop-Docker() -{ - Write-Log "Stopping $global:DockerServiceName..." - try - { - Stop-Service -Name $global:DockerServiceName -ea Stop - } - catch - { - Write-Log "Failed to stop Docker" - } -} - -function Expand-ZIPFile($file, $destination) -{ - $shell = new-object -com shell.application - $zip = $shell.NameSpace($file) - foreach($item in $zip.items()) - { - $shell.Namespace($destination).copyhere($item, 0x14) - } -} - -function Install-DockerBinaries() -{ - if( $global:IsNewDockerVersion) - { - Write-Log "Skipping installation of new Docker binaries because latest is already installed." - return - } - - $currentRetry = 0; - $success = $false; - - $zipfile = "c:\swarmm.zip" - - do { - try - { - Write-Log "Downloading and installing Docker binaries...." - Invoke-WebRequest -Uri $global:DockerBinariesURL -OutFile $zipfile - $success = $true; - Write-Log "Successfully downloaded Docker binaries. Number of retries: $currentRetry"; - } - catch [System.Exception] - { - $message = 'Exception occurred while trying to download binaries:' + $_.Exception.ToString(); - Write-Log $message; - if ($currentRetry -gt 5) { - $message = "Could not download Docker binaries, aborting install. Error: " + $_.Exception.ToString(); - throw $message; - } else { - Write-Log "Sleeping before retry number: $currentRetry to download binaries."; - Start-Sleep -sec 5; - } - $currentRetry = $currentRetry + 1; - } - } while (!$success); - - Write-Log "Expanding zip file at destination: $global:DockerExePath" - Expand-ZIPFile -File $zipfile -Destination $global:DockerExePath - - Write-Log "Deleting zip file at: $zipfile" - Remove-Item $zipfile -} - -function Update-DockerServiceRecoveryPolicy() -{ - $dockerReady = $false - $startTime = Get-Date - - # wait until the service exists - while (-not $dockerReady) - { - if (Get-Service $global:DockerServiceName -ErrorAction SilentlyContinue) - { - $dockerReady = $true - } - else - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Unable to find service $global:DockerServiceName within 5 minutes." - break - } - Write-Log "failed to find $global:DockerServiceName, sleeping for 5 seconds" - Start-Sleep -sec 5 - } - } - - Write-Log "Updating docker restart policy, to ensure it restarts on error" - $services = Get-WMIObject win32_service | Where-Object {$_.name -imatch $global:DockerServiceName} - foreach ($service in $services) - { - sc.exe failure $service.name reset= 86400 actions= restart/5000 - } -} - -# Open Windows Firewall Ports Needed -function Open-FirewallPorts() -{ - $tcpports = @(80,443,2375,8080,2377,7946,4789) - foreach ($tcpport in $tcpports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $tcpport' dir=in action=allow protocol=TCP localport=$tcpport" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } - - $udpports = @(7946,4789) - foreach ($udpport in $udpports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $udpport' dir=in action=allow protocol=UDP localport=$udpport" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } -} - -# Update Docker Config to have cluster-store=consul:// address configured for Swarm cluster. -function Write-DockerDaemonJson() -{ - $dataDir = $env:ProgramData - - # create the target directory - $targetDir = $dataDir + '\docker\config' - if(!(Test-Path -Path $targetDir )){ - New-Item -ItemType directory -Path $targetDir - } - - Write-Log "Delete key file, so that this node is unique to swarm" - $keyFileName = "$targetDir\key.json" - Write-Log "Removing $($keyFileName)" - if (Test-Path $keyFileName) { - Remove-Item $keyFileName - } - - Write-Log "Configure Docker Engine to accept incoming connections on port 2375" - $OutFile = @" -{ - "hosts": ["tcp://0.0.0.0:2375", "npipe://"] -} -"@ - - $OutFile | Out-File -encoding ASCII -filepath "$targetDir\daemon.json" -} - -function Join-Swarm() -{ - $currentRetry = 0; - $success = $false; - $getTokenCommand = "docker -H $($SwarmMasterIP):2375 swarm join-token -q worker" - $swarmmodetoken; - - do { - try - { - Write-Log "Executing [$getTokenCommand] command...." - <#& $swarmmodetoken#> - $swarmmodetoken = Invoke-Expression -Command:$getTokenCommand - $success = $true; - Write-Log "Successfully executed [$getTokenCommand] command. Number of entries: $currentRetry. Token: [$swarmmodetoken]"; - } - catch [System.Exception] - { - $message = 'Exception occurred while trying to execute command [$swarmmodetoken]:' + $_.Exception.ToString(); - Write-Log $message; - if ($currentRetry -gt 120) { - $message = "Agent couldn't join Swarm, aborting install. Error: " + $_.Exception.ToString(); - throw $message; - } else { - Write-Log "Sleeping before $currentRetry retry of [$getTokenCommand] command"; - Start-Sleep -sec 5; - } - $currentRetry = $currentRetry + 1; - } - } while (!$success); - - $joinSwarmCommand = "docker swarm join --token $($swarmmodetoken) $($SwarmMasterIP):2377" - Write-Log "Joining Swarm. Command [$joinSwarmCommand]...." - Invoke-Expression -Command:$joinSwarmCommand -} - -function Confirm-DockerVersion() -{ - $dockerServerVersionCmd = "docker version --format '{{.Server.Version}}'" - Write-Log "Running command: $dockerServerVersionCmd" - $dockerServerVersion = Invoke-Expression -Command:$dockerServerVersionCmd - - $dockerClientVersionCmd = "docker version --format '{{.Client.Version}}'" - Write-Log "Running command: $dockerClientVersionCmd" - $dockerClientVersion = Invoke-Expression -Command:$dockerClientVersionCmd - - Write-Log "Docker Server version: $dockerServerVersion, Docker Client verison: $dockerClientVersion" - - $serverVersionData = $dockerServerVersion.Split(".") - $isNewServerVersion = $false; - if(($serverVersionData[0] -ge 1) -and ($serverVersionData[1] -ge 13)){ - $isNewServerVersion = $true; - Write-Log "Setting isNewServerVersion to $isNewServerVersion" - } - - $clientVersionData = $dockerClientVersion.Split(".") - $isNewClientVersion = $false; - if(($clientVersionData[0] -ge 1) -and ($clientVersionData[1] -ge 13)){ - $isNewClientVersion = $true; - Write-Log "Setting isNewClientVersion to $isNewClientVersion" - } - - if($isNewServerVersion -and $isNewClientVersion) - { - $global:IsNewDockerVersion = $true; - Write-Log "Setting IsNewDockerVersion to $global:IsNewDockerVersion" - } -} - -try -{ - Write-Log "Provisioning $global:DockerServiceName... with Swarm IP $SwarmMasterIP" - - Write-Log "Checking Docker version" - Confirm-DockerVersion - - Write-Log "Stop Docker" - Stop-Docker - - Write-Log "Installing Docker binaries" - Install-DockerBinaries - - Write-Log "Opening firewall ports" - Open-FirewallPorts - - Write-Log "Write Docker Configuration" - Write-DockerDaemonJson - - Write-Log "Update Docker restart policy" - Update-DockerServiceRecoveryPolicy - - Write-Log "Start Docker" - Start-Docker - - Write-Log "Join existing Swarm" - Join-Swarm - - Write-Log "Setup Complete" -} -catch -{ - Write-Error $_ -} \ No newline at end of file diff --git a/parts/swarm/configure-swarm-cluster.sh b/parts/swarm/configure-swarm-cluster.sh deleted file mode 100644 index 7b2532b20..000000000 --- a/parts/swarm/configure-swarm-cluster.sh +++ /dev/null @@ -1,294 +0,0 @@ -#!/bin/bash - -set -x - -echo "starting swarm cluster configuration" -date -ps ax - -############# -# Parameters -############# - -SWARM_VERSION=${1} -DOCKER_COMPOSE_VERSION=${2} -MASTERCOUNT=${3} -MASTERPREFIX=${4} -MASTERFIRSTADDR=${5} -AZUREUSER=${6} -POSTINSTALLSCRIPTURI=${7} -BASESUBNET=${8} -DOCKERENGINEDOWNLOADREPO=${9} -DOCKERCOMPOSEDOWNLOADURL=${10} -DOCKER_CE_VERSION=17.03.* -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 1 - 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 - # attempt to fix hostname, in case dns is not resolving Azure IPs (but can resolve public ips) - if [ $networkHealthy -ne 0 ] - then - HOSTNAME=`hostname` - HOSTADDR=`ip address show dev eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` - echo $HOSTADDR $HOSTNAME >> /etc/hosts - hostname -i - if [ $? -eq 0 ] - then - # hostname has been found continue - networkHealthy=0 - echo "the network is healthy by updating /etc/hosts" - fi - fi - 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` - -# apply all Canonical security updates during provisioning -/usr/lib/apt/apt.systemd.daily - -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 - -consulstr() -{ - consulargs="" - for i in `seq 0 $((MASTERCOUNT-1))` ; - do - MASTEROCTET=`expr $MASTERFIRSTADDR + $i` - IPADDR="${BASESUBNET}${MASTEROCTET}" - - if [ "$VMNUMBER" -eq "0" ] - then - consulargs="${consulargs}-bootstrap-expect $MASTERCOUNT " - fi - if [ "$VMNUMBER" -eq "$i" ] - then - consulargs="${consulargs}-advertise $IPADDR " - else - consulargs="${consulargs}-retry-join $IPADDR " - fi - done - echo $consulargs -} - -consulargs=$(consulstr) -MASTER0IPADDR="${BASESUBNET}${MASTERFIRSTADDR}" - -###################### -# resolve self in DNS -###################### - -echo "$HOSTADDR $VMNAME" | sudo tee -a /etc/hosts - -################ -# Install Docker -################ - -echo "Installing and configuring docker" - -# simple general command retry function -retrycmd_if_failure() { for i in 1 2 3 4 5; do $@; [ $? -eq 0 ] && break || sleep 5; done ; } - -installDocker() -{ - for i in {1..10}; do - apt-get install -y apt-transport-https ca-certificates curl software-properties-common - curl --max-time 60 -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - apt-get update - apt-get install -y docker-ce=${DOCKER_CE_VERSION} - 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 -if isagent ; then - # Start Docker and listen on :2375 (no auth, but in vnet) - echo 'DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:2375 --cluster-store=consul://'$MASTER0IPADDR:8500 --cluster-advertise=$HOSTADDR:2375'"' | sudo tee -a /etc/default/docker -fi - -echo "Installing docker compose" -installDockerCompose() -{ - for i in {1..10}; do - wget --tries 4 --retry-connrefused --waitretry=15 -qO- $DOCKERCOMPOSEDOWNLOADURL/$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 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 - mkdir -p /data/consul - echo "consul: - image: \"progrium/consul\" - command: -server -node $VMNAME $consulargs - ports: - - \"8500:8500\" - - \"8300:8300\" - - \"8301:8301\" - - \"8301:8301/udp\" - - \"8302:8302\" - - \"8302:8302/udp\" - - \"8400:8400\" - volumes: - - \"/data/consul:/data\" - restart: \"always\" -swarm: - image: \"$SWARM_VERSION\" - command: manage --replication --advertise $HOSTADDR:2375 --discovery-opt kv.path=docker/nodes consul://$MASTER0IPADDR:8500 - ports: - - \"2375:2375\" - links: - - \"consul\" - volumes: - - \"/etc/docker:/etc/docker\" - restart: \"always\" -" > /opt/azure/containers/docker-compose.yml - - pushd /opt/azure/containers/ - docker-compose up -d - popd - echo "completed starting docker swarm on the master" -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 [ $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 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/swarm/configure-swarmmode-cluster.sh b/parts/swarm/configure-swarmmode-cluster.sh deleted file mode 100644 index 20cb2edbd..000000000 --- a/parts/swarm/configure-swarmmode-cluster.sh +++ /dev/null @@ -1,374 +0,0 @@ -#!/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 - -############# -# Parameters -############# - -DOCKER_CE_VERSION=${1} -DOCKER_COMPOSE_VERSION=${2} -MASTERCOUNT=${3} -MASTERPREFIX=${4} -MASTERFIRSTADDR=${5} -AZUREUSER=${6} -POSTINSTALLSCRIPTURI=${7} -BASESUBNET=${8} -DOCKERENGINEDOWNLOADREPO=${9} -DOCKERCOMPOSEDOWNLOADURL=${10} -VMNAME=`hostname` -VMNUMBER=`echo $VMNAME | sed 's/.*[^0-9]\([0-9]\+\)*$/\1/'` -VMPREFIX=`echo $VMNAME | sed 's/\(.*[^0-9]\)*[0-9]\+$/\1/'` -OS="$(. /etc/os-release; echo $ID)" - -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" -echo "OS ID: $OS" - -################### -# Common Functions -################### - -isUbuntu() -{ - if [ "$OS" == "ubuntu" ] - then - return 0 - else - return 1 - fi -} - -isRHEL() -{ - if [ "$OS" == "rhel" ] - then - return 0 - else - return 1 - fi -} - -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 1 - 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 - # attempt to fix hostname, in case dns is not resolving Azure IPs (but can resolve public ips) - if [ $networkHealthy -ne 0 ] - then - HOSTNAME=`hostname` - HOSTADDR=`ip address show dev eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` - echo $HOSTADDR $HOSTNAME >> /etc/hosts - hostname -i - if [ $? -eq 0 ] - then - # hostname has been found continue - networkHealthy=0 - echo "the network is healthy by updating /etc/hosts" - fi - fi - 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` - -# apply all Canonical security updates during provisioning -/usr/lib/apt/apt.systemd.daily - -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 -###################### - -if [ -z "$(grep "$HOSTADDR $VMNAME" /etc/hosts)" ]; then - echo "$HOSTADDR $VMNAME" | sudo tee -a /etc/hosts -fi - -################ -# Install Docker -################ - -echo "Installing and configuring Docker" - -installDockerUbuntu() -{ - for i in {1..10}; do - apt-get install -y apt-transport-https ca-certificates curl software-properties-common - curl --max-time 60 -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - apt-get update - apt-get install -y docker-ce=${DOCKER_CE_VERSION} - if [ $? -eq 0 ] - then - systemctl restart docker - # hostname has been found continue - echo "Docker installed successfully" - break - fi - sleep 10 - done -} - -installDockerRHEL() -{ - for i in {1..10}; do - yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - yum makecache fast - yum -y install docker-ce - if [ $? -eq 0 ] - then - systemctl enable docker - systemctl start docker - echo "Docker installed successfully" - break - fi - sleep 10 - done -} - -installDocker() -{ - if isUbuntu ; then - installDockerUbuntu - elif isRHEL ; then - installDockerRHEL - else - echo "OS not supported, aborting install" - exit 5 - fi -} - -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/dockerd -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- $DOCKERCOMPOSEDOWNLOADURL/$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 - -if ismaster && isRHEL ; then - echo "Opening Docker ports" - firewall-cmd --add-port=2375/tcp --permanent - firewall-cmd --add-port=2377/tcp --permanent - firewall-cmd --reload -fi - -echo "Restarting Docker" -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 3 - 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 4 - 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 - -# mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind -sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local - -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/swarm/swarmagentresourcesvmas.t b/parts/swarm/swarmagentresourcesvmas.t deleted file mode 100644 index b8316c90b..000000000 --- a/parts/swarm/swarmagentresourcesvmas.t +++ /dev/null @@ -1,258 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "loop" - }, - "dependsOn": [ -{{if not .IsCustomVNET}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", -{{if IsSwarmMode}} - {{if not .IsRHEL}} - {{GetAgentSwarmModeCustomData .}} - {{end}} -{{else}} - {{GetAgentSwarmCustomData .}} -{{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "offer": "[variables('{{.Name}}OSImageOffer')]", - "publisher": "[variables('{{.Name}}OSImagePublisher')]", - "sku": "[variables('{{.Name}}OSImageSKU')]", - "version": "[variables('{{.Name}}OSImageVersion')]" - } - - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - } -{{if .IsRHEL}} - ,{ - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset'))))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/configureagent')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('agentCustomScript')]", - "fileUris": [ - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } -{{end}} diff --git a/parts/swarm/swarmagentresourcesvmss.t b/parts/swarm/swarmagentresourcesvmss.t deleted file mode 100644 index 4d1fa86e9..000000000 --- a/parts/swarm/swarmagentresourcesvmss.t +++ /dev/null @@ -1,206 +0,0 @@ -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if not .IsCustomVNET}} - ,"[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/backendAddressPools/', variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", -{{if IsSwarmMode}} - {{if not .IsRHEL}} - {{GetAgentSwarmModeCustomData .}} - {{end}} -{{else}} - {{GetAgentSwarmCustomData .}} -{{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('{{.Name}}OSImageOffer')]", - "publisher": "[variables('{{.Name}}OSImagePublisher')]", - "sku": "[variables('{{.Name}}OSImageSKU')]", - "version": "[variables('{{.Name}}OSImageVersion')]" - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } -{{if .IsRHEL}} - ,"extensionProfile": { - "extensions": [ - { - "name": "configure{{.Name}}", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('agentCustomScript')]", - "fileUris": [ - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - } - } - ] - } -{{end}} - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } diff --git a/parts/swarm/swarmagentvars.t b/parts/swarm/swarmagentvars.t deleted file mode 100644 index d861b1b1c..000000000 --- a/parts/swarm/swarmagentvars.t +++ /dev/null @@ -1,51 +0,0 @@ -{{if not .IsRHEL}} - "{{.Name}}RunCmd": "[concat('runcmd:\n {{GetSwarmAgentPreprovisionExtensionCommands .}} \n- [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "{{.Name}}RunCmdFile": "[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')]", -{{end}} -{{if IsSwarmMode }} - "{{.Name}}OSImageOffer": {{GetAgentOSImageOffer .}}, - "{{.Name}}OSImagePublisher": {{GetAgentOSImagePublisher .}}, - "{{.Name}}OSImageSKU": {{GetAgentOSImageSKU .}}, - "{{.Name}}OSImageVersion": {{GetAgentOSImageVersion .}}, -{{else}} - "{{.Name}}OSImageOffer": "[variables('osImageOffer')]", - "{{.Name}}OSImagePublisher": "[variables('osImagePublisher')]", - "{{.Name}}OSImageSKU": "[variables('osImageSKU')]", - "{{.Name}}OSImageVersion": "[variables('osImageVersion')]", -{{end}} - "{{.Name}}Count": "[parameters('{{.Name}}Count')]", - "{{.Name}}VMNamePrefix": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}VMSize": "[parameters('{{.Name}}VMSize')]", - "{{.Name}}VMSizeTier": "[split(parameters('{{.Name}}VMSize'),'_')[0]]", -{{if .IsAvailabilitySets}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[add(div(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),1)))]", - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),variables('{{.Name}}Index'))]", - {{end}} - "{{.Name}}AvailabilitySet": "[concat('{{.Name}}-availabilitySet-', variables('nameSuffix'))]", - "{{.Name}}Offset": "[parameters('{{.Name}}Offset')]", -{{else}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", - {{end}} -{{end}} -{{if .IsCustomVNET}} - "{{.Name}}VnetSubnetID": "[parameters('{{.Name}}VnetSubnetID')]", -{{else}} - "{{.Name}}Subnet": "[parameters('{{.Name}}Subnet')]", - "{{.Name}}SubnetName": "[concat(variables('orchestratorName'), '-{{.Name}}subnet')]", - "{{.Name}}VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('{{.Name}}SubnetName'))]", -{{end}} -{{if IsPublic .Ports}} - "{{.Name}}EndpointDNSNamePrefix": "[tolower(parameters('{{.Name}}EndpointDNSNamePrefix'))]", - "{{.Name}}IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('{{.Name}}EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "{{.Name}}LbBackendPoolName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('{{.Name}}LbName'))]", - "{{.Name}}LbIPConfigID": "[concat(variables('{{.Name}}LbID'),'/frontendIPConfigurations/', variables('{{.Name}}LbIPConfigName'))]", - "{{.Name}}LbIPConfigName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - {{if .IsWindows}} - "{{.Name}}WindowsRDPNatRangeStart": 3389, - "{{.Name}}WindowsRDPEndRangeStop": "[add(variables('{{.Name}}WindowsRDPNatRangeStart'), add(variables('{{.Name}}Count'),variables('{{.Name}}Count')))]", - {{end}} - {{end}} diff --git a/parts/swarm/swarmbase.t b/parts/swarm/swarmbase.t deleted file mode 100644 index 8eeb4f77d..000000000 --- a/parts/swarm/swarmbase.t +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - {{template "windowsparams.t"}}, - {{end}} - {{template "masterparams.t" .}} - {{template "swarm/swarmparams.t" .}} - }, - "variables": { - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "swarm/swarmagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "swarm/swarmmastervars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "swarm/swarmwinagentresourcesvmas.t" .}}, - {{else}} - {{template "swarm/swarmwinagentresourcesvmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "swarm/swarmagentresourcesvmas.t" .}}, - {{else}} - {{template "swarm/swarmagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "swarm/swarmmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} diff --git a/parts/swarm/swarmmasterresources.t b/parts/swarm/swarmmasterresources.t deleted file mode 100644 index 79cc3f5e7..000000000 --- a/parts/swarm/swarmmasterresources.t +++ /dev/null @@ -1,287 +0,0 @@ -{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets false}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} -{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('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": "[variables('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": "[variables('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": [ -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", - "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", - "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" - ], - "location": "[variables('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" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]" -{{if .MasterProfile.IsStorageAccount}} - ,"[variables('masterStorageAccountName')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "location": "[variables('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())]", - {{if .OrchestratorProfile.IsSwarmMode}} - {{if not .MasterProfile.IsRHEL}} - {{GetMasterSwarmModeCustomData}} - {{end}} - {{else}} - {{GetMasterSwarmCustomData}} - {{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - {{if .OrchestratorProfile.IsSwarmMode}} - "offer": "[variables('masterOSImageOffer')]", - "publisher": "[variables('masterOSImagePublisher')]", - "sku": "[variables('masterOSImageSKU')]", - "version": "[variables('masterOSImageVersion')]" - {{else}} - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - {{end}} - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('masterCustomScript')]", - "fileUris": [ -{{if .MasterProfile.IsRHEL}} - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" -{{end}} - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } diff --git a/parts/swarm/swarmmastervars.t b/parts/swarm/swarmmastervars.t deleted file mode 100644 index 2f88c2f91..000000000 --- a/parts/swarm/swarmmastervars.t +++ /dev/null @@ -1,178 +0,0 @@ - "adminUsername": "[parameters('linuxAdminUsername')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", -{{if .OrchestratorProfile.IsSwarmMode}} - "configureClusterScriptFile": "configure-swarmmode-cluster.sh", -{{else}} - "configureClusterScriptFile": "configure-swarm-cluster.sh", -{{end}} -{{if .MasterProfile.IsRHEL}} - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash ',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", -{{else}} - "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 &\" &')]", -{{end}} - "agentMaxVMs": 100, - "clusterInstallParameters": "[concat(variables('orchestratorVersion'), ' ',variables('dockerComposeVersion'), ' ',variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'),' ', parameters('dockerEngineDownloadRepo'), ' ', parameters('dockerComposeDownloadURL'))]", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, -{{if .MasterProfile.IsRHEL}} - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash ',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", -{{else}} - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", -{{end}} - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "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')]" - } - ] - ], -{{if .OrchestratorProfile.IsSwarmMode}} - "orchestratorName": "swarmm", - "masterOSImageOffer": {{GetMasterOSImageOffer}}, - "masterOSImagePublisher": {{GetMasterOSImagePublisher}}, - "masterOSImageSKU": {{GetMasterOSImageSKU}}, - "masterOSImageVersion": {{GetMasterOSImageVersion}}, - {{GetSwarmModeVersions}} -{{else}} - "orchestratorName": "swarm", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "14.04.5-LTS", - "osImageVersion": "14.04.201706190", - {{getSwarmVersions}} -{{end}} - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "postInstallScriptURI": "disabled", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", -{{if .HasStorageAccountDisks}} - "apiVersionStorage": "2015-06-15", - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - "vmsPerStorageAccount": 20, - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location')))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], - "storageAccountBaseName": "", -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", -{{end}} - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]" -{{if .HasWindows}} - ,"windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "singleQuote": "'", - "windowsCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-SwarmMasterIP ', variables('masterFirstAddrPrefix'), variables('masterFirstAddrOctet4'), variables('singleQuote'), ' ; ')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\CustomDataSetupScript.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\CustomDataSetupScript.log 2>&1')]", - "agentWindowsBackendPort": 3389 - {{if .WindowsProfile.HasSecrets}} - , - "windowsProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('windowsKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('windowsKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]", - "certificateStore" :"[parameters('windowsKeyVaultID{{$vIndex}}CertificateStore{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ] - {{end}} -{{end}} - diff --git a/parts/swarm/swarmparams.t b/parts/swarm/swarmparams.t deleted file mode 100644 index 13f5d8c52..000000000 --- a/parts/swarm/swarmparams.t +++ /dev/null @@ -1,15 +0,0 @@ - , - "dockerEngineDownloadRepo": { - "defaultValue": "", - "metadata": { - "description": "Docker engine download repo." - }, - "type": "string" - }, - "dockerComposeDownloadURL": { - "defaultValue": "", - "metadata": { - "description": "Docker compose download URL." - }, - "type": "string" - } \ No newline at end of file diff --git a/parts/swarm/swarmwinagentresourcesvmas.t b/parts/swarm/swarmwinagentresourcesvmas.t deleted file mode 100644 index 987025d07..000000000 --- a/parts/swarm/swarmwinagentresourcesvmas.t +++ /dev/null @@ -1,259 +0,0 @@ - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if not .IsCustomVNET}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "computername": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs', copyIndex(variables('{{.Name}}Offset')), add(900,variables('{{.Name}}Index')))]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{if IsSwarmMode}} - {{GetWinAgentSwarmModeCustomData}} - {{else}} - {{GetWinAgentSwarmCustomData}} - {{end}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "[variables('agentWindowsVersion')]" - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/cse')]", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('windowsCustomScript')]" - } - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } diff --git a/parts/swarm/swarmwinagentresourcesvmss.t b/parts/swarm/swarmwinagentresourcesvmss.t deleted file mode 100644 index 4e01f17bb..000000000 --- a/parts/swarm/swarmwinagentresourcesvmss.t +++ /dev/null @@ -1,208 +0,0 @@ -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if not .IsCustomVNET}} - ,"[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/backendAddressPools/', variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "computerNamePrefix": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs')]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{if IsSwarmMode}} - {{GetWinAgentSwarmModeCustomData}} - {{else}} - {{GetWinAgentSwarmCustomData}} - {{end}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "[variables('agentWindowsVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - }, - "extensionProfile": { - "extensions": [ - { - "name": "vmssCustomScriptExtension", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('windowsCustomScript')]" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } diff --git a/pkg/api/azenvtypes.go b/pkg/api/azenvtypes.go index b9e7a41f7..92fcbf374 100644 --- a/pkg/api/azenvtypes.go +++ b/pkg/api/azenvtypes.go @@ -3,37 +3,14 @@ package api -import "fmt" - //AzureEnvironmentSpecConfig is the overall configuration differences in different cloud environments. type AzureEnvironmentSpecConfig struct { CloudName string `json:"cloudName,omitempty"` - DockerSpecConfig DockerSpecConfig `json:"dockerSpecConfig,omitempty"` KubernetesSpecConfig KubernetesSpecConfig `json:"kubernetesSpecConfig,omitempty"` - DCOSSpecConfig DCOSSpecConfig `json:"-"` EndpointConfig AzureEndpointConfig `json:"endpointConfig,omitempty"` OSImageConfig map[Distro]AzureOSImageConfig `json:"osImageConfig,omitempty"` } -//DockerSpecConfig is the configurations of docker -type DockerSpecConfig struct { - DockerEngineRepo string `json:"dockerEngineRepo,omitempty"` - DockerComposeDownloadURL string `json:"dockerComposeDownloadURL,omitempty"` -} - -//DCOSSpecConfig is the configurations of DCOS -type DCOSSpecConfig struct { - DCOS188BootstrapDownloadURL string - DCOS190BootstrapDownloadURL string - DCOS198BootstrapDownloadURL string - DCOS110BootstrapDownloadURL string - DCOS111BootstrapDownloadURL string - DCOSWindowsBootstrapDownloadURL string - DcosRepositoryURL string // For custom install, for example CI, need these three addributes - DcosClusterPackageListID string // the id of the package list file - DcosProviderPackageID string // the id of the dcos-provider-xxx package -} - //KubernetesSpecConfig is the kubernetes container images used. type KubernetesSpecConfig struct { AzureTelemetryPID string `json:"azureTelemetryPID,omitempty"` @@ -109,24 +86,6 @@ var ( AlwaysPullWindowsPauseImage: DefaultAlwaysPullWindowsPauseImage, } - //DefaultDCOSSpecConfig is the default DC/OS binary download URL. - DefaultDCOSSpecConfig = DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable", "5df43052907c021eeb5de145419a3da1898c58a5"), - DCOS190BootstrapDownloadURL: fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable", "58fd0833ce81b6244fc73bf65b5deb43217b0bd7"), - DCOS198BootstrapDownloadURL: fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable/1.9.8", "f4ae0d20665fc68ee25282d6f78681b2773c6e10"), - DCOS110BootstrapDownloadURL: fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable/1.10.0", "4d92536e7381176206e71ee15b5ffe454439920c"), - DCOS111BootstrapDownloadURL: fmt.Sprintf(AzureEdgeDCOSBootstrapDownloadURL, "stable/1.11.0", "a0654657903fb68dff60f6e522a7f241c1bfbf0f"), - DCOSWindowsBootstrapDownloadURL: "http://dcos-win.westus.cloudapp.azure.com/dcos-windows/stable/", - DcosRepositoryURL: "https://dcosio.azureedge.net/dcos/stable/1.11.0", - DcosClusterPackageListID: "248a66388bba1adbcb14a52fd3b7b424ab06fa76", - } - - //DefaultDockerSpecConfig is the default Docker engine repo. - DefaultDockerSpecConfig = DockerSpecConfig{ - DockerEngineRepo: "https://aptdocker.azureedge.net/repo", - DockerComposeDownloadURL: "https://github.com/docker/compose/releases/download", - } - //Ubuntu1604OSImageConfig is the default Linux distribution. Ubuntu1604OSImageConfig = AzureOSImageConfig{ ImageOffer: "UbuntuServer", @@ -210,11 +169,8 @@ var ( //AzureCloudSpec is the default configurations for global azure. AzureCloudSpec = AzureEnvironmentSpecConfig{ CloudName: AzurePublicCloud, - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DefaultDockerSpecConfig, //KubernetesSpecConfig is the default kubernetes container image url. KubernetesSpecConfig: DefaultKubernetesSpecConfig, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "cloudapp.azure.com", @@ -237,9 +193,7 @@ var ( //AzureGermanCloudSpec is the German cloud config. AzureGermanCloudSpec = AzureEnvironmentSpecConfig{ CloudName: AzureGermanCloud, - DockerSpecConfig: DefaultDockerSpecConfig, KubernetesSpecConfig: DefaultKubernetesSpecConfig, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "cloudapp.microsoftazure.de", }, @@ -259,9 +213,7 @@ var ( //AzureUSGovernmentCloudSpec is the US government config. AzureUSGovernmentCloudSpec = AzureEnvironmentSpecConfig{ CloudName: AzureUSGovernmentCloud, - DockerSpecConfig: DefaultDockerSpecConfig, KubernetesSpecConfig: DefaultKubernetesSpecConfig, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "cloudapp.usgovcloudapi.net", }, @@ -281,11 +233,6 @@ var ( //AzureChinaCloudSpec is the configurations for Azure China (Mooncake) AzureChinaCloudSpec = AzureEnvironmentSpecConfig{ CloudName: AzureChinaCloud, - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DockerSpecConfig{ - DockerEngineRepo: "https://mirror.azk8s.cn/docker-engine/apt/repo/", - DockerComposeDownloadURL: "https://mirror.azk8s.cn/docker-toolbox/linux/compose", - }, //KubernetesSpecConfig - Due to Chinese firewall issue, the default containers from google is blocked, use the Chinese local mirror instead KubernetesSpecConfig: KubernetesSpecConfig{ KubernetesImageBase: "gcr.azk8s.cn/google_containers/", @@ -308,12 +255,6 @@ var ( WindowsPauseImageURL: "mcr.microsoft.com/oss/kubernetes/pause:" + WindowsPauseImageVersion, AlwaysPullWindowsPauseImage: DefaultAlwaysPullWindowsPauseImage, }, - DCOSSpecConfig: DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: fmt.Sprintf(AzureChinaCloudDCOSBootstrapDownloadURL, "5df43052907c021eeb5de145419a3da1898c58a5"), - DCOSWindowsBootstrapDownloadURL: "https://dcosdevstorage.blob.core.windows.net/dcos-windows", - DCOS190BootstrapDownloadURL: fmt.Sprintf(AzureChinaCloudDCOSBootstrapDownloadURL, "58fd0833ce81b6244fc73bf65b5deb43217b0bd7"), - DCOS198BootstrapDownloadURL: fmt.Sprintf(AzureChinaCloudDCOSBootstrapDownloadURL, "f4ae0d20665fc68ee25282d6f78681b2773c6e10"), - }, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "cloudapp.chinacloudapi.cn", diff --git a/pkg/api/azenvtypes_test.go b/pkg/api/azenvtypes_test.go index c3446470b..cd15878c0 100644 --- a/pkg/api/azenvtypes_test.go +++ b/pkg/api/azenvtypes_test.go @@ -13,9 +13,6 @@ func TestURLForAzureChinaCloud(t *testing.T) { var azureChinaCloudMirror = "azk8s.cn" g := NewGomegaWithT(t) - g.Expect(AzureChinaCloudSpec.DockerSpecConfig.DockerEngineRepo).To(ContainSubstring(azureChinaCloudMirror)) - g.Expect(AzureChinaCloudSpec.DockerSpecConfig.DockerComposeDownloadURL).To(ContainSubstring(azureChinaCloudMirror)) - g.Expect(AzureChinaCloudSpec.KubernetesSpecConfig.KubernetesImageBase).To(ContainSubstring(azureChinaCloudMirror)) g.Expect(AzureChinaCloudSpec.KubernetesSpecConfig.ACIConnectorImageBase).To(ContainSubstring(azureChinaCloudMirror)) g.Expect(AzureChinaCloudSpec.KubernetesSpecConfig.NVIDIAImageBase).To(ContainSubstring(azureChinaCloudMirror)) diff --git a/pkg/api/common/const.go b/pkg/api/common/const.go index 8253bebfa..d8ec5c463 100644 --- a/pkg/api/common/const.go +++ b/pkg/api/common/const.go @@ -5,16 +5,8 @@ package common // the orchestrators supported const ( - // Mesos is the string constant for MESOS orchestrator type - Mesos string = "Mesos" - // DCOS is the string constant for DCOS orchestrator type and defaults to DCOS188 - DCOS string = "DCOS" - // Swarm is the string constant for the Swarm orchestrator type - Swarm string = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes string = "Kubernetes" - // SwarmMode is the string constant for the Swarm Mode orchestrator type - SwarmMode string = "SwarmMode" ) // validation values @@ -76,55 +68,6 @@ const ( const LegacyControlPlaneVMPrefix string = "k8s-master" -const ( - // DCOSVersion1Dot11Dot2 is the major.minor.patch string for 1.11.0 versions of DCOS - DCOSVersion1Dot11Dot2 string = "1.11.2" - // DCOSVersion1Dot11Dot0 is the major.minor.patch string for 1.11.0 versions of DCOS - DCOSVersion1Dot11Dot0 string = "1.11.0" - // DCOSVersion1Dot10Dot0 is the major.minor.patch string for 1.10.0 versions of DCOS - DCOSVersion1Dot10Dot0 string = "1.10.0" - // DCOSVersion1Dot9Dot0 is the major.minor.patch string for 1.9.0 versions of DCOS - DCOSVersion1Dot9Dot0 string = "1.9.0" - // DCOSVersion1Dot9Dot8 is the major.minor.patch string for 1.9.8 versions of DCOS - DCOSVersion1Dot9Dot8 string = "1.9.8" - // DCOSVersion1Dot8Dot8 is the major.minor.patch string for 1.8.8 versions of DCOS - DCOSVersion1Dot8Dot8 string = "1.8.8" - // DCOSDefaultVersion is the default major.minor.patch version for DCOS - DCOSDefaultVersion string = DCOSVersion1Dot11Dot0 -) - -// AllDCOSSupportedVersions maintain a list of available dcos versions in aks-engine -var AllDCOSSupportedVersions = []string{ - DCOSVersion1Dot11Dot2, - DCOSVersion1Dot11Dot0, - DCOSVersion1Dot10Dot0, - DCOSVersion1Dot9Dot8, - DCOSVersion1Dot9Dot0, - DCOSVersion1Dot8Dot8, -} - -const ( - // SwarmVersion is the Swarm orchestrator version - SwarmVersion = "swarm:1.1.0" - // DockerCEVersion is the DockerCE orchestrator version - DockerCEVersion = "17.03.*" -) - -// GetAllSupportedDCOSVersions returns a slice of all supported DCOS versions. -func GetAllSupportedDCOSVersions() []string { - return AllDCOSSupportedVersions -} - -// GetAllSupportedSwarmVersions returns a slice of all supported Swarm versions. -func GetAllSupportedSwarmVersions() []string { - return []string{SwarmVersion} -} - -// GetAllSupportedDockerCEVersions returns a slice of all supported Docker CE versions. -func GetAllSupportedDockerCEVersions() []string { - return []string{DockerCEVersion} -} - // MinCloudProviderQPSToBucketFactor defines the minimum ratio between QPS and Bucket size for cloudprovider rate limiting const MinCloudProviderQPSToBucketFactor float64 = 0.1 diff --git a/pkg/api/common/versions.go b/pkg/api/common/versions.go index 96ec22270..0da1b6c8f 100644 --- a/pkg/api/common/versions.go +++ b/pkg/api/common/versions.go @@ -466,8 +466,6 @@ func GetSupportedVersions(orchType string, isUpdate, hasWindows bool, isAzureSta switch orchType { case Kubernetes: return GetAllSupportedKubernetesVersions(isUpdate, hasWindows, isAzureStackCloud), GetDefaultKubernetesVersion(hasWindows, isAzureStackCloud) - case DCOS: - return AllDCOSSupportedVersions, DCOSDefaultVersion default: return nil, "" } diff --git a/pkg/api/common/versions_test.go b/pkg/api/common/versions_test.go index 85e42f95d..bc0465e14 100644 --- a/pkg/api/common/versions_test.go +++ b/pkg/api/common/versions_test.go @@ -412,7 +412,7 @@ func Test_GetValidPatchVersion(t *testing.T) { t.Errorf("It is not the default Kubernetes version") } - v = GetValidPatchVersion(Mesos, "1.6.0", false, false, false) + v = GetValidPatchVersion("BogusOrchestrator", "1.6.0", false, false, false) if v != "" { t.Errorf("Expected empty version for unsupported orchType") } @@ -445,7 +445,7 @@ func Test_GetValidPatchVersion(t *testing.T) { t.Errorf("It is not the default Kubernetes version") } - v = GetValidPatchVersion(Mesos, "1.6.0", false, false, true) + v = GetValidPatchVersion("BogusOrchestrator", "1.6.0", false, false, true) if v != "" { t.Errorf("Expected empty version for unsupported orchType") } diff --git a/pkg/api/const.go b/pkg/api/const.go index bb0e05216..d09563000 100644 --- a/pkg/api/const.go +++ b/pkg/api/const.go @@ -5,16 +5,8 @@ package api // the orchestrators supported by vlabs const ( - // Mesos is the string constant for MESOS orchestrator type - Mesos string = "Mesos" - // DCOS is the string constant for DCOS orchestrator type and defaults to DCOS188 - DCOS string = "DCOS" - // Swarm is the string constant for the Swarm orchestrator type - Swarm string = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes string = "Kubernetes" - // SwarmMode is the string constant for the Swarm Mode orchestrator type - SwarmMode string = "SwarmMode" ) // the OSTypes supported by vlabs @@ -39,14 +31,6 @@ const ( ) const ( - // SwarmVersion is the Swarm orchestrator version - SwarmVersion = "swarm:1.1.0" - // SwarmDockerComposeVersion is the Docker Compose version - SwarmDockerComposeVersion = "1.6.2" - // DockerCEVersion is the DockerCE orchestrator version - DockerCEVersion = "17.03.*" - // DockerCEDockerComposeVersion is the Docker Compose version - DockerCEDockerComposeVersion = "1.14.0" // KubernetesWindowsDockerVersion is the default version for docker on Windows nodes in kubernetes KubernetesWindowsDockerVersion = "19.03.11" // KubernetesDefaultWindowsSku is the default SKU for Windows VMs in kubernetes @@ -126,9 +110,6 @@ const ( Ephemeral = "Ephemeral" ) -// To identify programmatically generated public agent pools -const publicAgentPoolSuffix = "-public" - const ( // DefaultTillerAddonEnabled determines the aks-engine provided default for enabling tiller addon DefaultTillerAddonEnabled = false @@ -329,11 +310,6 @@ const ( ) const ( - //AzureEdgeDCOSBootstrapDownloadURL is the azure edge CDN download url - AzureEdgeDCOSBootstrapDownloadURL = "https://dcosio.azureedge.net/dcos/%s/bootstrap/%s.bootstrap.tar.xz" - //AzureChinaCloudDCOSBootstrapDownloadURL is the China specific DCOS package download url. - AzureChinaCloudDCOSBootstrapDownloadURL = "https://acsengine.blob.core.chinacloudapi.cn/dcos/%s.bootstrap.tar.xz" - //AzureEdgeDCOSWindowsBootstrapDownloadURL DefaultMicrosoftAptRepositoryURL = "https://packages.microsoft.com" ) @@ -356,20 +332,6 @@ const ( ) const ( - // DefaultMasterSubnet specifies the default master subnet for DCOS or Swarm - DefaultMasterSubnet = "172.16.0.0/24" - // DefaultFirstConsecutiveStaticIP specifies the static IP address on master 0 for DCOS or Swarm - DefaultFirstConsecutiveStaticIP = "172.16.0.5" - // DefaultSwarmWindowsMasterSubnet specifies the default master subnet for a Swarm Windows cluster - DefaultSwarmWindowsMasterSubnet = "192.168.255.0/24" - // DefaultSwarmWindowsFirstConsecutiveStaticIP specifies the static IP address on master 0 for a Swarm WIndows cluster - DefaultSwarmWindowsFirstConsecutiveStaticIP = "192.168.255.5" - // DefaultDCOSMasterSubnet specifies the default master subnet for a DCOS cluster - DefaultDCOSMasterSubnet = "192.168.255.0/24" - // DefaultDCOSFirstConsecutiveStaticIP specifies the static IP address on master 0 for a DCOS cluster - DefaultDCOSFirstConsecutiveStaticIP = "192.168.255.5" - // DefaultDCOSBootstrapStaticIP specifies the static IP address on bootstrap for a DCOS cluster - DefaultDCOSBootstrapStaticIP = "192.168.255.240" // DefaultKubernetesMasterSubnet specifies the default subnet for masters and agents. // Except when master VMSS is used, this specifies the default subnet for masters. DefaultKubernetesMasterSubnet = "10.240.0.0/16" diff --git a/pkg/api/converterfromapi.go b/pkg/api/converterfromapi.go index c143e7b70..33b83ecf4 100644 --- a/pkg/api/converterfromapi.go +++ b/pkg/api/converterfromapi.go @@ -46,12 +46,6 @@ func ConvertOrchestratorVersionProfileToVLabs(api *OrchestratorVersionProfile) * switch api.OrchestratorType { case Kubernetes: vlabsProfile.OrchestratorType = vlabs.Kubernetes - case DCOS: - vlabsProfile.OrchestratorType = vlabs.DCOS - case Swarm: - vlabsProfile.OrchestratorType = vlabs.Swarm - case SwarmMode: - vlabsProfile.OrchestratorType = vlabs.SwarmMode } vlabsProfile.OrchestratorVersion = api.OrchestratorVersion vlabsProfile.Default = api.Default @@ -242,41 +236,6 @@ func convertOrchestratorProfileToVLabs(api *OrchestratorProfile, o *vlabs.Orches o.KubernetesConfig = &vlabs.KubernetesConfig{} convertKubernetesConfigToVLabs(api.KubernetesConfig, o.KubernetesConfig) } - - if api.DcosConfig != nil { - o.DcosConfig = &vlabs.DcosConfig{} - convertDcosConfigToVLabs(api.DcosConfig, o.DcosConfig) - } -} - -func convertDcosConfigToVLabs(api *DcosConfig, vl *vlabs.DcosConfig) { - vl.DcosBootstrapURL = api.DcosBootstrapURL - vl.DcosWindowsBootstrapURL = api.DcosWindowsBootstrapURL - - if api.Registry != "" { - vl.Registry = api.Registry - } - - if api.RegistryUser != "" { - vl.RegistryUser = api.RegistryUser - } - - if api.RegistryPass != "" { - vl.RegistryPass = api.RegistryPass - } - vl.DcosRepositoryURL = api.DcosRepositoryURL - vl.DcosClusterPackageListID = api.DcosClusterPackageListID - vl.DcosProviderPackageID = api.DcosProviderPackageID - - if api.BootstrapProfile != nil { - vl.BootstrapProfile = &vlabs.BootstrapProfile{ - VMSize: api.BootstrapProfile.VMSize, - OSDiskSizeGB: api.BootstrapProfile.OSDiskSizeGB, - OAuthEnabled: api.BootstrapProfile.OAuthEnabled, - StaticIP: api.BootstrapProfile.StaticIP, - Subnet: api.BootstrapProfile.Subnet, - } - } } func convertKubernetesConfigToVLabs(apiCfg *KubernetesConfig, vlabsCfg *vlabs.KubernetesConfig) { @@ -747,22 +706,6 @@ func convertTelemetryProfileToVLabs(api *TelemetryProfile, vlabstp *vlabs.Teleme func convertAzureEnvironmentSpecConfigToVLabs(api *AzureEnvironmentSpecConfig, vlabses *vlabs.AzureEnvironmentSpecConfig) { vlabses.CloudName = api.CloudName - vlabses.DCOSSpecConfig = vlabs.DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: api.DCOSSpecConfig.DCOS188BootstrapDownloadURL, - DCOS190BootstrapDownloadURL: api.DCOSSpecConfig.DCOS190BootstrapDownloadURL, - DCOS198BootstrapDownloadURL: api.DCOSSpecConfig.DCOS198BootstrapDownloadURL, - DCOS110BootstrapDownloadURL: api.DCOSSpecConfig.DCOS110BootstrapDownloadURL, - DCOS111BootstrapDownloadURL: api.DCOSSpecConfig.DCOS111BootstrapDownloadURL, - DCOSWindowsBootstrapDownloadURL: api.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL, - DcosRepositoryURL: api.DCOSSpecConfig.DcosRepositoryURL, - DcosClusterPackageListID: api.DCOSSpecConfig.DcosClusterPackageListID, - DcosProviderPackageID: api.DCOSSpecConfig.DcosProviderPackageID, - } - - vlabses.DockerSpecConfig = vlabs.DockerSpecConfig{ - DockerEngineRepo: api.DockerSpecConfig.DockerEngineRepo, - DockerComposeDownloadURL: api.DockerSpecConfig.DockerComposeDownloadURL, - } vlabses.EndpointConfig = vlabs.AzureEndpointConfig{ ResourceManagerVMDNSSuffix: api.EndpointConfig.ResourceManagerVMDNSSuffix, } diff --git a/pkg/api/converterfromapi_test.go b/pkg/api/converterfromapi_test.go index 536c1a07a..016cad0e3 100644 --- a/pkg/api/converterfromapi_test.go +++ b/pkg/api/converterfromapi_test.go @@ -183,11 +183,6 @@ func TestConvertAzureEnvironmentSpecConfigToVLabs(t *testing.T) { AuthenticationMethod: ClientCertificateAuthMethod, AzureEnvironmentSpecConfig: &AzureEnvironmentSpecConfig{ CloudName: "AzureStackCloud", - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DockerSpecConfig{ - DockerEngineRepo: "DockerEngineRepo", - DockerComposeDownloadURL: "DockerComposeDownloadURL", - }, //KubernetesSpecConfig - Due to Chinese firewall issue, the default containers from google is blocked, use the Chinese local mirror instead KubernetesSpecConfig: KubernetesSpecConfig{ AzureTelemetryPID: "AzureTelemetryPID", @@ -209,17 +204,6 @@ func TestConvertAzureEnvironmentSpecConfigToVLabs(t *testing.T) { WindowsPauseImageURL: "WindowsPauseImageURL", AlwaysPullWindowsPauseImage: true, }, - DCOSSpecConfig: DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: "DCOS188BootstrapDownloadURL", - DCOS190BootstrapDownloadURL: "DCOS190BootstrapDownloadURL", - DCOS198BootstrapDownloadURL: "DCOS198BootstrapDownloadURL", - DCOS110BootstrapDownloadURL: "DCOS110BootstrapDownloadURL", - DCOS111BootstrapDownloadURL: "DCOS111BootstrapDownloadURL", - DCOSWindowsBootstrapDownloadURL: "DCOSWindowsBootstrapDownloadURL", - DcosRepositoryURL: "DcosRepositoryURL", - DcosClusterPackageListID: "DcosClusterPackageListID", - DcosProviderPackageID: "DcosProviderPackageID", - }, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "ResourceManagerVMDNSSuffix", }, @@ -303,43 +287,6 @@ func TestConvertAzureEnvironmentSpecConfigToVLabs(t *testing.T) { t.Errorf("incorrect AlwaysPullWindowsPauseImage, expect: '%t', actual: '%t'", csSpec.KubernetesSpecConfig.AlwaysPullWindowsPauseImage, vlabscsSpec.KubernetesSpecConfig.AlwaysPullWindowsPauseImage) } - //DockerSpecConfig - if vlabscsSpec.DockerSpecConfig.DockerComposeDownloadURL != csSpec.DockerSpecConfig.DockerComposeDownloadURL { - t.Errorf("incorrect DockerComposeDownloadURL, expect: '%s', actual: '%s'", csSpec.DockerSpecConfig.DockerComposeDownloadURL, vlabscsSpec.DockerSpecConfig.DockerComposeDownloadURL) - } - if vlabscsSpec.DockerSpecConfig.DockerEngineRepo != csSpec.DockerSpecConfig.DockerEngineRepo { - t.Errorf("incorrect DockerEngineRepo, expect: '%s', actual: '%s'", csSpec.DockerSpecConfig.DockerEngineRepo, vlabscsSpec.DockerSpecConfig.DockerEngineRepo) - } - - //DCOSSpecConfig - if vlabscsSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL { - t.Errorf("incorrect DCOS188BootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL { - t.Errorf("incorrect DCOS190BootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL { - t.Errorf("incorrect DCOS198BootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL { - t.Errorf("incorrect DCOS110BootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL { - t.Errorf("incorrect DCOS111BootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL != csSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL { - t.Errorf("incorrect DCOSWindowsBootstrapDownloadURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL, vlabscsSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL) - } - if vlabscsSpec.DCOSSpecConfig.DcosRepositoryURL != csSpec.DCOSSpecConfig.DcosRepositoryURL { - t.Errorf("incorrect DcosRepositoryURL, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DcosRepositoryURL, vlabscsSpec.DCOSSpecConfig.DcosRepositoryURL) - } - if vlabscsSpec.DCOSSpecConfig.DcosClusterPackageListID != csSpec.DCOSSpecConfig.DcosClusterPackageListID { - t.Errorf("incorrect DcosClusterPackageListID, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DcosClusterPackageListID, vlabscsSpec.DCOSSpecConfig.DcosClusterPackageListID) - } - if vlabscsSpec.DCOSSpecConfig.DcosProviderPackageID != csSpec.DCOSSpecConfig.DcosProviderPackageID { - t.Errorf("incorrect DcosProviderPackageID, expect: '%s', actual: '%s'", csSpec.DCOSSpecConfig.DcosProviderPackageID, vlabscsSpec.DCOSSpecConfig.DcosProviderPackageID) - } - //EndpointConfig if vlabscsSpec.EndpointConfig.ResourceManagerVMDNSSuffix != csSpec.EndpointConfig.ResourceManagerVMDNSSuffix { t.Errorf("incorrect ResourceManagerVMDNSSuffix, expect: '%s', actual: '%s'", csSpec.EndpointConfig.ResourceManagerVMDNSSuffix, vlabscsSpec.EndpointConfig.ResourceManagerVMDNSSuffix) @@ -497,23 +444,7 @@ func getDefaultContainerService() *ContainerService { OrchestratorProfile: &OrchestratorProfile{ OrchestratorType: "Kubernetes", OrchestratorVersion: "1.11.6", - DcosConfig: &DcosConfig{ - DcosBootstrapURL: "SampleDcosBootstrapURL", - DcosWindowsBootstrapURL: "SampleWindowsDcosBootstrapURL", - Registry: "SampleRegistry", - RegistryPass: "SampleRegistryPass", - RegistryUser: "SampleRegistryUser", - DcosClusterPackageListID: "SampleDcosClusterPackageListID", - DcosProviderPackageID: "SampleDcosProviderPackageID", - BootstrapProfile: &BootstrapProfile{ - VMSize: "Standard_Ds1_v1", - OSDiskSizeGB: 256, - OAuthEnabled: true, - StaticIP: "172.0.0.1", - Subnet: "255.255.255.0", - }, - }, - KubernetesConfig: &KubernetesConfig{}, + KubernetesConfig: &KubernetesConfig{}, }, MasterProfile: &MasterProfile{ Count: 1, diff --git a/pkg/api/convertertoapi.go b/pkg/api/convertertoapi.go index 47d6bcfc6..a06b78db7 100644 --- a/pkg/api/convertertoapi.go +++ b/pkg/api/convertertoapi.go @@ -248,54 +248,11 @@ func convertVLabsOrchestratorProfile(vp *vlabs.Properties, api *OrchestratorProf isUpdate, vp.HasWindows(), vp.IsAzureStackCloud()) - - case DCOS: - if vlabscs.DcosConfig != nil { - api.DcosConfig = &DcosConfig{} - convertVLabsDcosConfig(vlabscs.DcosConfig, api.DcosConfig) - } - api.OrchestratorVersion = common.RationalizeReleaseAndVersion( - vlabscs.OrchestratorType, - vlabscs.OrchestratorRelease, - vlabscs.OrchestratorVersion, - isUpdate, - false, - false) } return nil } -func convertVLabsDcosConfig(vlabs *vlabs.DcosConfig, api *DcosConfig) { - api.DcosBootstrapURL = vlabs.DcosBootstrapURL - api.DcosWindowsBootstrapURL = vlabs.DcosWindowsBootstrapURL - - if len(vlabs.Registry) > 0 { - api.Registry = vlabs.Registry - } - - if len(vlabs.RegistryUser) > 0 { - api.RegistryUser = vlabs.RegistryUser - } - - if len(vlabs.RegistryPass) > 0 { - api.RegistryPass = vlabs.RegistryPass - } - api.DcosRepositoryURL = vlabs.DcosRepositoryURL - api.DcosClusterPackageListID = vlabs.DcosClusterPackageListID - api.DcosProviderPackageID = vlabs.DcosProviderPackageID - - if vlabs.BootstrapProfile != nil { - api.BootstrapProfile = &BootstrapProfile{ - VMSize: vlabs.BootstrapProfile.VMSize, - OSDiskSizeGB: vlabs.BootstrapProfile.OSDiskSizeGB, - OAuthEnabled: vlabs.BootstrapProfile.OAuthEnabled, - StaticIP: vlabs.BootstrapProfile.StaticIP, - Subnet: vlabs.BootstrapProfile.Subnet, - } - } -} - func convertVLabsKubernetesConfig(vlabs *vlabs.KubernetesConfig, api *KubernetesConfig) { api.KubernetesImageBase = vlabs.KubernetesImageBase api.KubernetesImageBaseType = vlabs.KubernetesImageBaseType @@ -749,30 +706,6 @@ func convertVLabsAADProfile(vlabs *vlabs.AADProfile, api *AADProfile) { api.Authenticator = OIDC } -func addDCOSPublicAgentPool(api *Properties) { - publicPool := &AgentPoolProfile{} - // tag this agent pool with a known suffix string - publicPool.Name = api.AgentPoolProfiles[0].Name + publicAgentPoolSuffix - // move DNS prefix to public pool - publicPool.DNSPrefix = api.AgentPoolProfiles[0].DNSPrefix - api.AgentPoolProfiles[0].DNSPrefix = "" - publicPool.VMSize = api.AgentPoolProfiles[0].VMSize // - use same VMsize for public pool - publicPool.OSType = api.AgentPoolProfiles[0].OSType // - use same OSType for public pool - api.AgentPoolProfiles[0].Ports = nil - for _, port := range [3]int{80, 443, 8080} { - publicPool.Ports = append(publicPool.Ports, port) - } - // - VM Count for public agents is based on the following: - // 1 master => 1 VM - // 3, 5 master => 3 VMsize - if api.MasterProfile.Count == 1 { - publicPool.Count = 1 - } else { - publicPool.Count = 3 - } - api.AgentPoolProfiles = append(api.AgentPoolProfiles, publicPool) -} - func convertVLabsCustomCloudProfile(vlabs *vlabs.CustomCloudProfile, api *CustomCloudProfile) { if vlabs.Environment != nil { api.Environment = &azure.Environment{} @@ -824,22 +757,6 @@ func convertVLabsTelemetryProfile(vlabs *vlabs.TelemetryProfile, api *TelemetryP func convertAzureEnvironmentSpecConfig(vlabses *vlabs.AzureEnvironmentSpecConfig, api *AzureEnvironmentSpecConfig) { api.CloudName = vlabses.CloudName - api.DCOSSpecConfig = DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOS188BootstrapDownloadURL, - DCOS190BootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOS190BootstrapDownloadURL, - DCOS198BootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOS198BootstrapDownloadURL, - DCOS110BootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOS110BootstrapDownloadURL, - DCOS111BootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOS111BootstrapDownloadURL, - DCOSWindowsBootstrapDownloadURL: vlabses.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL, - DcosRepositoryURL: vlabses.DCOSSpecConfig.DcosRepositoryURL, - DcosClusterPackageListID: vlabses.DCOSSpecConfig.DcosClusterPackageListID, - DcosProviderPackageID: vlabses.DCOSSpecConfig.DcosProviderPackageID, - } - - api.DockerSpecConfig = DockerSpecConfig{ - DockerEngineRepo: vlabses.DockerSpecConfig.DockerEngineRepo, - DockerComposeDownloadURL: vlabses.DockerSpecConfig.DockerComposeDownloadURL, - } api.EndpointConfig = AzureEndpointConfig{ ResourceManagerVMDNSSuffix: vlabses.EndpointConfig.ResourceManagerVMDNSSuffix, } diff --git a/pkg/api/convertertoapi_test.go b/pkg/api/convertertoapi_test.go index 61bd21176..6fcc547a7 100644 --- a/pkg/api/convertertoapi_test.go +++ b/pkg/api/convertertoapi_test.go @@ -17,74 +17,6 @@ import ( "github.com/google/go-cmp/cmp" ) -func TestAddDCOSPublicAgentPool(t *testing.T) { - expectedNumPools := 2 - for _, masterCount := range [2]int{1, 3} { - profiles := []*AgentPoolProfile{} - profile := makeAgentPoolProfile(1, "agentprivate", "test-dcos-pool", "Standard_D2_v2", Linux) - profiles = append(profiles, profile) - master := makeMasterProfile(masterCount, "test-dcos", "Standard_D2_v2") - props := getProperties(profiles, master) - expectedPublicPoolName := props.AgentPoolProfiles[0].Name + publicAgentPoolSuffix - expectedPublicDNSPrefix := props.AgentPoolProfiles[0].DNSPrefix - expectedPrivateDNSPrefix := "" - expectedPublicOSType := props.AgentPoolProfiles[0].OSType - expectedPublicVMSize := props.AgentPoolProfiles[0].VMSize - addDCOSPublicAgentPool(props) - if len(props.AgentPoolProfiles) != expectedNumPools { - t.Fatalf("incorrect agent pools count. expected=%d actual=%d", expectedNumPools, len(props.AgentPoolProfiles)) - } - if props.AgentPoolProfiles[1].Name != expectedPublicPoolName { - t.Fatalf("incorrect public pool name. expected=%s actual=%s", expectedPublicPoolName, props.AgentPoolProfiles[1].Name) - } - if props.AgentPoolProfiles[1].DNSPrefix != expectedPublicDNSPrefix { - t.Fatalf("incorrect public pool DNS prefix. expected=%s actual=%s", expectedPublicDNSPrefix, props.AgentPoolProfiles[1].DNSPrefix) - } - if props.AgentPoolProfiles[0].DNSPrefix != expectedPrivateDNSPrefix { - t.Fatalf("incorrect private pool DNS prefix. expected=%s actual=%s", expectedPrivateDNSPrefix, props.AgentPoolProfiles[0].DNSPrefix) - } - if props.AgentPoolProfiles[1].OSType != expectedPublicOSType { - t.Fatalf("incorrect public pool OS type. expected=%s actual=%s", expectedPublicOSType, props.AgentPoolProfiles[1].OSType) - } - if props.AgentPoolProfiles[1].VMSize != expectedPublicVMSize { - t.Fatalf("incorrect public pool VM size. expected=%s actual=%s", expectedPublicVMSize, props.AgentPoolProfiles[1].VMSize) - } - for i, port := range [3]int{80, 443, 8080} { - if props.AgentPoolProfiles[1].Ports[i] != port { - t.Fatalf("incorrect public pool port assignment. expected=%d actual=%d", port, props.AgentPoolProfiles[1].Ports[i]) - } - } - if props.AgentPoolProfiles[1].Count != masterCount { - t.Fatalf("incorrect public pool VM size. expected=%d actual=%d", masterCount, props.AgentPoolProfiles[1].Count) - } - } -} - -func makeAgentPoolProfile(count int, name, dNSPrefix, vMSize string, oSType OSType) *AgentPoolProfile { - return &AgentPoolProfile{ - Name: name, - Count: count, - DNSPrefix: dNSPrefix, - OSType: oSType, - VMSize: vMSize, - } -} - -func makeMasterProfile(count int, dNSPrefix, vMSize string) *MasterProfile { - return &MasterProfile{ - Count: count, - DNSPrefix: dNSPrefix, - VMSize: vMSize, - } -} - -func getProperties(profiles []*AgentPoolProfile, master *MasterProfile) *Properties { - return &Properties{ - AgentPoolProfiles: profiles, - MasterProfile: master, - } -} - func TestKubernetesOrchestratorVersionFailWhenInvalid(t *testing.T) { vlabscs := &vlabs.ContainerService{ Properties: &vlabs.Properties{ @@ -356,11 +288,6 @@ func TestConvertAzureEnvironmentSpecConfig(t *testing.T) { AuthenticationMethod: ClientSecretAuthMethod, AzureEnvironmentSpecConfig: &vlabs.AzureEnvironmentSpecConfig{ CloudName: "AzureStackCloud", - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: vlabs.DockerSpecConfig{ - DockerEngineRepo: "DockerEngineRepo", - DockerComposeDownloadURL: "DockerComposeDownloadURL", - }, //KubernetesSpecConfig - Due to Chinese firewall issue, the default containers from google is blocked, use the Chinese local mirror instead KubernetesSpecConfig: vlabs.KubernetesSpecConfig{ AzureTelemetryPID: "AzureTelemetryPID", @@ -383,17 +310,6 @@ func TestConvertAzureEnvironmentSpecConfig(t *testing.T) { WindowsPauseImageURL: "WindowsPauseImageURL", AlwaysPullWindowsPauseImage: true, }, - DCOSSpecConfig: vlabs.DCOSSpecConfig{ - DCOS188BootstrapDownloadURL: "DCOS188BootstrapDownloadURL", - DCOS190BootstrapDownloadURL: "DCOS190BootstrapDownloadURL", - DCOS198BootstrapDownloadURL: "DCOS198BootstrapDownloadURL", - DCOS110BootstrapDownloadURL: "DCOS110BootstrapDownloadURL", - DCOS111BootstrapDownloadURL: "DCOS111BootstrapDownloadURL", - DCOSWindowsBootstrapDownloadURL: "DCOSWindowsBootstrapDownloadURL", - DcosRepositoryURL: "DcosRepositoryURL", - DcosClusterPackageListID: "DcosClusterPackageListID", - DcosProviderPackageID: "DcosProviderPackageID", - }, EndpointConfig: vlabs.AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "ResourceManagerVMDNSSuffix", }, @@ -481,43 +397,6 @@ func TestConvertAzureEnvironmentSpecConfig(t *testing.T) { t.Errorf("incorrect AlwaysPullWindowsPauseImage, expect: '%t', actual: '%t'", vlabscsSpec.KubernetesSpecConfig.AlwaysPullWindowsPauseImage, csSpec.KubernetesSpecConfig.AlwaysPullWindowsPauseImage) } - //DockerSpecConfig - if csSpec.DockerSpecConfig.DockerComposeDownloadURL != vlabscsSpec.DockerSpecConfig.DockerComposeDownloadURL { - t.Errorf("incorrect DockerComposeDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DockerSpecConfig.DockerComposeDownloadURL, csSpec.DockerSpecConfig.DockerComposeDownloadURL) - } - if csSpec.DockerSpecConfig.DockerEngineRepo != vlabscsSpec.DockerSpecConfig.DockerEngineRepo { - t.Errorf("incorrect DockerEngineRepo, expect: '%s', actual: '%s'", vlabscsSpec.DockerSpecConfig.DockerEngineRepo, csSpec.DockerSpecConfig.DockerEngineRepo) - } - - //DCOSSpecConfig - if csSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL { - t.Errorf("incorrect DCOS188BootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOS188BootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL { - t.Errorf("incorrect DCOS190BootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOS190BootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL { - t.Errorf("incorrect DCOS198BootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOS198BootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL { - t.Errorf("incorrect DCOS110BootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOS110BootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL { - t.Errorf("incorrect DCOS111BootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOS111BootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL != vlabscsSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL { - t.Errorf("incorrect DCOSWindowsBootstrapDownloadURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL, csSpec.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL) - } - if csSpec.DCOSSpecConfig.DcosRepositoryURL != vlabscsSpec.DCOSSpecConfig.DcosRepositoryURL { - t.Errorf("incorrect DcosRepositoryURL, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DcosRepositoryURL, csSpec.DCOSSpecConfig.DcosRepositoryURL) - } - if csSpec.DCOSSpecConfig.DcosClusterPackageListID != vlabscsSpec.DCOSSpecConfig.DcosClusterPackageListID { - t.Errorf("incorrect DcosClusterPackageListID, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DcosClusterPackageListID, csSpec.DCOSSpecConfig.DcosClusterPackageListID) - } - if csSpec.DCOSSpecConfig.DcosProviderPackageID != vlabscsSpec.DCOSSpecConfig.DcosProviderPackageID { - t.Errorf("incorrect DcosProviderPackageID, expect: '%s', actual: '%s'", vlabscsSpec.DCOSSpecConfig.DcosProviderPackageID, csSpec.DCOSSpecConfig.DcosProviderPackageID) - } - //EndpointConfig if csSpec.EndpointConfig.ResourceManagerVMDNSSuffix != vlabscsSpec.EndpointConfig.ResourceManagerVMDNSSuffix { t.Errorf("incorrect ResourceManagerVMDNSSuffix, expect: '%s', actual: '%s'", vlabscsSpec.EndpointConfig.ResourceManagerVMDNSSuffix, csSpec.EndpointConfig.ResourceManagerVMDNSSuffix) @@ -560,23 +439,7 @@ func TestConvertVLabsContainerService(t *testing.T) { Properties: &vlabs.Properties{ ProvisioningState: vlabs.Succeeded, OrchestratorProfile: &vlabs.OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &vlabs.DcosConfig{ - DcosBootstrapURL: "SampleDcosBootstrapURL", - DcosWindowsBootstrapURL: "SampleWindowsDcosBootstrapURL", - Registry: "SampleRegistry", - RegistryPass: "SampleRegistryPass", - RegistryUser: "SampleRegistryUser", - DcosClusterPackageListID: "SampleDcosClusterPackageListID", - DcosProviderPackageID: "SampleDcosProviderPackageID", - BootstrapProfile: &vlabs.BootstrapProfile{ - VMSize: "Standard_Ds1_v1", - OSDiskSizeGB: 256, - OAuthEnabled: true, - StaticIP: "172.0.0.1", - Subnet: "255.255.255.0", - }, - }, + OrchestratorType: Kubernetes, }, WindowsProfile: &vlabs.WindowsProfile{ AdminUsername: "sampleAdminUsername", @@ -704,7 +567,6 @@ func TestConvertVLabsContainerService(t *testing.T) { //Test Vlabs with Kubernetes Orchestrator vlabsCS.Properties.OrchestratorProfile.OrchestratorType = Kubernetes - vlabsCS.Properties.OrchestratorProfile.DcosConfig = nil vlabsCS.Properties.OrchestratorProfile.KubernetesConfig = &vlabs.KubernetesConfig{ Addons: []vlabs.KubernetesAddon{ { @@ -779,23 +641,7 @@ func TestTelemetryEnabled(t *testing.T) { Properties: &vlabs.Properties{ ProvisioningState: vlabs.Succeeded, OrchestratorProfile: &vlabs.OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &vlabs.DcosConfig{ - DcosBootstrapURL: "SampleDcosBootstrapURL", - DcosWindowsBootstrapURL: "SampleWindowsDcosBootstrapURL", - Registry: "SampleRegistry", - RegistryPass: "SampleRegistryPass", - RegistryUser: "SampleRegistryUser", - DcosClusterPackageListID: "SampleDcosClusterPackageListID", - DcosProviderPackageID: "SampleDcosProviderPackageID", - BootstrapProfile: &vlabs.BootstrapProfile{ - VMSize: "Standard_Ds1_v1", - OSDiskSizeGB: 256, - OAuthEnabled: true, - StaticIP: "172.0.0.1", - Subnet: "255.255.255.0", - }, - }, + OrchestratorType: Kubernetes, }, WindowsProfile: &vlabs.WindowsProfile{ AdminUsername: "sampleAdminUsername", diff --git a/pkg/api/defaults-custom-cloud-profile.go b/pkg/api/defaults-custom-cloud-profile.go index fcde02cf7..d87824d04 100644 --- a/pkg/api/defaults-custom-cloud-profile.go +++ b/pkg/api/defaults-custom-cloud-profile.go @@ -177,12 +177,6 @@ func (p *Properties) SetCustomCloudSpec(params AzureCustomCloudSpecParams) error ascc := p.CustomCloudProfile.AzureEnvironmentSpecConfig azureCustomCloudSpec.CloudName = helpers.EnsureString(ascc.CloudName, azureCustomCloudSpec.CloudName) - // DockerSpecConfig - asccDockerSpecConfig := ascc.DockerSpecConfig - azsDockerSpecConfig := azureCustomCloudSpec.DockerSpecConfig - azureCustomCloudSpec.DockerSpecConfig.DockerComposeDownloadURL = helpers.EnsureString(asccDockerSpecConfig.DockerComposeDownloadURL, azsDockerSpecConfig.DockerComposeDownloadURL) - azureCustomCloudSpec.DockerSpecConfig.DockerEngineRepo = helpers.EnsureString(asccDockerSpecConfig.DockerEngineRepo, azsDockerSpecConfig.DockerComposeDownloadURL) - //KubernetesSpecConfig asccKubernetesSpecConfig := ascc.KubernetesSpecConfig azsKubernetesSpecConfig := azureCustomCloudSpec.KubernetesSpecConfig diff --git a/pkg/api/defaults.go b/pkg/api/defaults.go index 2dafc82b0..1a5adc12a 100644 --- a/pkg/api/defaults.go +++ b/pkg/api/defaults.go @@ -17,7 +17,6 @@ import ( "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-12-01/compute" "github.com/Azure/go-autorest/autorest/to" - "github.com/blang/semver" "github.com/pkg/errors" log "github.com/sirupsen/logrus" @@ -53,7 +52,7 @@ func (cs *ContainerService) SetPropertiesDefaults(params PropertiesDefaultsParam // Set master profile defaults if this cluster configuration includes master node(s) if cs.Properties.MasterProfile != nil { - properties.setMasterProfileDefaults(params.IsUpgrade) + properties.setMasterProfileDefaults() } properties.setAgentProfileDefaults(params.IsUpgrade, params.IsScale) @@ -652,28 +651,6 @@ func (cs *ContainerService) setOrchestratorDefaults(isUpgrade, isScale bool) { cs.setComponentsConfig(isUpgrade) // Configure Linux kernel runtime values via sysctl.d cs.setSysctlDConfig() - - case DCOS: - if o.DcosConfig == nil { - o.DcosConfig = &DcosConfig{} - } - dcosSemVer, _ := semver.Make(o.OrchestratorVersion) - dcosBootstrapSemVer, _ := semver.Make(common.DCOSVersion1Dot11Dot0) - if !dcosSemVer.LT(dcosBootstrapSemVer) { - if o.DcosConfig.BootstrapProfile == nil { - o.DcosConfig.BootstrapProfile = &BootstrapProfile{} - } - if len(o.DcosConfig.BootstrapProfile.VMSize) == 0 { - o.DcosConfig.BootstrapProfile.VMSize = "Standard_D2s_v3" - } - } - if !cs.Properties.MasterProfile.IsCustomVNET() { - if cs.Properties.OrchestratorProfile.DcosConfig != nil && cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile != nil { - if !isUpgrade || len(cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP) == 0 { - cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP = DefaultDCOSBootstrapStaticIP - } - } - } } } @@ -688,7 +665,7 @@ func (p *Properties) setExtensionDefaults() { } } -func (p *Properties) setMasterProfileDefaults(isUpgrade bool) { +func (p *Properties) setMasterProfileDefaults() { // set default to VMAS for now if p.MasterProfile.AvailabilityProfile == "" { p.MasterProfile.AvailabilityProfile = AvailabilitySet @@ -709,31 +686,6 @@ func (p *Properties) setMasterProfileDefaults(isUpgrade bool) { } } - if !p.OrchestratorProfile.IsKubernetes() { - p.MasterProfile.Distro = Ubuntu - if !p.MasterProfile.IsCustomVNET() { - if p.OrchestratorProfile.OrchestratorType == DCOS { - p.MasterProfile.Subnet = DefaultDCOSMasterSubnet - // FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists - if !isUpgrade || len(p.MasterProfile.FirstConsecutiveStaticIP) == 0 { - p.MasterProfile.FirstConsecutiveStaticIP = DefaultDCOSFirstConsecutiveStaticIP - } - } else if p.HasWindows() { - p.MasterProfile.Subnet = DefaultSwarmWindowsMasterSubnet - // FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists - if !isUpgrade || len(p.MasterProfile.FirstConsecutiveStaticIP) == 0 { - p.MasterProfile.FirstConsecutiveStaticIP = DefaultSwarmWindowsFirstConsecutiveStaticIP - } - } else { - p.MasterProfile.Subnet = DefaultMasterSubnet - // FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists - if !isUpgrade || len(p.MasterProfile.FirstConsecutiveStaticIP) == 0 { - p.MasterProfile.FirstConsecutiveStaticIP = DefaultFirstConsecutiveStaticIP - } - } - } - } - if p.MasterProfile.HTTPSourceAddressPrefix == "" { p.MasterProfile.HTTPSourceAddressPrefix = "*" } diff --git a/pkg/api/defaults_test.go b/pkg/api/defaults_test.go index a1b4cb895..102e841c5 100644 --- a/pkg/api/defaults_test.go +++ b/pkg/api/defaults_test.go @@ -2341,45 +2341,6 @@ func TestDistroDefaults(t *testing.T) { true, AzurePublicCloud, }, - { - "default_swarm", - OrchestratorProfile{ - OrchestratorType: Swarm, - }, - "", - "", - Ubuntu, - Ubuntu, - false, - false, - AzurePublicCloud, - }, - { - "default_swarmmode", - OrchestratorProfile{ - OrchestratorType: SwarmMode, - }, - "", - "", - Ubuntu, - Ubuntu, - false, - false, - AzurePublicCloud, - }, - { - "default_dcos", - OrchestratorProfile{ - OrchestratorType: DCOS, - }, - "", - "", - Ubuntu, - Ubuntu, - false, - false, - AzurePublicCloud, - }, } for _, test := range tests { @@ -3471,7 +3432,7 @@ func TestSetCertDefaults(t *testing.T) { } cs.setOrchestratorDefaults(false, false) - cs.Properties.setMasterProfileDefaults(false) + cs.Properties.setMasterProfileDefaults() result, ips, err := cs.SetDefaultCerts(DefaultCertParams{ PkiKeySize: helpers.DefaultPkiKeySize, }) @@ -3539,7 +3500,7 @@ func TestSetCertDefaultsVMSS(t *testing.T) { } cs.setOrchestratorDefaults(false, false) - cs.Properties.setMasterProfileDefaults(false) + cs.Properties.setMasterProfileDefaults() result, ips, err := cs.SetDefaultCerts(DefaultCertParams{ PkiKeySize: helpers.DefaultPkiKeySize, }) @@ -3718,11 +3679,6 @@ func TestSetCustomCloudProfileDefaults(t *testing.T) { //Mock AzureEnvironmentSpecConfig customCloudSpec := AzureEnvironmentSpecConfig{ CloudName: "AzuReStackCloud", - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DockerSpecConfig{ - DockerEngineRepo: "DockerEngineRepo", - DockerComposeDownloadURL: "DockerComposeDownloadURL", - }, //KubernetesSpecConfig - Due to Chinese firewall issue, the default containers from google is blocked, use the Chinese local mirror instead KubernetesSpecConfig: KubernetesSpecConfig{ AzureTelemetryPID: "AzureTelemetryPID", @@ -3745,7 +3701,6 @@ func TestSetCustomCloudProfileDefaults(t *testing.T) { WindowsPauseImageURL: "WindowsPauseImageURL", AlwaysPullWindowsPauseImage: true, }, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "ResourceManagerVMDNSSuffix", }, @@ -3787,10 +3742,6 @@ func TestSetCustomCloudProfileDefaults(t *testing.T) { //Mock AzureEnvironmentSpecConfig customCloudSpecP := AzureEnvironmentSpecConfig{ CloudName: "AzureStackCloud", - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DockerSpecConfig{ - DockerEngineRepo: "DockerEngineRepo", - }, //KubernetesSpecConfig - Due to Chinese firewall issue, the default containers from google is blocked, use the Chinese local mirror instead KubernetesSpecConfig: KubernetesSpecConfig{ KubernetesImageBase: "KubernetesImageBase", @@ -3808,7 +3759,6 @@ func TestSetCustomCloudProfileDefaults(t *testing.T) { WindowsPauseImageURL: "WindowsPauseImageURL", AlwaysPullWindowsPauseImage: true, }, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "ResourceManagerVMDNSSuffix", }, @@ -3833,9 +3783,6 @@ func TestSetCustomCloudProfileDefaults(t *testing.T) { t.Errorf("expected no error from SetPropertiesDefaults, instead got %s", err) } - if mockCSCustomP.Properties.CustomCloudProfile.AzureEnvironmentSpecConfig.DockerSpecConfig.DockerComposeDownloadURL != DefaultDockerSpecConfig.DockerComposeDownloadURL { - t.Errorf("setCustomCloudProfileDefaults(): did not set DockerComposeDownloadURL with default Value, got '%s', expected %s", mockCSCustomP.Properties.CustomCloudProfile.AzureEnvironmentSpecConfig.DockerSpecConfig.DockerComposeDownloadURL, DefaultDockerSpecConfig.DockerComposeDownloadURL) - } if mockCSCustomP.Properties.CustomCloudProfile.AzureEnvironmentSpecConfig.KubernetesSpecConfig.ACIConnectorImageBase != DefaultKubernetesSpecConfig.ACIConnectorImageBase { t.Errorf("setCustomCloudProfileDefaults(): did not set ACIConnectorImageBase with default Value, got '%s', expected %s", mockCSCustomP.Properties.CustomCloudProfile.AzureEnvironmentSpecConfig.KubernetesSpecConfig.ACIConnectorImageBase, DefaultKubernetesSpecConfig.ACIConnectorImageBase) } diff --git a/pkg/api/mocks.go b/pkg/api/mocks.go index ac60bb013..b618ebe70 100644 --- a/pkg/api/mocks.go +++ b/pkg/api/mocks.go @@ -216,11 +216,8 @@ func GetMockPropertiesWithCustomCloudProfile(name string, hasCustomCloudProfile, //azureStackCloudSpec is the default configurations for azure stack with public Azure. azureStackCloudSpec := AzureEnvironmentSpecConfig{ CloudName: AzureStackCloud, - //DockerSpecConfig specify the docker engine download repo - DockerSpecConfig: DefaultDockerSpecConfig, //KubernetesSpecConfig is the default kubernetes container image url. KubernetesSpecConfig: DefaultKubernetesSpecConfig, - DCOSSpecConfig: DefaultDCOSSpecConfig, EndpointConfig: AzureEndpointConfig{ ResourceManagerVMDNSSuffix: "", }, diff --git a/pkg/api/orchestrators.go b/pkg/api/orchestrators.go index 91500c4d6..a6da37b10 100644 --- a/pkg/api/orchestrators.go +++ b/pkg/api/orchestrators.go @@ -22,21 +22,12 @@ var versionsMapAzureStack map[string][]string func init() { funcmap = map[string]orchestratorsFunc{ Kubernetes: kubernetesInfo, - DCOS: dcosInfo, - Swarm: swarmInfo, - SwarmMode: dockerceInfo, } versionsMap = map[string][]string{ Kubernetes: common.GetAllSupportedKubernetesVersions(true, false, false), - DCOS: common.GetAllSupportedDCOSVersions(), - Swarm: common.GetAllSupportedSwarmVersions(), - SwarmMode: common.GetAllSupportedDockerCEVersions(), } versionsMapAzureStack = map[string][]string{ Kubernetes: common.GetAllSupportedKubernetesVersions(true, false, true), - DCOS: common.GetAllSupportedDCOSVersions(), - Swarm: common.GetAllSupportedSwarmVersions(), - SwarmMode: common.GetAllSupportedDockerCEVersions(), } } @@ -44,12 +35,6 @@ func validate(orchestrator, version string) (string, error) { switch { case strings.EqualFold(orchestrator, Kubernetes): return Kubernetes, nil - case strings.EqualFold(orchestrator, DCOS): - return DCOS, nil - case strings.EqualFold(orchestrator, Swarm): - return Swarm, nil - case strings.EqualFold(orchestrator, SwarmMode): - return SwarmMode, nil case orchestrator == "": if version != "" { return "", errors.Errorf("Must specify orchestrator for version '%s'", version) @@ -122,7 +107,7 @@ func GetOrchestratorVersionProfile(orch *OrchestratorProfile, hasWindows bool, i return nil, errors.New("Missing Orchestrator Version") } switch orch.OrchestratorType { - case Kubernetes, DCOS: + case Kubernetes: arr, err := funcmap[orch.OrchestratorType](orch, hasWindows, isAzureStackCloud) if err != nil { return nil, err @@ -218,102 +203,3 @@ func getKubernetesAvailableUpgradeVersions(orchestratorVersion string, supported return []string{}, nil } - -func dcosInfo(csOrch *OrchestratorProfile, hasWindows bool, isAzureStackCloud bool) ([]*OrchestratorVersionProfile, error) { - orchs := []*OrchestratorVersionProfile{} - if csOrch.OrchestratorVersion == "" { - // get info for all supported versions - for _, ver := range common.AllDCOSSupportedVersions { - upgrades := dcosUpgrades(&OrchestratorProfile{OrchestratorVersion: ver}) - orchs = append(orchs, - &OrchestratorVersionProfile{ - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: ver, - }, - Default: ver == common.DCOSDefaultVersion, - Upgrades: upgrades, - }) - } - } else { - if !isVersionSupported(csOrch, false) { - return nil, errors.Errorf("DCOS version %s is not supported", csOrch.OrchestratorVersion) - } - - // get info for the specified version - upgrades := dcosUpgrades(csOrch) - orchs = append(orchs, - &OrchestratorVersionProfile{ - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: csOrch.OrchestratorVersion, - }, - Default: csOrch.OrchestratorVersion == common.DCOSDefaultVersion, - Upgrades: upgrades, - }) - } - return orchs, nil -} - -func dcosUpgrades(csOrch *OrchestratorProfile) []*OrchestratorProfile { - ret := []*OrchestratorProfile{} - - if csOrch.OrchestratorVersion == common.DCOSVersion1Dot11Dot0 { - ret = append(ret, &OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: common.DCOSVersion1Dot11Dot2, - }) - } - return ret -} - -func swarmInfo(csOrch *OrchestratorProfile, hasWindows bool, isAzureStackCloud bool) ([]*OrchestratorVersionProfile, error) { - if csOrch.OrchestratorVersion == "" { - return []*OrchestratorVersionProfile{ - { - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: Swarm, - OrchestratorVersion: SwarmVersion, - }, - }, - }, nil - } - - if !isVersionSupported(csOrch, false) { - return nil, errors.Errorf("Swarm version %s is not supported", csOrch.OrchestratorVersion) - } - return []*OrchestratorVersionProfile{ - { - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: Swarm, - OrchestratorVersion: csOrch.OrchestratorVersion, - }, - }, - }, nil -} - -func dockerceInfo(csOrch *OrchestratorProfile, hasWindows bool, isAzureStackCloud bool) ([]*OrchestratorVersionProfile, error) { - - if csOrch.OrchestratorVersion == "" { - return []*OrchestratorVersionProfile{ - { - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: SwarmMode, - OrchestratorVersion: DockerCEVersion, - }, - }, - }, nil - } - - if !isVersionSupported(csOrch, false) { - return nil, errors.Errorf("Docker CE version %s is not supported", csOrch.OrchestratorVersion) - } - return []*OrchestratorVersionProfile{ - { - OrchestratorProfile: OrchestratorProfile{ - OrchestratorType: SwarmMode, - OrchestratorVersion: csOrch.OrchestratorVersion, - }, - }, - }, nil -} diff --git a/pkg/api/orchestrators_test.go b/pkg/api/orchestrators_test.go index 245cf4682..20e74fc29 100644 --- a/pkg/api/orchestrators_test.go +++ b/pkg/api/orchestrators_test.go @@ -113,91 +113,6 @@ func TestKubernetesInfo(t *testing.T) { } -func TestDcosInfo(t *testing.T) { - RegisterTestingT(t) - invalid := []string{ - "invalid number", - "invalid.number", - "a4.b7.c3", - "31.29.", - ".17.02", - "43.156.89.", - "1.2.a"} - - for _, v := range invalid { - csOrch := &OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: v, - } - - _, e := dcosInfo(csOrch, false, false) - Expect(e).NotTo(BeNil()) - } - - // test good value - csOrch := &OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: common.DCOSDefaultVersion, - } - - _, e := dcosInfo(csOrch, false, false) - Expect(e).To(BeNil()) -} - -func TestSwarmInfo(t *testing.T) { - RegisterTestingT(t) - invalid := []string{ - "swarm:1.1.1", - "swarm:1.1.2", - } - - for _, v := range invalid { - csOrch := &OrchestratorProfile{ - OrchestratorType: Swarm, - OrchestratorVersion: v, - } - - _, e := swarmInfo(csOrch, false, false) - Expect(e).NotTo(BeNil()) - } - - // test good value - csOrch := &OrchestratorProfile{ - OrchestratorType: Swarm, - OrchestratorVersion: common.SwarmVersion, - } - - _, e := swarmInfo(csOrch, false, false) - Expect(e).To(BeNil()) -} - -func TestDockerceInfoInfo(t *testing.T) { - RegisterTestingT(t) - invalid := []string{ - "17.02.1", - "43.156.89", - } - - for _, v := range invalid { - csOrch := &OrchestratorProfile{ - OrchestratorType: SwarmMode, - OrchestratorVersion: v, - } - - _, e := dockerceInfo(csOrch, false, false) - Expect(e).NotTo(BeNil()) - } - - // test good value - csOrch := &OrchestratorProfile{ - OrchestratorType: SwarmMode, - OrchestratorVersion: common.DockerCEVersion, - } - - _, e := dockerceInfo(csOrch, false, false) - Expect(e).To(BeNil()) -} - func TestGetKubernetesAvailableUpgradeVersions(t *testing.T) { RegisterTestingT(t) cases := []struct { diff --git a/pkg/api/strictjson_test.go b/pkg/api/strictjson_test.go index 887d17742..db5893e76 100644 --- a/pkg/api/strictjson_test.go +++ b/pkg/api/strictjson_test.go @@ -199,7 +199,7 @@ const jsonWithTypo = ` "apiVersion": "ignored", "properties": { "orchestratorProfile": { - "orchestratorType": "DCOS" + "orchestratorType": "Kubernetes" }, "masterProfile": { "count": 1, diff --git a/pkg/api/types.go b/pkg/api/types.go index af21ad06d..dd49a61e0 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -275,7 +275,6 @@ type OrchestratorProfile struct { OrchestratorType string `json:"orchestratorType"` OrchestratorVersion string `json:"orchestratorVersion"` KubernetesConfig *KubernetesConfig `json:"kubernetesConfig,omitempty"` - DcosConfig *DcosConfig `json:"dcosConfig,omitempty"` } // OrchestratorVersionProfile contains information of a supported orchestrator version: @@ -547,29 +546,6 @@ type BootstrapProfile struct { Subnet string `json:"subnet,omitempty"` } -// DcosConfig Configuration for DC/OS -type DcosConfig struct { - DcosBootstrapURL string `json:"dcosBootstrapURL,omitempty"` - DcosWindowsBootstrapURL string `json:"dcosWindowsBootstrapURL,omitempty"` - Registry string `json:"registry,omitempty"` - RegistryUser string `json:"registryUser,omitempty"` - RegistryPass string `json:"registryPassword,omitempty"` - DcosRepositoryURL string `json:"dcosRepositoryURL,omitempty"` // For CI use, you need to specify - DcosClusterPackageListID string `json:"dcosClusterPackageListID,omitempty"` // all three of these items - DcosProviderPackageID string `json:"dcosProviderPackageID,omitempty"` // repo url is the location of the build, - BootstrapProfile *BootstrapProfile `json:"bootstrapProfile,omitempty"` -} - -// HasPrivateRegistry returns if a private registry is specified -func (d *DcosConfig) HasPrivateRegistry() bool { - return len(d.Registry) > 0 -} - -// HasBootstrap returns if a bootstrap profile is specified -func (d *DcosConfig) HasBootstrap() bool { - return d.BootstrapProfile != nil -} - // MasterProfile represents the definition of the master cluster type MasterProfile struct { Count int `json:"count"` @@ -1917,28 +1893,11 @@ func (l *LinuxProfile) HasCustomNodesDNS() bool { return false } -// IsSwarmMode returns true if this template is for Swarm Mode orchestrator -func (o *OrchestratorProfile) IsSwarmMode() bool { - return o.OrchestratorType == SwarmMode -} - // IsKubernetes returns true if this template is for Kubernetes orchestrator func (o *OrchestratorProfile) IsKubernetes() bool { return o.OrchestratorType == Kubernetes } -// IsDCOS returns true if this template is for DCOS orchestrator -func (o *OrchestratorProfile) IsDCOS() bool { - return o.OrchestratorType == DCOS -} - -// IsDCOS19 returns true if this is a DCOS 1.9 orchestrator using the latest version -func (o *OrchestratorProfile) IsDCOS19() bool { - return o.OrchestratorType == DCOS && - (o.OrchestratorVersion == common.DCOSVersion1Dot9Dot0 || - o.OrchestratorVersion == common.DCOSVersion1Dot9Dot8) -} - // IsAzureCNI returns true if Azure CNI network plugin is enabled func (o *OrchestratorProfile) IsAzureCNI() bool { if o.KubernetesConfig != nil { diff --git a/pkg/api/types_test.go b/pkg/api/types_test.go index 53cdb533b..abbb4a78e 100644 --- a/pkg/api/types_test.go +++ b/pkg/api/types_test.go @@ -3244,14 +3244,6 @@ func TestRequireRouteTable(t *testing.T) { p Properties expected bool }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - }, - }, - expected: false, - }, { p: Properties{ OrchestratorProfile: &OrchestratorProfile{ @@ -3310,14 +3302,6 @@ func TestIsPrivateCluster(t *testing.T) { p Properties expected bool }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - }, - }, - expected: false, - }, { p: Properties{ OrchestratorProfile: &OrchestratorProfile{ @@ -3406,14 +3390,6 @@ func TestIsHostsConfigAgentEnabled(t *testing.T) { p Properties expected bool }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - }, - }, - expected: false, - }, { p: Properties{ OrchestratorProfile: &OrchestratorProfile{ @@ -3471,106 +3447,22 @@ func TestIsHostsConfigAgentEnabled(t *testing.T) { func TestOrchestrator(t *testing.T) { cases := []struct { p Properties - expectedIsDCOS bool expectedIsKubernetes bool - expectedIsSwarmMode bool }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - }, - }, - expectedIsDCOS: true, - expectedIsKubernetes: false, - expectedIsSwarmMode: false, - }, { p: Properties{ OrchestratorProfile: &OrchestratorProfile{ OrchestratorType: Kubernetes, }, }, - expectedIsDCOS: false, expectedIsKubernetes: true, - expectedIsSwarmMode: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: SwarmMode, - }, - }, - expectedIsDCOS: false, - expectedIsKubernetes: false, - expectedIsSwarmMode: true, }, } for _, c := range cases { - if c.expectedIsDCOS != c.p.OrchestratorProfile.IsDCOS() { - t.Fatalf("Expected IsDCOS() to be %t with OrchestratorType=%s", c.expectedIsDCOS, c.p.OrchestratorProfile.OrchestratorType) - } if c.expectedIsKubernetes != c.p.OrchestratorProfile.IsKubernetes() { t.Fatalf("Expected IsKubernetes() to be %t with OrchestratorType=%s", c.expectedIsKubernetes, c.p.OrchestratorProfile.OrchestratorType) } - if c.expectedIsSwarmMode != c.p.OrchestratorProfile.IsSwarmMode() { - t.Fatalf("Expected IsSwarmMode() to be %t with OrchestratorType=%s", c.expectedIsSwarmMode, c.p.OrchestratorProfile.OrchestratorType) - } - } -} - -func TestIsDCOS19(t *testing.T) { - cases := []struct { - p Properties - expectedIsDCOS19 bool - }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: common.DCOSVersion1Dot9Dot8, - }, - }, - expectedIsDCOS19: true, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - OrchestratorVersion: "1.9.7", - }, - }, - expectedIsDCOS19: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - }, - }, - expectedIsDCOS19: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{}, - }, - expectedIsDCOS19: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: Kubernetes, - }, - }, - expectedIsDCOS19: false, - }, - } - - for _, c := range cases { - if c.expectedIsDCOS19 != c.p.OrchestratorProfile.IsDCOS19() { - t.Fatalf("Expected IsDCOS19() to be %t got %t", c.expectedIsDCOS19, c.p.OrchestratorProfile.IsDCOS19()) - } } } @@ -7082,85 +6974,6 @@ func TestAADAdminGroupIDMethods(t *testing.T) { } } -func TestDcosConfigHasPrivateRegistry(t *testing.T) { - cases := []struct { - p Properties - expected bool - }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &DcosConfig{ - Registry: "my-custom-registry", - }, - }, - }, - expected: true, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &DcosConfig{ - Registry: "", - }, - }, - }, - expected: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &DcosConfig{}, - }, - }, - expected: false, - }, - } - - for _, c := range cases { - if c.p.OrchestratorProfile.DcosConfig.HasPrivateRegistry() != c.expected { - t.Fatalf("expected HasPrivateRegistry() to return %t but instead got %t", c.expected, c.p.OrchestratorProfile.DcosConfig.HasPrivateRegistry()) - } - } -} - -func TestDcosConfigHasBootstrap(t *testing.T) { - cases := []struct { - p Properties - expected bool - }{ - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &DcosConfig{}, - }, - }, - expected: false, - }, - { - p: Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: DCOS, - DcosConfig: &DcosConfig{ - BootstrapProfile: &BootstrapProfile{}, - }, - }, - }, - expected: true, - }, - } - - for _, c := range cases { - if c.p.OrchestratorProfile.DcosConfig.HasBootstrap() != c.expected { - t.Fatalf("expected HasBootstrap() to return %t but instead got %t", c.expected, c.p.OrchestratorProfile.DcosConfig.HasBootstrap()) - } - } -} - func TestKubernetesAddonIsEnabled(t *testing.T) { cases := []struct { a *KubernetesAddon diff --git a/pkg/api/vlabs/azenvtypes.go b/pkg/api/vlabs/azenvtypes.go index 85b302fc8..e60aeb533 100644 --- a/pkg/api/vlabs/azenvtypes.go +++ b/pkg/api/vlabs/azenvtypes.go @@ -6,32 +6,11 @@ package vlabs //AzureEnvironmentSpecConfig is the overall configuration differences in different cloud environments. type AzureEnvironmentSpecConfig struct { CloudName string `json:"cloudName,omitempty"` - DockerSpecConfig DockerSpecConfig `json:"dockerSpecConfig,omitempty"` KubernetesSpecConfig KubernetesSpecConfig `json:"kubernetesSpecConfig,omitempty"` - DCOSSpecConfig DCOSSpecConfig `json:"-"` EndpointConfig AzureEndpointConfig `json:"endpointConfig,omitempty"` OSImageConfig map[Distro]AzureOSImageConfig `json:"osImageConfig,omitempty"` } -//DockerSpecConfig is the configurations of docker -type DockerSpecConfig struct { - DockerEngineRepo string `json:"dockerEngineRepo,omitempty"` - DockerComposeDownloadURL string `json:"dockerComposeDownloadURL,omitempty"` -} - -//DCOSSpecConfig is the configurations of DCOS -type DCOSSpecConfig struct { - DCOS188BootstrapDownloadURL string - DCOS190BootstrapDownloadURL string - DCOS198BootstrapDownloadURL string - DCOS110BootstrapDownloadURL string - DCOS111BootstrapDownloadURL string - DCOSWindowsBootstrapDownloadURL string - DcosRepositoryURL string // For custom install, for example CI, need these three addributes - DcosClusterPackageListID string // the id of the package list file - DcosProviderPackageID string // the id of the dcos-provider-xxx package -} - //KubernetesSpecConfig is the kubernetes container images used. type KubernetesSpecConfig struct { AzureTelemetryPID string `json:"azureTelemetryPID,omitempty"` diff --git a/pkg/api/vlabs/const.go b/pkg/api/vlabs/const.go index 500f79181..0c5a1274e 100644 --- a/pkg/api/vlabs/const.go +++ b/pkg/api/vlabs/const.go @@ -10,14 +10,8 @@ const ( // the orchestrators supported by vlabs const ( - // DCOS is the string constant for DCOS orchestrator type and defaults to DCOS188 - DCOS string = "DCOS" - // Swarm is the string constant for the Swarm orchestrator type - Swarm string = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes string = "Kubernetes" - // SwarmMode is the string constant for the Swarm Mode orchestrator type - SwarmMode string = "SwarmMode" ) // the OSTypes supported by vlabs diff --git a/pkg/api/vlabs/types.go b/pkg/api/vlabs/types.go index 29033e3e8..783ddf2ea 100644 --- a/pkg/api/vlabs/types.go +++ b/pkg/api/vlabs/types.go @@ -226,7 +226,6 @@ type OrchestratorProfile struct { OrchestratorRelease string `json:"orchestratorRelease,omitempty"` OrchestratorVersion string `json:"orchestratorVersion,omitempty"` KubernetesConfig *KubernetesConfig `json:"kubernetesConfig,omitempty"` - DcosConfig *DcosConfig `json:"dcosConfig,omitempty"` } // UnmarshalJSON unmarshal json using the default behavior @@ -242,14 +241,8 @@ func (o *OrchestratorProfile) UnmarshalJSON(b []byte) error { // Unmarshal OrchestratorType, format it as well orchestratorType := o.OrchestratorType switch { - case strings.EqualFold(orchestratorType, DCOS): - o.OrchestratorType = DCOS - case strings.EqualFold(orchestratorType, Swarm): - o.OrchestratorType = Swarm case strings.EqualFold(orchestratorType, Kubernetes): o.OrchestratorType = Kubernetes - case strings.EqualFold(orchestratorType, SwarmMode): - o.OrchestratorType = SwarmMode default: return errors.Errorf("OrchestratorType has unknown orchestrator: %s", orchestratorType) } @@ -426,19 +419,6 @@ type BootstrapProfile struct { Subnet string `json:"subnet,omitempty"` } -// DcosConfig Configuration for DC/OS -type DcosConfig struct { - DcosBootstrapURL string `json:"dcosBootstrapURL,omitempty"` - DcosWindowsBootstrapURL string `json:"dcosWindowsBootstrapURL,omitempty"` - Registry string `json:"registry,omitempty"` - RegistryUser string `json:"registryUser,omitempty"` - RegistryPass string `json:"registryPassword,omitempty"` - DcosRepositoryURL string `json:"dcosRepositoryURL,omitempty"` // For CI use, you need to specify - DcosClusterPackageListID string `json:"dcosClusterPackageListID,omitempty"` // all three of these items - DcosProviderPackageID string `json:"dcosProviderPackageID,omitempty"` // repo url is the location of the build, - BootstrapProfile *BootstrapProfile `json:"bootstrapProfile,omitempty"` -} - // MasterProfile represents the definition of the master cluster type MasterProfile struct { Count int `json:"count" validate:"required,eq=1|eq=3|eq=5"` @@ -979,11 +959,6 @@ func (w *WindowsProfile) IsCSIProxyEnabled() bool { return common.DefaultEnableCSIProxyWindows } -// IsSwarmMode returns true if this template is for Swarm Mode orchestrator -func (o *OrchestratorProfile) IsSwarmMode() bool { - return o.OrchestratorType == SwarmMode -} - // RequiresDocker returns if the kubernetes settings require docker binary to be installed. func (k *KubernetesConfig) RequiresDocker() bool { runtime := strings.ToLower(k.ContainerRuntime) diff --git a/pkg/api/vlabs/types_test.go b/pkg/api/vlabs/types_test.go index f99d0f696..3adf25319 100644 --- a/pkg/api/vlabs/types_test.go +++ b/pkg/api/vlabs/types_test.go @@ -21,25 +21,20 @@ func TestOrchestratorProfile(t *testing.T) { OrchestratorProfileText = `{ "orchestratorType": "Swarm" }` op = &OrchestratorProfile{} - if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e != nil { - t.Fatalf("unexpectedly detected unmarshal failure for OrchestratorProfile, %+v", e) + if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e == nil { + t.Fatalf("expected unmarshal failure for OrchestratorProfile when passing an invalid orchestratorType") } OrchestratorProfileText = `{ "orchestratorType": "SwarmMode" }` op = &OrchestratorProfile{} - if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e != nil { - t.Fatalf("unexpectedly detected unmarshal failure for OrchestratorProfile, %+v", e) - } - - if !op.IsSwarmMode() { - t.Fatalf("unexpectedly detected OrchestratorProfile.Type != DockerCE after unmarshal") - + if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e == nil { + t.Fatalf("expected unmarshal failure for OrchestratorProfile when passing an invalid orchestratorType") } OrchestratorProfileText = `{ "orchestratorType": "DCOS" }` op = &OrchestratorProfile{} - if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e != nil { - t.Fatalf("unexpectedly detected unmarshal failure for OrchestratorProfile, %+v", e) + if e := json.Unmarshal([]byte(OrchestratorProfileText), op); e == nil { + t.Fatalf("expected unmarshal failure for OrchestratorProfile when passing an invalid orchestratorType") } OrchestratorProfileText = `{ "orchestratorType": "Kubernetes" }` diff --git a/pkg/api/vlabs/validate.go b/pkg/api/vlabs/validate.go index ec37e2d44..7cd69a325 100644 --- a/pkg/api/vlabs/validate.go +++ b/pkg/api/vlabs/validate.go @@ -188,27 +188,6 @@ func (a *Properties) ValidateOrchestratorProfile(isUpdate bool) error { // On updates we only need to make sure there is a supported patch version for the minor version if !isUpdate { switch o.OrchestratorType { - case DCOS: - version := common.RationalizeReleaseAndVersion( - o.OrchestratorType, - o.OrchestratorRelease, - o.OrchestratorVersion, - isUpdate, - false, - false) - if version == "" { - return errors.Errorf("the following OrchestratorProfile configuration is not supported: OrchestratorType: %s, OrchestratorRelease: %s, OrchestratorVersion: %s. Please check supported Release or Version for this build of aks-engine", o.OrchestratorType, o.OrchestratorRelease, o.OrchestratorVersion) - } - if o.DcosConfig != nil && o.DcosConfig.BootstrapProfile != nil { - if len(o.DcosConfig.BootstrapProfile.StaticIP) > 0 { - if net.ParseIP(o.DcosConfig.BootstrapProfile.StaticIP) == nil { - return errors.Errorf("DcosConfig.BootstrapProfile.StaticIP '%s' is an invalid IP address", - o.DcosConfig.BootstrapProfile.StaticIP) - } - } - } - case Swarm: - case SwarmMode: case Kubernetes: version := common.RationalizeReleaseAndVersion( o.OrchestratorType, @@ -383,7 +362,7 @@ func (a *Properties) ValidateOrchestratorProfile(isUpdate bool) error { } } else { switch o.OrchestratorType { - case DCOS, Kubernetes: + case Kubernetes: version := common.RationalizeReleaseAndVersion( o.OrchestratorType, @@ -414,10 +393,6 @@ func (a *Properties) ValidateOrchestratorProfile(isUpdate bool) error { return errors.Errorf("KubernetesConfig can be specified only when OrchestratorType is Kubernetes") } - if o.OrchestratorType != DCOS && o.DcosConfig != nil && (*o.DcosConfig != DcosConfig{}) { - return errors.Errorf("DcosConfig can be specified only when OrchestratorType is DCOS") - } - return a.validateContainerRuntime(isUpdate) } @@ -1059,10 +1034,7 @@ func (a *AgentPoolProfile) validateStorageProfile(orchestratorType string) error /* this switch statement is left to protect newly added orchestrators until they support Managed Disks*/ if a.StorageProfile == ManagedDisks { switch orchestratorType { - case DCOS: - case Swarm: case Kubernetes: - case SwarmMode: default: return errors.Errorf("HA volumes are currently unsupported for Orchestrator %s", orchestratorType) } @@ -1072,9 +1044,6 @@ func (a *AgentPoolProfile) validateStorageProfile(orchestratorType string) error switch orchestratorType { case Kubernetes: break - case DCOS: - case Swarm: - case SwarmMode: default: return errors.Errorf("Ephemeral volumes are currently unsupported for Orchestrator %s", orchestratorType) } @@ -1086,7 +1055,6 @@ func (a *AgentPoolProfile) validateStorageProfile(orchestratorType string) error func (a *AgentPoolProfile) validateCustomNodeLabels(orchestratorType string) error { if len(a.CustomNodeLabels) > 0 { switch orchestratorType { - case DCOS: case Kubernetes: for k, v := range a.CustomNodeLabels { if e := validateKubernetesLabelKey(k); e != nil { @@ -1097,7 +1065,7 @@ func (a *AgentPoolProfile) validateCustomNodeLabels(orchestratorType string) err } } default: - return errors.New("Agent CustomNodeLabels are only supported for DCOS and Kubernetes") + return errors.New("Agent CustomNodeLabels are only supported for Kubernetes") } } return nil @@ -1163,9 +1131,6 @@ func (a *Properties) validateWindowsProfile(isUpdate bool) error { // I am leaving this in because I cannot get a clear answer on if we need to continue supporting Swarm + Windows and // RationalizeReleaseAndVersion does not properly handle Swarm. switch o.OrchestratorType { - case DCOS: - case Swarm: - case SwarmMode: case Kubernetes: version = common.RationalizeReleaseAndVersion( o.OrchestratorType, diff --git a/pkg/api/vlabs/validate_test.go b/pkg/api/vlabs/validate_test.go index 071d04278..181ab6bc2 100644 --- a/pkg/api/vlabs/validate_test.go +++ b/pkg/api/vlabs/validate_test.go @@ -46,13 +46,13 @@ func Test_OrchestratorProfile_Validate(t *testing.T) { "should error when KubernetesConfig populated for non-Kubernetes OrchestratorType": { properties: &Properties{ OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: "DCOS", + OrchestratorType: "Bogus", KubernetesConfig: &KubernetesConfig{ ClusterSubnet: "10.0.0.0/16", }, }, }, - expectedError: "KubernetesConfig can be specified only when OrchestratorType is Kubernetes", + expectedError: "OrchestratorProfile has unknown orchestrator: Bogus", }, "should error when KubernetesConfig has invalid etcd version": { properties: &Properties{ @@ -206,55 +206,9 @@ func Test_OrchestratorProfile_Validate(t *testing.T) { properties: &Properties{ OrchestratorProfile: &OrchestratorProfile{ OrchestratorType: "Kubernetes", - DcosConfig: &DcosConfig{}, }, }, }, - "should error when DcosConfig orchestrator has invalid configuration": { - properties: &Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: "DCOS", - OrchestratorVersion: "1.12.0", - }, - }, - expectedError: "the following OrchestratorProfile configuration is not supported: OrchestratorType: DCOS, OrchestratorRelease: , OrchestratorVersion: 1.12.0. Please check supported Release or Version for this build of aks-engine", - }, - "should error when DcosConfig orchestrator configuration has invalid static IP": { - properties: &Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: "DCOS", - DcosConfig: &DcosConfig{ - BootstrapProfile: &BootstrapProfile{ - StaticIP: "0.0.0.0.0.0", - }, - }, - }, - }, - expectedError: "DcosConfig.BootstrapProfile.StaticIP '0.0.0.0.0.0' is an invalid IP address", - }, - "should error when DcosConfig populated for non-Kubernetes OrchestratorType 1": { - properties: &Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: "Kubernetes", - DcosConfig: &DcosConfig{ - DcosWindowsBootstrapURL: "http://www.microsoft.com", - }, - }, - }, - expectedError: "DcosConfig can be specified only when OrchestratorType is DCOS", - }, - "should error when DcosConfig populated for non-Kubernetes OrchestratorType 2": { - properties: &Properties{ - OrchestratorProfile: &OrchestratorProfile{ - OrchestratorType: "Kubernetes", - DcosConfig: &DcosConfig{ - DcosWindowsBootstrapURL: "http://www.microsoft.com", - DcosBootstrapURL: "http://www.microsoft.com", - }, - }, - }, - expectedError: "DcosConfig can be specified only when OrchestratorType is DCOS", - }, "kubernetes should have failed on old patch version": { properties: &Properties{ OrchestratorProfile: &OrchestratorProfile{ @@ -1649,7 +1603,7 @@ func Test_AadProfile_Validate(t *testing.T) { t.Parallel() cs := getK8sDefaultContainerService(false) cs.Properties.OrchestratorProfile = &OrchestratorProfile{ - OrchestratorType: DCOS, + OrchestratorType: "DCOS", } cs.Properties.AADProfile = &AADProfile{ ClientAppID: "92444486-5bc3-4291-818b-d53ae480991b", @@ -4256,15 +4210,15 @@ func TestValidateProperties_CustomNodeLabels(t *testing.T) { } }) - t.Run("Should not support orchestratorTypes other than Kubernetes/DCOS", func(t *testing.T) { + t.Run("Should not support orchestratorTypes other than Kubernetes", func(t *testing.T) { t.Parallel() cs := getK8sDefaultContainerService(false) - cs.Properties.OrchestratorProfile.OrchestratorType = SwarmMode + cs.Properties.OrchestratorProfile.OrchestratorType = "Mesos" agentPoolProfiles := cs.Properties.AgentPoolProfiles agentPoolProfiles[0].CustomNodeLabels = map[string]string{ "foo": "bar", } - expectedMsg := "Agent CustomNodeLabels are only supported for DCOS and Kubernetes" + expectedMsg := "Agent CustomNodeLabels are only supported for Kubernetes" if err := cs.Properties.validateAgentPoolProfiles(true); err.Error() != expectedMsg { t.Errorf("expected error with message : %s, but got %s", expectedMsg, err.Error()) } @@ -5446,7 +5400,7 @@ func TestValidateAzureStackSupport(t *testing.T) { break } } - cs.Properties.OrchestratorProfile.OrchestratorVersion = "1.16.11" + cs.Properties.OrchestratorProfile.OrchestratorVersion = "1.16.13" if err := cs.Validate(false); !helpers.EqualError(err, test.expectedErr) { t.Logf("scenario %q", test.name) t.Logf("FIXME: expected error: %v, got: %v", test.expectedErr, err) diff --git a/pkg/engine/const.go b/pkg/engine/const.go index d597a10da..27d860c01 100644 --- a/pkg/engine/const.go +++ b/pkg/engine/const.go @@ -4,16 +4,8 @@ package engine const ( - // Mesos is the string constant for MESOS orchestrator type - Mesos string = "Mesos" - // DCOS is the string constant for DCOS orchestrator type and defaults to DCOS188 - DCOS string = "DCOS" - // Swarm is the string constant for the Swarm orchestrator type - Swarm string = "Swarm" // Kubernetes is the string constant for the Kubernetes orchestrator type Kubernetes string = "Kubernetes" - // SwarmMode is the string constant for the Swarm Mode orchestrator type - SwarmMode string = "SwarmMode" ) const ( @@ -135,60 +127,14 @@ const ( ) const ( - dcosCustomData188 = "dcos/dcoscustomdata188.t" - dcosCustomData190 = "dcos/dcoscustomdata190.t" - dcosCustomData198 = "dcos/dcoscustomdata198.t" - dcosCustomData110 = "dcos/dcoscustomdata110.t" - dcosProvision = "dcos/dcosprovision.sh" - dcosWindowsProvision = "dcos/dcosWindowsProvision.ps1" - dcosProvisionSource = "dcos/dcosprovisionsource.sh" - dcos2Provision = "dcos/bstrap/dcosprovision.sh" - dcos2BootstrapProvision = "dcos/bstrap/bootstrapprovision.sh" - dcos2CustomData1110 = "dcos/bstrap/dcos1.11.0.customdata.t" - dcos2CustomData1112 = "dcos/bstrap/dcos1.11.2.customdata.t" -) - -const ( - swarmProvision = "swarm/configure-swarm-cluster.sh" - swarmWindowsProvision = "swarm/Install-ContainerHost-And-Join-Swarm.ps1" - swarmModeProvision = "swarm/configure-swarmmode-cluster.sh" - swarmModeWindowsProvision = "swarm/Join-SwarmMode-cluster.ps1" -) - -const ( - agentOutputs = "agentoutputs.t" - agentParams = "agentparams.t" - armParameters = "k8s/armparameters.t" - dcosAgentResourcesVMAS = "dcos/dcosagentresourcesvmas.t" - dcosWindowsAgentResourcesVMAS = "dcos/dcosWindowsAgentResourcesVmas.t" - dcosAgentResourcesVMSS = "dcos/dcosagentresourcesvmss.t" - dcosWindowsAgentResourcesVMSS = "dcos/dcosWindowsAgentResourcesVmss.t" - dcosAgentVars = "dcos/dcosagentvars.t" - dcosBaseFile = "dcos/dcosbase.t" - dcosParams = "dcos/dcosparams.t" - dcosMasterResources = "dcos/dcosmasterresources.t" - dcosMasterVars = "dcos/dcosmastervars.t" - dcos2BaseFile = "dcos/bstrap/dcosbase.t" - dcos2BootstrapVars = "dcos/bstrap/bootstrapvars.t" - dcos2BootstrapParams = "dcos/bstrap/bootstrapparams.t" - dcos2BootstrapResources = "dcos/bstrap/bootstrapresources.t" - dcos2BootstrapCustomdata = "dcos/bstrap/bootstrapcustomdata.yml" - dcos2MasterVars = "dcos/bstrap/dcosmastervars.t" - dcos2MasterResources = "dcos/bstrap/dcosmasterresources.t" - iaasOutputs = "iaasoutputs.t" - kubernetesParams = "k8s/kubernetesparams.t" - masterOutputs = "masteroutputs.t" - masterParams = "masterparams.t" - swarmBaseFile = "swarm/swarmbase.t" - swarmParams = "swarm/swarmparams.t" - swarmAgentResourcesVMAS = "swarm/swarmagentresourcesvmas.t" - swarmAgentResourcesVMSS = "swarm/swarmagentresourcesvmss.t" - swarmAgentVars = "swarm/swarmagentvars.t" - swarmMasterResources = "swarm/swarmmasterresources.t" - swarmMasterVars = "swarm/swarmmastervars.t" - swarmWinAgentResourcesVMAS = "swarm/swarmwinagentresourcesvmas.t" - swarmWinAgentResourcesVMSS = "swarm/swarmwinagentresourcesvmss.t" - windowsParams = "windowsparams.t" + agentOutputs = "agentoutputs.t" + agentParams = "agentparams.t" + armParameters = "k8s/armparameters.t" + iaasOutputs = "iaasoutputs.t" + kubernetesParams = "k8s/kubernetesparams.t" + masterOutputs = "masteroutputs.t" + masterParams = "masterparams.t" + windowsParams = "windowsparams.t" ) // addons source and destination file references diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 4c317be76..bda96c33e 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -30,11 +30,7 @@ import ( ) var commonTemplateFiles = []string{agentOutputs, agentParams, masterOutputs, iaasOutputs, masterParams, windowsParams} -var dcosTemplateFiles = []string{dcosBaseFile, dcosAgentResourcesVMAS, dcosAgentResourcesVMSS, dcosAgentVars, dcosMasterResources, dcosMasterVars, dcosParams, dcosWindowsAgentResourcesVMAS, dcosWindowsAgentResourcesVMSS} -var dcos2TemplateFiles = []string{dcos2BaseFile, dcosAgentResourcesVMAS, dcosAgentResourcesVMSS, dcosAgentVars, dcos2MasterResources, dcos2BootstrapResources, dcos2MasterVars, dcosParams, dcosWindowsAgentResourcesVMAS, dcosWindowsAgentResourcesVMSS, dcos2BootstrapVars, dcos2BootstrapParams} var kubernetesParamFiles = []string{armParameters, kubernetesParams, masterParams, agentParams, windowsParams} -var swarmTemplateFiles = []string{swarmBaseFile, swarmParams, swarmAgentResourcesVMAS, swarmAgentVars, swarmAgentResourcesVMSS, swarmBaseFile, swarmMasterResources, swarmMasterVars, swarmWinAgentResourcesVMAS, swarmWinAgentResourcesVMSS} -var swarmModeTemplateFiles = []string{swarmBaseFile, swarmParams, swarmAgentResourcesVMAS, swarmAgentVars, swarmAgentResourcesVMSS, swarmBaseFile, swarmMasterResources, swarmMasterVars, swarmWinAgentResourcesVMAS, swarmWinAgentResourcesVMSS} var keyvaultSecretPathRe *regexp.Regexp @@ -103,15 +99,13 @@ func GenerateKubeConfig(properties *api.Properties, location string) (string, er // validateDistro checks if the requested orchestrator type is supported on the requested Linux distro. func validateDistro(cs *api.ContainerService) bool { // Check Master distro - if cs.Properties.MasterProfile != nil && cs.Properties.MasterProfile.Distro == api.RHEL && - (cs.Properties.OrchestratorProfile.OrchestratorType != api.SwarmMode) { + if cs.Properties.MasterProfile != nil && cs.Properties.MasterProfile.Distro == api.RHEL { log.Printf("Orchestrator type %s not suported on RHEL Master", cs.Properties.OrchestratorProfile.OrchestratorType) return false } // Check Agent distros for _, agentProfile := range cs.Properties.AgentPoolProfiles { - if agentProfile.Distro == api.RHEL && - (cs.Properties.OrchestratorProfile.OrchestratorType != api.SwarmMode) { + if agentProfile.Distro == api.RHEL { log.Printf("Orchestrator type %s not suported on RHEL Agent", cs.Properties.OrchestratorProfile.OrchestratorType) return false } @@ -237,157 +231,6 @@ func makeWindowsExtensionScriptCommands(extension *api.Extension, extensionProfi return fmt.Sprintf("New-Item -ItemType Directory -Force -Path \"%s\" ; Invoke-WebRequest -Uri \"%s\" -OutFile \"%s\" ; powershell \"%s `\"',parameters('%sParameters'),'`\"\"\n", scriptFileDir, scriptURL, scriptFilePath, scriptFilePath, extensionProfile.Name) } -func getDCOSWindowsAgentPreprovisionParameters(cs *api.ContainerService, profile *api.AgentPoolProfile) string { - extension := profile.PreprovisionExtension - - var extensionProfile *api.ExtensionProfile - - for _, eP := range cs.Properties.ExtensionProfiles { - if strings.EqualFold(eP.Name, extension.Name) { - extensionProfile = eP - break - } - } - - parms := extensionProfile.ExtensionParameters - return parms -} - -func getDCOSDefaultBootstrapInstallerURL(profile *api.OrchestratorProfile) string { - if profile.OrchestratorType == api.DCOS { - switch profile.OrchestratorVersion { - case common.DCOSVersion1Dot11Dot2: - return "https://dcos-mirror.azureedge.net/dcos-1-11-2/dcos_generate_config.sh" - case common.DCOSVersion1Dot11Dot0: - return "https://dcos-mirror.azureedge.net/dcos-1-11-0/dcos_generate_config.sh" - } - } - return "" -} - -func getDCOSDefaultWindowsBootstrapInstallerURL(profile *api.OrchestratorProfile) string { - if profile.OrchestratorType == api.DCOS { - switch profile.OrchestratorVersion { - case common.DCOSVersion1Dot11Dot2: - return "https://dcos-mirror.azureedge.net/dcos-windows/1-11-2" - case common.DCOSVersion1Dot11Dot0: - return "https://dcos-mirror.azureedge.net/dcos-windows/1-11-0" - } - } - return "" -} - -func getDCOSDefaultProviderPackageGUID(orchestratorType string, orchestratorVersion string, masterCount int) string { - if orchestratorType == api.DCOS { - switch orchestratorVersion { - case common.DCOSVersion1Dot10Dot0: - switch masterCount { - case 1: - return "c4ec6210f396b8e435177b82e3280a2cef0ce721" - case 3: - return "08197947cb57d479eddb077a429fa15c139d7d20" - case 5: - return "f286ad9d3641da5abb622e4a8781f73ecd8492fa" - } - case common.DCOSVersion1Dot9Dot0: - switch masterCount { - case 1: - return "bcc883b7a3191412cf41824bdee06c1142187a0b" - case 3: - return "dcff7e24c0c1827bebeb7f1a806f558054481b33" - case 5: - return "b41bfa84137a6374b2ff5eb1655364d7302bd257" - } - case common.DCOSVersion1Dot9Dot8: - switch masterCount { - case 1: - return "e8b0e3fc4a16394dc6dd5b19fc54bf1543bff429" - case 3: - return "2d36c3f570d9dd7d187c699f9a322ed9d95e7dfa" - case 5: - return "c03c9587f88929f310b80af4f448b7b51654f1c8" - } - case common.DCOSVersion1Dot8Dot8: - switch masterCount { - case 1: - return "441385ce2f5942df7e29075c12fb38fa5e92cbba" - case 3: - return "b1cd359287504efb780257bd12cc3a63704e42d4" - case 5: - return "d9b61156dfcc9383e014851529738aa550ef57d9" - } - } - } - return "" -} - -func getDCOSDefaultRepositoryURL(orchestratorType string, orchestratorVersion string) string { - if orchestratorType == api.DCOS { - switch orchestratorVersion { - case common.DCOSVersion1Dot10Dot0: - return "https://dcosio.azureedge.net/dcos/stable/1.10.0" - case common.DCOSVersion1Dot9Dot8: - return "https://dcosio.azureedge.net/dcos/stable/1.9.8" - default: - return "https://dcosio.azureedge.net/dcos/stable" - } - } - return "" -} - -func getDCOSMasterCustomNodeLabels() string { - // return empty string for DCOS since no attribtutes needed on master - return "" -} - -func getDCOSAgentCustomNodeLabels(profile *api.AgentPoolProfile) string { - var buf bytes.Buffer - var attrstring string - buf.WriteString("") - // always write MESOS_ATTRIBUTES because - // the provision script will add FD/UD attributes - // at node provisioning time - if len(profile.OSType) > 0 { - attrstring = fmt.Sprintf("MESOS_ATTRIBUTES=\"os:%s", profile.OSType) - } else { - attrstring = fmt.Sprintf("MESOS_ATTRIBUTES=\"os:%s", api.Linux) - } - - if len(profile.Ports) > 0 { - attrstring += ";public_ip:yes" - } - - buf.WriteString(attrstring) - if len(profile.CustomNodeLabels) > 0 { - for k, v := range profile.CustomNodeLabels { - buf.WriteString(fmt.Sprintf(";%s:%s", k, v)) - } - } - buf.WriteString("\"") - return buf.String() -} - -func getDCOSWindowsAgentCustomAttributes(profile *api.AgentPoolProfile) string { - var buf bytes.Buffer - var attrstring string - buf.WriteString("") - if len(profile.OSType) > 0 { - attrstring = fmt.Sprintf("os:%s", profile.OSType) - } else { - attrstring = "os:windows" - } - if len(profile.Ports) > 0 { - attrstring += ";public_ip:yes" - } - buf.WriteString(attrstring) - if len(profile.CustomNodeLabels) > 0 { - for k, v := range profile.CustomNodeLabels { - buf.WriteString(fmt.Sprintf(";%s:%s", k, v)) - } - } - return buf.String() -} - func getVNETAddressPrefixes(properties *api.Properties) string { visitedSubnets := make(map[string]bool) var buf bytes.Buffer @@ -998,58 +841,6 @@ func getAddonsString(cs *api.ContainerService, sourcePath string) string { return result } -func getDCOSMasterProvisionScript(orchProfile *api.OrchestratorProfile, bootstrapIP string) string { - scriptname := dcos2Provision - if orchProfile.DcosConfig == nil || orchProfile.DcosConfig.BootstrapProfile == nil { - scriptname = dcosProvision - } - - // add the provision script - bp, err := Asset(scriptname) - if err != nil { - panic(fmt.Sprintf("BUG: %s", err.Error())) - } - - provisionScript := string(bp) - if strings.Contains(provisionScript, "'") { - panic(fmt.Sprintf("BUG: %s may not contain character '", scriptname)) - } - - // the embedded roleFileContents - roleFileContents := `touch /etc/mesosphere/roles/master -touch /etc/mesosphere/roles/azure_master` - provisionScript = strings.Replace(provisionScript, "ROLESFILECONTENTS", roleFileContents, -1) - provisionScript = strings.Replace(provisionScript, "BOOTSTRAP_IP", bootstrapIP, -1) - - var b bytes.Buffer - b.WriteString(provisionScript) - b.WriteString("\n") - - return strings.Replace(strings.Replace(b.String(), "\r\n", "\n", -1), "\n", "\n\n ", -1) -} - -func buildYamlFileWithWriteFiles(files []string, cs *api.ContainerService) string { - clusterYamlFile := `#cloud-config - -write_files: -%s -` - writeFileBlock := ` - encoding: gzip - content: !!binary | - %s - path: /opt/azure/containers/%s - permissions: "0744" -` - - filelines := "" - for _, file := range files { - b64GzipString := getBase64EncodedGzippedCustomScript(file, cs) - fileNoPath := strings.TrimPrefix(file, "swarm/") - filelines += fmt.Sprintf(writeFileBlock, b64GzipString, fileNoPath) - } - return fmt.Sprintf(clusterYamlFile, filelines) -} - func getKubernetesSubnets(properties *api.Properties) string { subnetString := `{ "name": "podCIDR%d", @@ -1241,10 +1032,6 @@ func stringInSlice(a string, list []string) bool { return false } -func getSwarmVersions(orchestratorVersion, dockerComposeVersion string) string { - return fmt.Sprintf("\"orchestratorVersion\": \"%s\",\n\"dockerComposeVersion\": \"%s\",\n", orchestratorVersion, dockerComposeVersion) -} - func wrapAsVariableObject(o, v string) string { return fmt.Sprintf("',variables('%s').%s,'", o, v) } diff --git a/pkg/engine/engine_dcos.go b/pkg/engine/engine_dcos.go deleted file mode 100644 index a789633f8..000000000 --- a/pkg/engine/engine_dcos.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -package engine - -import ( - "bytes" - "fmt" - "regexp" - "strconv" - "strings" - - "github.com/Azure/aks-engine/pkg/api" - "github.com/Azure/aks-engine/pkg/api/common" - "github.com/ghodss/yaml" -) - -func getDCOSProvisionScript(script string) string { - // add the provision script - bp, err := Asset(script) - if err != nil { - panic(fmt.Sprintf("BUG: %s", err.Error())) - } - - provisionScript := string(bp) - if strings.Contains(provisionScript, "'") { - panic(fmt.Sprintf("BUG: %s may not contain character '", script)) - } - - return strings.Replace(strings.Replace(provisionScript, "\r\n", "\n", -1), "\n", "\n\n ", -1) -} - -func getDCOSBootstrapCustomData(p *api.Properties) string { - masterIPList, err := generateConsecutiveIPsList(p.MasterProfile.Count, p.MasterProfile.FirstConsecutiveStaticIP) - if err != nil { - return "" - } - for i, v := range masterIPList { - masterIPList[i] = " - " + v - } - - str := getSingleLineDCOSCustomData( - p.OrchestratorProfile.OrchestratorType, - dcos2BootstrapCustomdata, 0, - map[string]string{ - "PROVISION_SOURCE_STR": getDCOSProvisionScript(dcosProvisionSource), - "PROVISION_STR": getDCOSProvisionScript(dcos2BootstrapProvision), - "MASTER_IP_LIST": strings.Join(masterIPList, "\n"), - "BOOTSTRAP_IP": p.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP, - "BOOTSTRAP_OAUTH_ENABLED": strconv.FormatBool(p.OrchestratorProfile.DcosConfig.BootstrapProfile.OAuthEnabled)}) - - return fmt.Sprintf("\"customData\": \"[base64(concat('#cloud-config\\n\\n', '%s'))]\",", str) -} - -func getDCOSCustomDataPublicIPStr(orchestratorType string, masterCount int) string { - if orchestratorType == api.DCOS { - var buf bytes.Buffer - for i := 0; i < masterCount; i++ { - buf.WriteString(fmt.Sprintf("reference(variables('masterVMNic')[%d]).ipConfigurations[0].properties.privateIPAddress,", i)) - if i < (masterCount - 1) { - buf.WriteString(`'\\\", \\\"', `) - } - } - return buf.String() - } - return "" -} - -// getSingleLineForTemplate returns the file as a single line for embedding in an arm template -func getSingleLineDCOSCustomData(orchestratorType, yamlFilename string, masterCount int, replaceMap map[string]string) string { - b, err := Asset(yamlFilename) - if err != nil { - panic(fmt.Sprintf("BUG getting yaml custom data file: %s", err.Error())) - } - yamlStr := string(b) - for k, v := range replaceMap { - yamlStr = strings.Replace(yamlStr, k, v, -1) - } - - // convert to json - jsonBytes, err4 := yaml.YAMLToJSON([]byte(yamlStr)) - if err4 != nil { - panic(fmt.Sprintf("BUG: %s", err4.Error())) - } - yamlStr = string(jsonBytes) - - // convert to one line - yamlStr = strings.Replace(yamlStr, "\\", "\\\\", -1) - yamlStr = strings.Replace(yamlStr, "\r\n", "\\n", -1) - yamlStr = strings.Replace(yamlStr, "\n", "\\n", -1) - yamlStr = strings.Replace(yamlStr, "\"", "\\\"", -1) - - // variable replacement - rVariable, e1 := regexp.Compile("{{{([^}]*)}}}") - if e1 != nil { - panic(fmt.Sprintf("BUG: %s", e1.Error())) - } - yamlStr = rVariable.ReplaceAllString(yamlStr, "',variables('$1'),'") - - // replace the internal values - publicIPStr := getDCOSCustomDataPublicIPStr(orchestratorType, masterCount) - yamlStr = strings.Replace(yamlStr, "DCOSCUSTOMDATAPUBLICIPSTR", publicIPStr, -1) - - return yamlStr -} - -func getDCOSCustomDataTemplate(orchestratorType, orchestratorVersion string) string { - switch orchestratorType { - case api.DCOS: - switch orchestratorVersion { - case common.DCOSVersion1Dot8Dot8: - return dcosCustomData188 - case common.DCOSVersion1Dot9Dot0: - return dcosCustomData190 - case common.DCOSVersion1Dot9Dot8: - return dcosCustomData198 - case common.DCOSVersion1Dot10Dot0: - return dcosCustomData110 - case common.DCOSVersion1Dot11Dot0: - return dcos2CustomData1110 - case common.DCOSVersion1Dot11Dot2: - return dcos2CustomData1112 - } - default: - // it is a bug to get here - panic(fmt.Sprintf("BUG: invalid orchestrator %s", orchestratorType)) - } - return "" -} - -func getDCOSMasterCustomData(cs *api.ContainerService) string { - masterAttributeContents := getDCOSMasterCustomNodeLabels() - masterPreprovisionExtension := "" - if cs.Properties.MasterProfile.PreprovisionExtension != nil { - masterPreprovisionExtension += "\n" - masterPreprovisionExtension += makeMasterExtensionScriptCommands(cs) - } - var bootstrapIP string - if cs.Properties.OrchestratorProfile.DcosConfig != nil && cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile != nil { - bootstrapIP = cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP - } - - str := getSingleLineDCOSCustomData( - cs.Properties.OrchestratorProfile.OrchestratorType, - getDCOSCustomDataTemplate(cs.Properties.OrchestratorProfile.OrchestratorType, cs.Properties.OrchestratorProfile.OrchestratorVersion), - cs.Properties.MasterProfile.Count, - map[string]string{ - "PROVISION_SOURCE_STR": getDCOSProvisionScript(dcosProvisionSource), - "PROVISION_STR": getDCOSMasterProvisionScript(cs.Properties.OrchestratorProfile, bootstrapIP), - "ATTRIBUTES_STR": masterAttributeContents, - "PREPROVISION_EXTENSION": masterPreprovisionExtension, - "ROLENAME": "master"}) - - return fmt.Sprintf("\"customData\": \"[base64(concat('#cloud-config\\n\\n', '%s'))]\",", str) -} - -func getDCOSAgentProvisionScript(profile *api.AgentPoolProfile, orchProfile *api.OrchestratorProfile, bootstrapIP string) string { - // add the provision script - scriptname := dcos2Provision - if orchProfile.DcosConfig == nil || orchProfile.DcosConfig.BootstrapProfile == nil { - if profile.OSType == api.Windows { - scriptname = dcosWindowsProvision - } else { - scriptname = dcosProvision - } - } - - bp, err := Asset(scriptname) - if err != nil { - panic(fmt.Sprintf("BUG: %s", err.Error())) - } - - provisionScript := string(bp) - if strings.Contains(provisionScript, "'") { - panic(fmt.Sprintf("BUG: %s may not contain character '", dcosProvision)) - } - - // the embedded roleFileContents - var roleFileContents string - if len(profile.Ports) > 0 { - // public agents - roleFileContents = "touch /etc/mesosphere/roles/slave_public" - } else { - roleFileContents = "touch /etc/mesosphere/roles/slave" - } - provisionScript = strings.Replace(provisionScript, "ROLESFILECONTENTS", roleFileContents, -1) - provisionScript = strings.Replace(provisionScript, "BOOTSTRAP_IP", bootstrapIP, -1) - - var b bytes.Buffer - b.WriteString(provisionScript) - b.WriteString("\n") - - if len(orchProfile.DcosConfig.Registry) == 0 { - b.WriteString("rm /etc/docker.tar.gz\n") - } - - return strings.Replace(strings.Replace(b.String(), "\r\n", "\n", -1), "\n", "\n\n ", -1) -} - -func getDCOSAgentCustomData(cs *api.ContainerService, profile *api.AgentPoolProfile) string { - attributeContents := getDCOSAgentCustomNodeLabels(profile) - agentPreprovisionExtension := "" - if profile.PreprovisionExtension != nil { - agentPreprovisionExtension += "\n" - agentPreprovisionExtension += makeAgentExtensionScriptCommands(cs, profile) - } - var agentRoleName, bootstrapIP string - if len(profile.Ports) > 0 { - agentRoleName = "slave_public" - } else { - agentRoleName = "slave" - } - if cs.Properties.OrchestratorProfile.DcosConfig != nil && cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile != nil { - bootstrapIP = cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP - } - - str := getSingleLineDCOSCustomData( - cs.Properties.OrchestratorProfile.OrchestratorType, - getDCOSCustomDataTemplate(cs.Properties.OrchestratorProfile.OrchestratorType, cs.Properties.OrchestratorProfile.OrchestratorVersion), - cs.Properties.MasterProfile.Count, - map[string]string{ - "PROVISION_SOURCE_STR": getDCOSProvisionScript(dcosProvisionSource), - "PROVISION_STR": getDCOSAgentProvisionScript(profile, cs.Properties.OrchestratorProfile, bootstrapIP), - "ATTRIBUTES_STR": attributeContents, - "PREPROVISION_EXTENSION": agentPreprovisionExtension, - "ROLENAME": agentRoleName}) - - return fmt.Sprintf("\"customData\": \"[base64(concat('#cloud-config\\n\\n', '%s'))]\",", str) -} - -func getDCOSWindowsAgentCustomData(cs *api.ContainerService, profile *api.AgentPoolProfile) string { - agentPreprovisionExtension := "" - if profile.PreprovisionExtension != nil { - agentPreprovisionExtension += "\n" - agentPreprovisionExtension += makeAgentExtensionScriptCommands(cs, profile) - } - b, err := Asset(dcosWindowsProvision) - if err != nil { - // this should never happen and this is a bug - panic(fmt.Sprintf("BUG: %s", err.Error())) - } - // translate the parameters - csStr := string(b) - csStr = strings.Replace(csStr, "PREPROVISION_EXTENSION", agentPreprovisionExtension, -1) - csStr = strings.Replace(csStr, "\r\n", "\n", -1) - str := getBase64EncodedGzippedCustomScriptFromStr(csStr) - return fmt.Sprintf("\"customData\": \"%s\"", str) -} - -// getLinkedTemplatesForExtensions returns the -// Microsoft.Resources/deployments for each extension -func getLinkedTemplatesForExtensions(properties *api.Properties) string { - var result string - - extensions := properties.ExtensionProfiles - masterProfileExtensions := properties.MasterProfile.Extensions - orchestratorType := properties.OrchestratorProfile.OrchestratorType - - for err, extensionProfile := range extensions { - _ = err - - masterOptedForExtension, singleOrAll := validateProfileOptedForExtension(extensionProfile.Name, masterProfileExtensions) - if masterOptedForExtension { - result += "," - dta, e := getMasterLinkedTemplateText(orchestratorType, extensionProfile, singleOrAll) - if e != nil { - fmt.Println(e.Error()) - return "" - } - result += dta - } - - for _, agentPoolProfile := range properties.AgentPoolProfiles { - poolProfileExtensions := agentPoolProfile.Extensions - poolOptedForExtension, singleOrAll := validateProfileOptedForExtension(extensionProfile.Name, poolProfileExtensions) - if poolOptedForExtension { - result += "," - dta, e := getAgentPoolLinkedTemplateText(agentPoolProfile, orchestratorType, extensionProfile, singleOrAll) - if e != nil { - fmt.Println(e.Error()) - return "" - } - result += dta - } - - } - } - - return result -} diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index 396c6f8ac..90568146e 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -805,60 +805,6 @@ func TestMakeMasterExtensionScriptCommands(t *testing.T) { } } -func TestGetDCOSWindowsAgentPreprovisionParameters(t *testing.T) { - cs := &api.ContainerService{ - Properties: &api.Properties{ - ExtensionProfiles: []*api.ExtensionProfile{ - { - Name: "fooExtension", - ExtensionParameters: "fooExtensionParams", - }, - }, - }, - } - - profile := &api.AgentPoolProfile{ - PreprovisionExtension: &api.Extension{ - Name: "fooExtension", - }, - } - - actual := getDCOSWindowsAgentPreprovisionParameters(cs, profile) - - expected := "fooExtensionParams" - - if actual != expected { - t.Errorf("expected to get %s, but got %s instead", expected, actual) - } -} - -func TestGetDCOSWindowsAgentCustomAttributes(t *testing.T) { - profile := &api.AgentPoolProfile{ - OSType: api.Windows, - Ports: []int{ - 8000, - 8080, - }, - CustomNodeLabels: map[string]string{ - "foo": "bar", - "abc": "xyz", - "lorem": "ipsum", - }, - } - - actual := getDCOSWindowsAgentCustomAttributes(profile) - - if !strings.Contains(actual, "os:Windows;public_ip:yes;") { - t.Errorf("expected output string of getDCOSWindowsAgentCustomAttributes %s to contain os:Windows;public_ip:yes;", actual) - } - - for k, v := range profile.CustomNodeLabels { - if !strings.Contains(actual, fmt.Sprintf("%s:%s", k, v)) { - t.Errorf("expected output string of getDCOSWindowsAgentCustomAttributes %s to contain key-value pairs %s:%s", actual, k, v) - } - } -} - func TestGetKubernetesSubnets(t *testing.T) { props := &api.Properties{ AgentPoolProfiles: []*api.AgentPoolProfile{ diff --git a/pkg/engine/params.go b/pkg/engine/params.go index d6d7227c8..dc79b6426 100644 --- a/pkg/engine/params.go +++ b/pkg/engine/params.go @@ -4,12 +4,9 @@ package engine import ( - "encoding/base64" "fmt" - "strings" "github.com/Azure/aks-engine/pkg/api" - "github.com/Azure/aks-engine/pkg/api/common" "github.com/Azure/aks-engine/pkg/helpers" ) @@ -46,7 +43,7 @@ func getParameters(cs *api.ContainerService, generatorCode string, aksEngineVers addValue(parametersMap, "dnsServer", linuxProfile.CustomNodesDNS.DNSServer) } } - // masterEndpointDNSNamePrefix is the basis for storage account creation across dcos, swarm, and k8s + // masterEndpointDNSNamePrefix is the basis for storage account creation for k8s if properties.MasterProfile != nil { // MasterProfile exists, uses master DNS prefix addValue(parametersMap, "masterEndpointDNSNamePrefix", properties.MasterProfile.DNSPrefix) @@ -98,96 +95,11 @@ func getParameters(cs *api.ContainerService, generatorCode string, aksEngineVers } } - //Swarm and SwarmMode Parameters - if properties.OrchestratorProfile.OrchestratorType == api.Swarm || properties.OrchestratorProfile.OrchestratorType == api.SwarmMode { - var dockerEngineRepo, dockerComposeDownloadURL string - if cloudSpecConfig.DockerSpecConfig.DockerEngineRepo == "" { - dockerEngineRepo = DefaultDockerEngineRepo - } else { - dockerEngineRepo = cloudSpecConfig.DockerSpecConfig.DockerEngineRepo - } - if cloudSpecConfig.DockerSpecConfig.DockerComposeDownloadURL == "" { - dockerComposeDownloadURL = DefaultDockerComposeURL - } else { - dockerComposeDownloadURL = cloudSpecConfig.DockerSpecConfig.DockerComposeDownloadURL - } - addValue(parametersMap, "dockerEngineDownloadRepo", dockerEngineRepo) - addValue(parametersMap, "dockerComposeDownloadURL", dockerComposeDownloadURL) - } - // Kubernetes Parameters if properties.OrchestratorProfile.IsKubernetes() { assignKubernetesParameters(properties, parametersMap, cloudSpecConfig, generatorCode) } - if strings.HasPrefix(properties.OrchestratorProfile.OrchestratorType, api.DCOS) { - dcosBootstrapURL := cloudSpecConfig.DCOSSpecConfig.DCOS188BootstrapDownloadURL - dcosWindowsBootstrapURL := cloudSpecConfig.DCOSSpecConfig.DCOSWindowsBootstrapDownloadURL - dcosRepositoryURL := cloudSpecConfig.DCOSSpecConfig.DcosRepositoryURL - dcosClusterPackageListID := cloudSpecConfig.DCOSSpecConfig.DcosClusterPackageListID - dcosProviderPackageID := cloudSpecConfig.DCOSSpecConfig.DcosProviderPackageID - - if properties.OrchestratorProfile.OrchestratorType == api.DCOS { - switch properties.OrchestratorProfile.OrchestratorVersion { - case common.DCOSVersion1Dot8Dot8: - dcosBootstrapURL = cloudSpecConfig.DCOSSpecConfig.DCOS188BootstrapDownloadURL - case common.DCOSVersion1Dot9Dot0: - dcosBootstrapURL = cloudSpecConfig.DCOSSpecConfig.DCOS190BootstrapDownloadURL - case common.DCOSVersion1Dot9Dot8: - dcosBootstrapURL = cloudSpecConfig.DCOSSpecConfig.DCOS198BootstrapDownloadURL - case common.DCOSVersion1Dot10Dot0: - dcosBootstrapURL = cloudSpecConfig.DCOSSpecConfig.DCOS110BootstrapDownloadURL - default: - dcosBootstrapURL = getDCOSDefaultBootstrapInstallerURL(properties.OrchestratorProfile) - dcosWindowsBootstrapURL = getDCOSDefaultWindowsBootstrapInstallerURL(properties.OrchestratorProfile) - } - } - - if properties.OrchestratorProfile.DcosConfig != nil { - if properties.OrchestratorProfile.DcosConfig.DcosWindowsBootstrapURL != "" { - dcosWindowsBootstrapURL = properties.OrchestratorProfile.DcosConfig.DcosWindowsBootstrapURL - } - if properties.OrchestratorProfile.DcosConfig.DcosBootstrapURL != "" { - dcosBootstrapURL = properties.OrchestratorProfile.DcosConfig.DcosBootstrapURL - } - if len(properties.OrchestratorProfile.DcosConfig.Registry) > 0 { - addValue(parametersMap, "registry", properties.OrchestratorProfile.DcosConfig.Registry) - addValue(parametersMap, "registryKey", base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", properties.OrchestratorProfile.DcosConfig.RegistryUser, properties.OrchestratorProfile.DcosConfig.RegistryPass)))) - } - if properties.OrchestratorProfile.DcosConfig.DcosRepositoryURL != "" { - dcosRepositoryURL = properties.OrchestratorProfile.DcosConfig.DcosRepositoryURL - } else { - dcosRepositoryURL = getDCOSDefaultRepositoryURL( - properties.OrchestratorProfile.OrchestratorType, - properties.OrchestratorProfile.OrchestratorVersion) - } - - if properties.OrchestratorProfile.DcosConfig.DcosClusterPackageListID != "" { - dcosClusterPackageListID = properties.OrchestratorProfile.DcosConfig.DcosClusterPackageListID - } - - if properties.OrchestratorProfile.DcosConfig.DcosProviderPackageID != "" { - dcosProviderPackageID = properties.OrchestratorProfile.DcosConfig.DcosProviderPackageID - } else { - dcosProviderPackageID = getDCOSDefaultProviderPackageGUID( - properties.OrchestratorProfile.OrchestratorType, - properties.OrchestratorProfile.OrchestratorVersion, - properties.MasterProfile.Count) - } - } - - addValue(parametersMap, "dcosBootstrapURL", dcosBootstrapURL) - addValue(parametersMap, "dcosWindowsBootstrapURL", dcosWindowsBootstrapURL) - addValue(parametersMap, "dcosRepositoryURL", dcosRepositoryURL) - addValue(parametersMap, "dcosClusterPackageListID", dcosClusterPackageListID) - addValue(parametersMap, "dcosProviderPackageID", dcosProviderPackageID) - - if properties.OrchestratorProfile.DcosConfig != nil && properties.OrchestratorProfile.DcosConfig.BootstrapProfile != nil { - addValue(parametersMap, "bootstrapStaticIP", properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP) - addValue(parametersMap, "bootstrapVMSize", properties.OrchestratorProfile.DcosConfig.BootstrapProfile.VMSize) - } - } - // Agent parameters for _, agentProfile := range properties.AgentPoolProfiles { addValue(parametersMap, fmt.Sprintf("%sCount", agentProfile.Name), agentProfile.Count) diff --git a/pkg/engine/template_generator.go b/pkg/engine/template_generator.go index ce332f37f..e91f34c44 100644 --- a/pkg/engine/template_generator.go +++ b/pkg/engine/template_generator.go @@ -127,9 +127,6 @@ func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerServ func (t *TemplateGenerator) verifyFiles() error { allFiles := commonTemplateFiles - allFiles = append(allFiles, dcosTemplateFiles...) - allFiles = append(allFiles, dcos2TemplateFiles...) - allFiles = append(allFiles, swarmTemplateFiles...) for _, file := range allFiles { if _, err := Asset(file); err != nil { return t.Translator.Errorf("template file %s does not exist", file) @@ -139,28 +136,7 @@ func (t *TemplateGenerator) verifyFiles() error { } func (t *TemplateGenerator) prepareTemplateFiles(properties *api.Properties) ([]string, string, error) { - var files []string - var baseFile string - switch properties.OrchestratorProfile.OrchestratorType { - case api.DCOS: - if properties.OrchestratorProfile.DcosConfig == nil || properties.OrchestratorProfile.DcosConfig.BootstrapProfile == nil { - files = append(commonTemplateFiles, dcosTemplateFiles...) - baseFile = dcosBaseFile - } else { - files = append(commonTemplateFiles, dcos2TemplateFiles...) - baseFile = dcos2BaseFile - } - case api.Swarm: - files = append(commonTemplateFiles, swarmTemplateFiles...) - baseFile = swarmBaseFile - case api.SwarmMode: - files = append(commonTemplateFiles, swarmModeTemplateFiles...) - baseFile = swarmBaseFile - default: - return nil, "", t.Translator.Errorf("orchestrator '%s' is unsupported", properties.OrchestratorProfile.OrchestratorType) - } - - return files, baseFile, nil + return []string{}, "", t.Translator.Errorf("orchestrator '%s' is unsupported", properties.OrchestratorProfile.OrchestratorType) } func (t *TemplateGenerator) GetJumpboxCustomDataJSON(cs *api.ContainerService) string { @@ -272,9 +248,6 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { "IsIPMasqAgentEnabled": func() bool { return cs.Properties.IsIPMasqAgentEnabled() }, - "IsDCOS19": func() bool { - return cs.Properties.OrchestratorProfile != nil && cs.Properties.OrchestratorProfile.IsDCOS19() - }, "IsKubernetesVersionGe": func(version string) bool { return cs.Properties.OrchestratorProfile.IsKubernetes() && common.IsKubernetesVersionGe(cs.Properties.OrchestratorProfile.OrchestratorVersion, version) }, @@ -327,14 +300,8 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { return string(cs.Properties.OrchestratorProfile.KubernetesConfig.ProxyMode) }, "HasPrivateRegistry": func() bool { - if cs.Properties.OrchestratorProfile.DcosConfig != nil { - return cs.Properties.OrchestratorProfile.DcosConfig.HasPrivateRegistry() - } return false }, - "IsSwarmMode": func() bool { - return cs.Properties.OrchestratorProfile.IsSwarmMode() - }, "IsKubernetes": func() bool { return cs.Properties.OrchestratorProfile.IsKubernetes() }, @@ -393,34 +360,7 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { "GetDataDisks": func(profile *api.AgentPoolProfile) string { return getDataDisks(profile) }, - "HasBootstrap": func() bool { - return cs.Properties.OrchestratorProfile.DcosConfig != nil && cs.Properties.OrchestratorProfile.DcosConfig.HasBootstrap() - }, - "GetDCOSBootstrapCustomData": func() string { - return getDCOSBootstrapCustomData(cs.Properties) - }, - "GetDCOSMasterCustomData": func() string { - return getDCOSMasterCustomData(cs) - }, - "GetDCOSAgentCustomData": func(profile *api.AgentPoolProfile) string { - return getDCOSAgentCustomData(cs, profile) - }, - "GetDCOSWindowsAgentCustomData": func(profile *api.AgentPoolProfile) string { - return getDCOSWindowsAgentCustomData(cs, profile) - }, - "GetDCOSWindowsAgentCustomNodeAttributes": func(profile *api.AgentPoolProfile) string { - return getDCOSWindowsAgentCustomAttributes(profile) - }, - "GetDCOSWindowsAgentPreprovisionParameters": func(profile *api.AgentPoolProfile) string { - if profile.PreprovisionExtension != nil { - return getDCOSWindowsAgentPreprovisionParameters(cs, profile) - } - return "" - }, "GetMasterAllowedSizes": func() string { - if cs.Properties.OrchestratorProfile.OrchestratorType == api.DCOS { - return helpers.GetDCOSMasterAllowedSizes() - } return helpers.GetKubernetesAllowedVMSKUs() }, "GetDefaultVNETCIDR": func() string { @@ -432,18 +372,9 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { "GetDefaultVNETCIDRIPv6": func() string { return DefaultVNETCIDRIPv6 }, - "getSwarmVersions": func() string { - return getSwarmVersions(api.SwarmVersion, api.SwarmDockerComposeVersion) - }, - "GetSwarmModeVersions": func() string { - return getSwarmVersions(api.DockerCEVersion, api.DockerCEDockerComposeVersion) - }, "GetSizeMap": func() string { return helpers.GetSizeMap() }, - "WriteLinkedTemplatesForExtensions": func() string { - return getLinkedTemplatesForExtensions(cs.Properties) - }, "GetSshPublicKeysPowerShell": func() string { return getSSHPublicKeysPowerShell(cs.Properties.LinuxProfile) }, @@ -466,41 +397,9 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { } return str }, - "GetMasterSwarmCustomData": func() string { - files := []string{swarmProvision} - str := buildYamlFileWithWriteFiles(files, cs) - if cs.Properties.MasterProfile.PreprovisionExtension != nil { - extensionStr := makeMasterExtensionScriptCommands(cs) - str += "'runcmd:\n" + extensionStr + "\n\n'" - } - str = escapeSingleLine(str) - return fmt.Sprintf("\"customData\": \"[base64(concat('%s'))]\",", str) - }, - "GetAgentSwarmCustomData": func(profile *api.AgentPoolProfile) string { - files := []string{swarmProvision} - str := buildYamlFileWithWriteFiles(files, cs) - str = escapeSingleLine(str) - return fmt.Sprintf("\"customData\": \"[base64(concat('%s',variables('%sRunCmdFile'),variables('%sRunCmd')))]\",", str, profile.Name, profile.Name) - }, - "GetSwarmAgentPreprovisionExtensionCommands": func(profile *api.AgentPoolProfile) string { - str := "" - if profile.PreprovisionExtension != nil { - makeAgentExtensionScriptCommands(cs, profile) - } - str = escapeSingleLine(str) - return str - }, "GetLocation": func() string { return cs.Location }, - "GetWinAgentSwarmCustomData": func() string { - str := getBase64EncodedGzippedCustomScript(swarmWindowsProvision, cs) - return fmt.Sprintf("\"customData\": \"%s\"", str) - }, - "GetWinAgentSwarmModeCustomData": func() string { - str := getBase64EncodedGzippedCustomScript(swarmModeWindowsProvision, cs) - return fmt.Sprintf("\"customData\": \"%s\"", str) - }, "GetKubernetesWindowsAgentFunctions": func() string { // Collect all the parts into a zip var parts = []string{ @@ -540,22 +439,6 @@ func getContainerServiceFuncMap(cs *api.ContainerService) template.FuncMap { } return base64.StdEncoding.EncodeToString(buf.Bytes()) }, - "GetMasterSwarmModeCustomData": func() string { - files := []string{swarmModeProvision} - str := buildYamlFileWithWriteFiles(files, cs) - if cs.Properties.MasterProfile.PreprovisionExtension != nil { - extensionStr := makeMasterExtensionScriptCommands(cs) - str += "runcmd:\n" + extensionStr + "\n\n" - } - str = escapeSingleLine(str) - return fmt.Sprintf("\"customData\": \"[base64(concat('%s'))]\",", str) - }, - "GetAgentSwarmModeCustomData": func(profile *api.AgentPoolProfile) string { - files := []string{swarmModeProvision} - str := buildYamlFileWithWriteFiles(files, cs) - str = escapeSingleLine(str) - return fmt.Sprintf("\"customData\": \"[base64(concat('%s',variables('%sRunCmdFile'),variables('%sRunCmd')))]\",", str, profile.Name, profile.Name) - }, "WrapAsVariable": func(s string) string { return common.WrapAsARMVariable(s) }, diff --git a/pkg/engine/template_generator_test.go b/pkg/engine/template_generator_test.go index 065e3284e..abe894a7a 100644 --- a/pkg/engine/template_generator_test.go +++ b/pkg/engine/template_generator_test.go @@ -61,7 +61,6 @@ func TestGetTemplateFuncMap(t *testing.T) { "GetKubeletConfigKeyValsPsh", "GetK8sRuntimeConfigKeyVals", "HasPrivateRegistry", - "IsSwarmMode", "IsKubernetes", "IsPublic", "IsAzureCNI", @@ -78,25 +77,16 @@ func TestGetTemplateFuncMap(t *testing.T) { "GetVNETAddressPrefixes", "GetVNETSubnets", "GetDataDisks", - "HasBootstrap", "GetMasterAllowedSizes", "GetDefaultVNETCIDR", "GetKubernetesAllowedVMSKUs", "GetSizeMap", - "WriteLinkedTemplatesForExtensions", "GetSshPublicKeysPowerShell", "GetWindowsMasterSubnetARMParam", "GetKubernetesMasterPreprovisionYaml", "GetKubernetesAgentPreprovisionYaml", - "GetMasterSwarmCustomData", - "GetAgentSwarmCustomData", - "GetSwarmAgentPreprovisionExtensionCommands", "GetLocation", - "GetWinAgentSwarmCustomData", - "GetWinAgentSwarmModeCustomData", "GetKubernetesWindowsAgentFunctions", - "GetMasterSwarmModeCustomData", - "GetAgentSwarmModeCustomData", "GetPodInfraContainerSpec", "IsKubenet", "WrapAsVariable", diff --git a/pkg/engine/templates_generated.go b/pkg/engine/templates_generated.go index 0441879e9..a41204717 100644 --- a/pkg/engine/templates_generated.go +++ b/pkg/engine/templates_generated.go @@ -2,35 +2,6 @@ // sources: // ../../parts/agentoutputs.t // ../../parts/agentparams.t -// ../../parts/dcos/bstrap/bootstrapcustomdata.yml -// ../../parts/dcos/bstrap/bootstrapparams.t -// ../../parts/dcos/bstrap/bootstrapprovision.sh -// ../../parts/dcos/bstrap/bootstrapresources.t -// ../../parts/dcos/bstrap/bootstrapvars.t -// ../../parts/dcos/bstrap/dcos1.11.0.customdata.t -// ../../parts/dcos/bstrap/dcos1.11.2.customdata.t -// ../../parts/dcos/bstrap/dcosbase.t -// ../../parts/dcos/bstrap/dcosmasterresources.t -// ../../parts/dcos/bstrap/dcosmastervars.t -// ../../parts/dcos/bstrap/dcosprovision.sh -// ../../parts/dcos/dcosWindowsAgentResourcesVmas.t -// ../../parts/dcos/dcosWindowsAgentResourcesVmss.t -// ../../parts/dcos/dcosWindowsProvision.ps1 -// ../../parts/dcos/dcosagentresourcesvmas.t -// ../../parts/dcos/dcosagentresourcesvmss.t -// ../../parts/dcos/dcosagentvars.t -// ../../parts/dcos/dcosbase.t -// ../../parts/dcos/dcoscustomdata110.t -// ../../parts/dcos/dcoscustomdata184.t -// ../../parts/dcos/dcoscustomdata187.t -// ../../parts/dcos/dcoscustomdata188.t -// ../../parts/dcos/dcoscustomdata190.t -// ../../parts/dcos/dcoscustomdata198.t -// ../../parts/dcos/dcosmasterresources.t -// ../../parts/dcos/dcosmastervars.t -// ../../parts/dcos/dcosparams.t -// ../../parts/dcos/dcosprovision.sh -// ../../parts/dcos/dcosprovisionsource.sh // ../../parts/iaasoutputs.t // ../../parts/k8s/addons/aad-default-admin-group-rbac.yaml // ../../parts/k8s/addons/aad-pod-identity.yaml @@ -130,19 +101,6 @@ // ../../parts/k8s/windowskubeletfunc.ps1 // ../../parts/masteroutputs.t // ../../parts/masterparams.t -// ../../parts/swarm/Install-ContainerHost-And-Join-Swarm.ps1 -// ../../parts/swarm/Join-SwarmMode-cluster.ps1 -// ../../parts/swarm/configure-swarm-cluster.sh -// ../../parts/swarm/configure-swarmmode-cluster.sh -// ../../parts/swarm/swarmagentresourcesvmas.t -// ../../parts/swarm/swarmagentresourcesvmss.t -// ../../parts/swarm/swarmagentvars.t -// ../../parts/swarm/swarmbase.t -// ../../parts/swarm/swarmmasterresources.t -// ../../parts/swarm/swarmmastervars.t -// ../../parts/swarm/swarmparams.t -// ../../parts/swarm/swarmwinagentresourcesvmas.t -// ../../parts/swarm/swarmwinagentresourcesvmss.t // ../../parts/windowsparams.t package engine @@ -416,5926 +374,6 @@ func agentparamsT() (*asset, error) { return a, nil } -var _dcosBstrapBootstrapcustomdataYml = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: - - [ ln, -s, /bin/rm, /usr/bin/rm ] - - [ ln, -s, /bin/mkdir, /usr/bin/mkdir ] - - [ ln, -s, /bin/tar, /usr/bin/tar ] - - [ ln, -s, /bin/ln, /usr/bin/ln ] - - [ ln, -s, /bin/cp, /usr/bin/cp ] - - [ ln, -s, /bin/systemctl, /usr/bin/systemctl ] - - [ ln, -s, /bin/mount, /usr/bin/mount ] - - [ ln, -s, /bin/bash, /usr/bin/bash ] - - [ ln, -s, /usr/sbin/useradd, /usr/bin/useradd ] - - /opt/azure/containers/provision.sh - - /opt/azure/dcos/init_bootstrap.sh -write_files: -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- content: | - #!/bin/sh - - curl -H Metadata:true -fsSL "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/privateIpAddress?api-version=2017-04-02&format=text" - owner: root - path: /opt/azure/dcos/genconf/ip-detect - permissions: '0755' -- content: | - bootstrap_url: http://BOOTSTRAP_IP:8086 - cluster_name: azure-dcos - exhibitor_storage_backend: static - master_discovery: static - oauth_enabled: BOOTSTRAP_OAUTH_ENABLED - ip_detect_public_filename: genconf/ip-detect - master_list: -MASTER_IP_LIST - resolvers: - - 168.63.129.16 - dns_search: - owner: root - path: /opt/azure/dcos/genconf/config.yaml - permissions: '0644' -- content: | - #!/bin/bash - - source /opt/azure/containers/provision_source.sh - - # update dns_search - dns=$(grep search /etc/resolv.conf | cut -d " " -f 2) - sed -i "/dns_search:/c dns_search: $dns" /opt/azure/dcos/genconf/config.yaml - # install and run bootstrap package - cd /opt/azure/dcos - retrycmd_if_failure 10 10 120 curl -fsSL -o dcos_generate_config.sh.sha1sum {{{dcosBootstrapURL}}}.sha1sum - retry_download 1 1 120 {{{dcosBootstrapURL}}} dcos_generate_config.sh $(cat dcos_generate_config.sh.sha1sum) - bash dcos_generate_config.sh - docker run -d -p 8086:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx - owner: root - path: /opt/azure/dcos/init_bootstrap.sh - permissions: '0755' -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -`) - -func dcosBstrapBootstrapcustomdataYmlBytes() ([]byte, error) { - return _dcosBstrapBootstrapcustomdataYml, nil -} - -func dcosBstrapBootstrapcustomdataYml() (*asset, error) { - bytes, err := dcosBstrapBootstrapcustomdataYmlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/bootstrapcustomdata.yml", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapBootstrapparamsT = []byte(` "linuxAdminUsername": { - "metadata": { - "description": "User name for the Linux Virtual Machines (SSH or Password)." - }, - "type": "string" - }, - {{range .ExtensionProfiles}} - "{{.Name}}Parameters": { - "metadata": { - "description": "Parameters for the extension" - }, - "type": "securestring" - }, - {{end}} - "bootstrapStaticIP": { - "metadata": { - "description": "Sets the static IP of the first bootstrap" - }, - "type": "string" - }, - "bootstrapVMSize": { - {{GetMasterAllowedSizes}} - "metadata": { - "description": "The size of the Virtual Machine." - }, - "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" - }, - "nameSuffix": { - "defaultValue": "{{GetUniqueNameSuffix}}", - "metadata": { - "description": "A string hash of the bootstrap DNS name to uniquely identify the cluster." - }, - "type": "string" - }, - "osImageName": { - "defaultValue": "", - "metadata": { - "description": "Name of a Linux OS image. Needs to be used in conjuction with osImageResourceGroup." - }, - "type": "string" - }, - "osImageResourceGroup": { - "defaultValue": "", - "metadata": { - "description": "Resource group of a Linux OS image. Needs to be used in conjuction with osImageName." - }, - "type": "string" - }, - "osImageOffer": { - "defaultValue": "UbuntuServer", - "metadata": { - "description": "Linux OS image type." - }, - "type": "string" - }, - "osImagePublisher": { - "defaultValue": "Canonical", - "metadata": { - "description": "OS image publisher." - }, - "type": "string" - }, - "osImageSKU": { - "defaultValue": "16.04-LTS", - "metadata": { - "description": "OS image SKU." - }, - "type": "string" - }, - "osImageVersion": { - "defaultValue": "16.04.201804050", - "metadata": { - "description": "OS image version." - }, - "type": "string" - }, - "fqdnEndpointSuffix":{ - "defaultValue": "cloudapp.azure.com", - "metadata": { - "description": "Endpoint of FQDN." - }, - "type": "string" - }, - "targetEnvironment": { - "defaultValue": "AzurePublicCloud", - "metadata": { - "description": "The azure deploy environment. Currently support: AzurePublicCloud, AzureChinaCloud" - }, - "type": "string" - }, - "location": { - "defaultValue": "{{GetLocation}}", - "metadata": { - "description": "Sets the location for all resources in the cluster" - }, - "type": "string" - } -{{if .LinuxProfile.HasSecrets}} - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - , - "linuxKeyVaultID{{$vIndex}}": { - "metadata": { - "description": "KeyVaultId{{$vIndex}} to install certificates from on linux machines." - }, - "type": "string" - } - {{range $cIndex, $cert := $vault.VaultCertificates}} - , - "linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}": { - "metadata": { - "description": "CertificateURL{{$cIndex}} to install from KeyVaultId{{$vIndex}} on linux machines." - }, - "type": "string" - } - {{end}} - {{end}} -{{end}} -{{if .HasWindows}}{{if .WindowsProfile.HasSecrets}} - {{range $vIndex, $vault := .WindowsProfile.Secrets}} - , - "windowsKeyVaultID{{$vIndex}}": { - "metadata": { - "description": "KeyVaultId{{$vIndex}} to install certificates from on windows machines." - }, - "type": "string" - } - {{range $cIndex, $cert := $vault.VaultCertificates}} - , - "windowsKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}": { - "metadata": { - "description": "Url to retrieve Certificate{{$cIndex}} from KeyVaultId{{$vIndex}} to install on windows machines." - }, - "type": "string" - }, - "windowsKeyVaultID{{$vIndex}}CertificateStore{{$cIndex}}": { - "metadata": { - "description": "CertificateStore to install Certificate{{$cIndex}} from KeyVaultId{{$vIndex}} on windows machines." - }, - "type": "string" - } - {{end}} - {{end}} -{{end}} {{end}} -`) - -func dcosBstrapBootstrapparamsTBytes() ([]byte, error) { - return _dcosBstrapBootstrapparamsT, nil -} - -func dcosBstrapBootstrapparamsT() (*asset, error) { - bytes, err := dcosBstrapBootstrapparamsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/bootstrapparams.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapBootstrapprovisionSh = []byte(`#!/bin/bash - -source /opt/azure/containers/provision_source.sh -source /opt/azure/dcos/environment - -# default dc/os component download address (Azure CDN) -packages=( - https://dcos-mirror.azureedge.net/pkg/libltdl7_2.4.6-0.1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb -) - -# sha1sum checksums for @packages -sha1sums=( - 9a0f9f2769d3dc834737aa7df50aaaea369af98d - 94f6e89be6d45d9988269a237eb27c7d6a844d7f -) - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - packages=( - http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - http://mirror.kaiyuanshe.cn/docker-ce/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - ) - ;; -esac - -len=$((${#packages[@]}-1)) -for i in $(seq 0 $len); do - retry_get_install_deb 10 10 120 ${packages[$i]} ${sha1sums[$i]} - if [ $? -ne 0 ]; then - exit 1 - fi -done -`) - -func dcosBstrapBootstrapprovisionShBytes() ([]byte, error) { - return _dcosBstrapBootstrapprovisionSh, nil -} - -func dcosBstrapBootstrapprovisionSh() (*asset, error) { - bytes, err := dcosBstrapBootstrapprovisionShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/bootstrapprovision.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapBootstrapresourcesT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('bootstrapNSGName')]", - "properties": { - "securityRules": [ - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - }, - { - "properties": { - "priority": 201, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "8086", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow bootstrap service", - "sourceAddressPrefix": "*" - }, - "name": "Port8086" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('bootstrapNSGID')]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('bootstrapVMName'), '-nic')]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "privateIPAddress": "[variables('bootstrapStaticIP')]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ], - "networkSecurityGroup": { - "id": "[variables('bootstrapNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('bootstrapVMName'), '-nic')]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ], - "tags": - { - "creationSource": "[concat('acsengine-', variables('bootstrapVMName'))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "bootstrap" - }, - "location": "[variables('location')]", - "name": "[variables('bootstrapVMName')]", - "properties": { - "hardwareProfile": { - "vmSize": "[variables('bootstrapVMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('bootstrapVMName'), '-nic'))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[variables('bootstrapVMName')]", - {{GetDCOSBootstrapCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"name": "[concat(variables('bootstrapVMName'), '-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('masterStorageAccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'vhds/',variables('bootstrapVMName'),-osdisk.vhd')]" - } -{{end}} -{{if ne .OrchestratorProfile.DcosConfig.BootstrapProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": "60" -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('bootstrapVMName'), '/bootstrapready')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "[concat('/bin/bash -c \"until curl -f http://', variables('bootstrapStaticIP'), ':8086/dcos_install.sh > /dev/null; do echo waiting for bootstrap node; sleep 15; done; echo bootstrap node up\"')]" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} -`) - -func dcosBstrapBootstrapresourcesTBytes() ([]byte, error) { - return _dcosBstrapBootstrapresourcesT, nil -} - -func dcosBstrapBootstrapresourcesT() (*asset, error) { - bytes, err := dcosBstrapBootstrapresourcesTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/bootstrapresources.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapBootstrapvarsT = []byte(`{{if .OrchestratorProfile.DcosConfig.BootstrapProfile}} - , - "dcosBootstrapURL": "[parameters('dcosBootstrapURL')]", - "bootstrapVMSize": "[parameters('bootstrapVMSize')]", - "bootstrapNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('bootstrapNSGName'))]", - "bootstrapNSGName": "[concat('bootstrap-nsg-', variables('nameSuffix'))]", - "bootstrapVMName": "[concat('bootstrap-', variables('nameSuffix'))]", - "bootstrapStaticIP": "[parameters('bootstrapStaticIP')]" -{{end}} -`) - -func dcosBstrapBootstrapvarsTBytes() ([]byte, error) { - return _dcosBstrapBootstrapvarsT, nil -} - -func dcosBstrapBootstrapvarsT() (*asset, error) { - bytes, err := dcosBstrapBootstrapvarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/bootstrapvars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcos1110CustomdataT = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- ln -s /bin/rm /usr/bin/rm -- ln -s /bin/mkdir /usr/bin/mkdir -- ln -s /bin/tar /usr/bin/tar -- ln -s /bin/ln /usr/bin/ln -- ln -s /bin/cp /usr/bin/cp -- ln -s /bin/systemctl /usr/bin/systemctl -- ln -s /bin/mount /usr/bin/mount -- ln -s /bin/bash /usr/bin/bash -- ln -s /usr/sbin/useradd /usr/bin/useradd -- systemctl disable --now resolvconf.service -- systemctl mask --now lxc-net.service -- systemctl disable --now unscd.service -- systemctl stop --now unscd.service -- /opt/azure/containers/provision.sh -- bash /tmp/dcos/dcos_install.sh ROLENAME -- /opt/azure/dcos/postinstall-cond.sh -- bash /opt/azure/dcos/diagnostics_fix.sh -write_files: -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- content: | - #!/bin/bash - - for f in /opt/mesosphere/packages/dcos-config--setup_*/etc/dcos-diagnostics-runner-config.json; do - if [ -e $f ]; then - sed -i.bak "99 s/1s/10s/" $f - fi - done - owner: root - path: /opt/azure/dcos/diagnostics_fix.sh - permissions: '0744' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -- content: | - #!/bin/bash - if [ -f /opt/azure/dcos/postinstall.sh ]; then /opt/azure/dcos/postinstall.sh; fi - path: /opt/azure/dcos/postinstall-cond.sh - permissions: "0744" - owner: "root" -`) - -func dcosBstrapDcos1110CustomdataTBytes() ([]byte, error) { - return _dcosBstrapDcos1110CustomdataT, nil -} - -func dcosBstrapDcos1110CustomdataT() (*asset, error) { - bytes, err := dcosBstrapDcos1110CustomdataTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcos1.11.0.customdata.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcos1112CustomdataT = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- ln -s /bin/rm /usr/bin/rm -- ln -s /bin/mkdir /usr/bin/mkdir -- ln -s /bin/tar /usr/bin/tar -- ln -s /bin/ln /usr/bin/ln -- ln -s /bin/cp /usr/bin/cp -- ln -s /bin/systemctl /usr/bin/systemctl -- ln -s /bin/mount /usr/bin/mount -- ln -s /bin/bash /usr/bin/bash -- ln -s /usr/sbin/useradd /usr/bin/useradd -- systemctl disable --now resolvconf.service -- systemctl mask --now lxc-net.service -- systemctl disable --now unscd.service -- systemctl stop --now unscd.service -- /opt/azure/containers/provision.sh -- bash /tmp/dcos/dcos_install.sh ROLENAME -- /opt/azure/dcos/postinstall-cond.sh -write_files: -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - DCOS_ENVIRONMENT={{{targetEnvironment}}} - owner: root - path: /opt/azure/dcos/environment - permissions: '0644' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_SOURCE_STR' - path: /opt/azure/containers/provision_source.sh - permissions: "0744" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -- content: | - #!/bin/bash - if [ -f /opt/azure/dcos/postinstall.sh ]; then /opt/azure/dcos/postinstall.sh; fi - path: /opt/azure/dcos/postinstall-cond.sh - permissions: "0744" - owner: "root" -`) - -func dcosBstrapDcos1112CustomdataTBytes() ([]byte, error) { - return _dcosBstrapDcos1112CustomdataT, nil -} - -func dcosBstrapDcos1112CustomdataT() (*asset, error) { - bytes, err := dcosBstrapDcos1112CustomdataTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcos1.11.2.customdata.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcosbaseT = []byte(`{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - "dcosBinariesURL": { - "metadata": { - "description": "The download url for dcos/mesos windows binaries." - }, - "type": "string" - }, - "dcosBinariesVersion": { - "metadata": { - "description": "DCOS windows binaries version" - }, - "type": "string" - }, - {{template "windowsparams.t"}}, - {{end}} - {{template "dcos/dcosparams.t" .}} - {{template "dcos/bstrap/bootstrapparams.t" .}}, - {{template "masterparams.t" .}} - }, - "variables": { - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "dcos/dcosagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "dcos/bstrap/dcosmastervars.t" .}} - {{template "dcos/bstrap/bootstrapvars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosWindowsAgentResourcesVmas.t" .}}, - {{else}} - {{template "dcos/dcosWindowsAgentResourcesVmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosagentresourcesvmas.t" .}}, - {{else}} - {{template "dcos/dcosagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "dcos/bstrap/bootstrapresources.t" .}}, - {{template "dcos/bstrap/dcosmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} -`) - -func dcosBstrapDcosbaseTBytes() ([]byte, error) { - return _dcosBstrapDcosbaseT, nil -} - -func dcosBstrapDcosbaseT() (*asset, error) { - bytes, err := dcosBstrapDcosbaseTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcosbase.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcosmasterresourcesT = []byte(`{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountExhibitorName')]", - "properties": { - "accountType": "Standard_LRS" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - {{GetVNETSubnetDependencies}} - ], - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets true}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] -{{if .MasterProfile.OAuthEnabled}} - ,"loadBalancingRules": [ - { - "name": "LBRule443", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - }, - { - "name": "LBRule80", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - } - ], - "probes": [ - { - "name": "dcosMasterProbe", - "properties": { - "protocol": "Http", - "port": 5050, - "requestPath": "/health", - "intervalInSeconds": 5, - "numberOfProbes": 2 - } - } - ] -{{end}} - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('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')]", - "location": "[variables('location')]", - "name": "[variables('masterNSGName')]", - "properties": { - "securityRules": [ - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('masterNSGID')]", -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - ,"networkSecurityGroup": { - "id": "[variables('masterNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), '/extensions/bootstrapready')]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "master" - }, - "location": "[variables('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())]", - {{GetDCOSMasterCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('masterVMNamePrefix'), sub(variables('masterCount'), 1))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), sub(variables('masterCount'), 1), '/waitforleader')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "sh -c 'until ping -c1 leader.mesos;do echo waiting for leader.mesos;sleep 15;done;echo leader.mesos up'" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} -`) - -func dcosBstrapDcosmasterresourcesTBytes() ([]byte, error) { - return _dcosBstrapDcosmasterresourcesT, nil -} - -func dcosBstrapDcosmasterresourcesT() (*asset, error) { - bytes, err := dcosBstrapDcosmasterresourcesTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcosmasterresources.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcosmastervarsT = []byte(` "adminUsername": "[parameters('linuxAdminUsername')]", - "targetEnvironment": "[parameters('targetEnvironment')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", - "apiVersionLinkDefault": "2015-01-01", - "singleQuote": "'", - "doubleSingleQuote": "''", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "orchestratorVersion": "{{.OrchestratorProfile.OrchestratorVersion}}", -{{if .HasWindows}} - "windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsBackendPort": 3389, - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "dcosWindowsBootstrapURL" : "[parameters('dcosWindowsBootstrapURL')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsMasterCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), variables('singleQuote'), ' ; ')]", - - "windowsMasterCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsMasterCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1')]", -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterHttpSourceAddressPrefix": "{{.MasterProfile.HTTPSourceAddressPrefix}}", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('masterNSGName'))]", - "masterNSGName": "[concat(variables('orchestratorName'), '-master-nsg-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "apiVersionStorage": "2015-06-15", - - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location'),variables('orchestratorName')))]", - "masterStorageAccountExhibitorName": "[concat(variables('storageAccountBaseName'), 'exhb0')]", - "storageAccountType": "Standard_LRS", -{{if .HasStorageAccountDisks}} - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), 'mstr0')]", -{{end}} -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMNic": [ - "[concat(variables('masterVMNamePrefix'), 'nic-0')]", - "[concat(variables('masterVMNamePrefix'), 'nic-1')]", - "[concat(variables('masterVMNamePrefix'), 'nic-2')]", - "[concat(variables('masterVMNamePrefix'), 'nic-3')]", - "[concat(variables('masterVMNamePrefix'), 'nic-4')]", - "[concat(variables('masterVMNamePrefix'), 'nic-5')]", - "[concat(variables('masterVMNamePrefix'), 'nic-6')]" - ], - "masterVMSize": "[parameters('masterVMSize')]", - "nameSuffix": "[parameters('nameSuffix')]", - "oauthEnabled": "{{.MasterProfile.OAuthEnabled}}", - "orchestratorName": "dcos", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "[parameters('osImageSKU')]", - "osImageVersion": "[parameters('osImageVersion')]", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'))]", - "masterLbInboundNatRules": [ - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'0')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'1')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'2')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'3')]" - } - ], - [ - { - "id": "[concat(variables('masterSshInboundNatRuleIdPrefix'),'4')]" - } - ] - ] -`) - -func dcosBstrapDcosmastervarsTBytes() ([]byte, error) { - return _dcosBstrapDcosmastervarsT, nil -} - -func dcosBstrapDcosmastervarsT() (*asset, error) { - bytes, err := dcosBstrapDcosmastervarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcosmastervars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosBstrapDcosprovisionSh = []byte(`#!/bin/bash - -source /opt/azure/containers/provision_source.sh -source /opt/azure/dcos/environment - -TMPDIR="/tmp/dcos" -mkdir -p $TMPDIR - -# default dc/os component download address (Azure CDN) -packages=( - https://dcos-mirror.azureedge.net/pkg/libipset3_6.29-1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/ipset_6.29-1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/unzip_6.0-20ubuntu1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/libltdl7_2.4.6-0.1_amd64.deb - https://dcos-mirror.azureedge.net/pkg/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - https://dcos-mirror.azureedge.net/pkg/selinux-utils_2.4-3build2_amd64.deb -) - -# sha1sum checksums for @packages -sha1sums=( - f88d09688291917c8bb65682fea9f5d571ec8d6a - 807dc11f5bfa39bb4b0dc9024fc51bb309905a21 - 57ae2bb6ded1fdf91b6d518294134df1ff13fcca - 9a0f9f2769d3dc834737aa7df50aaaea369af98d - 94f6e89be6d45d9988269a237eb27c7d6a844d7f - 77bdb5847060845c0a158f567b1ddd7fa34b7236 -) - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - packages=( - http://acsengine.blob.core.chinacloudapi.cn/dcos/libipset3_6.29-1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/ipset_6.29-1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/unzip_6.0-20ubuntu1_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - http://mirror.kaiyuanshe.cn/docker-ce/linux/ubuntu/dists/xenial/pool/stable/amd64/docker-ce_17.09.0~ce-0~ubuntu_amd64.deb - http://acsengine.blob.core.chinacloudapi.cn/dcos/selinux-utils_2.4-3build2_amd64.deb - ) - ;; -esac - -len=$((${#packages[@]}-1)) -for i in $(seq 0 $len); do - retry_get_install_deb 10 10 120 ${packages[$i]} ${sha1sums[$i]} - if [ $? -ne 0 ]; then - exit 1 - fi -done - -retrycmd_if_failure 10 10 120 curl -fsSL -o $TMPDIR/dcos_install.sh http://BOOTSTRAP_IP:8086/dcos_install.sh -if [ $? -ne 0 ]; then - exit 1 -fi -`) - -func dcosBstrapDcosprovisionShBytes() ([]byte, error) { - return _dcosBstrapDcosprovisionSh, nil -} - -func dcosBstrapDcosprovisionSh() (*asset, error) { - bytes, err := dcosBstrapDcosprovisionShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/bstrap/dcosprovision.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoswindowsagentresourcesvmasT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if HasWindowsCustomImage}} - {"type": "Microsoft.Compute/images", - "apiVersion": "2017-12-01", - "name": "{{.Name}}CustomWindowsImage", - "location": "[variables('location')]", - "properties": { - "storageProfile": { - "osDisk": { - "osType": "Windows", - "osState": "Generalized", - "blobUri": "[parameters('agentWindowsSourceUrl')]", - "storageAccountType": "Standard_LRS" - } - } - } - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{GetDCOSWindowsAgentCustomData .}} - - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { -{{if HasWindowsCustomImage}} - "id": "[resourceId('Microsoft.Compute/images','{{.Name}}CustomWindowsImage')]" -{{else}} - "offer": "[variables('agentWindowsOffer')]", - "publisher": "[variables('agentWindowsPublisher')]", - "sku": "[variables('agentWindowsSKU')]", - "version": "[variables('agentWindowsVersion')]" -{{end}} - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/cse')]", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('{{.Name}}windowsAgentCustomScript')]" - } - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } -`) - -func dcosDcoswindowsagentresourcesvmasTBytes() ([]byte, error) { - return _dcosDcoswindowsagentresourcesvmasT, nil -} - -func dcosDcoswindowsagentresourcesvmasT() (*asset, error) { - bytes, err := dcosDcoswindowsagentresourcesvmasTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosWindowsAgentResourcesVmas.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoswindowsagentresourcesvmssT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if HasWindowsCustomImage}} - {"type": "Microsoft.Compute/images", - "apiVersion": "2017-12-01", - "name": "{{.Name}}CustomWindowsImage", - "location": "[variables('location')]", - "properties": { - "storageProfile": { - "osDisk": { - "osType": "Windows", - "osState": "Generalized", - "blobUri": "[parameters('agentWindowsSourceUrl')]", - "storageAccountType": "Standard_LRS" - } - } - } - }, -{{end}} -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if IsPublic .Ports}} - ,"[concat('Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'))]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "overprovision": false, - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "computerNamePrefix": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs')]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{GetDCOSWindowsAgentCustomData .}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { -{{if HasWindowsCustomImage}} - "id": "[resourceId('Microsoft.Compute/images','{{.Name}}CustomWindowsImage')]" -{{else}} - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "latest" -{{end}} - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]" - - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - }, - "extensionProfile": { - "extensions": [ - { - "name": "vmssCustomScriptExtension", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('{{.Name}}windowsAgentCustomScript')]" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } -`) - -func dcosDcoswindowsagentresourcesvmssTBytes() ([]byte, error) { - return _dcosDcoswindowsagentresourcesvmssT, nil -} - -func dcosDcoswindowsagentresourcesvmssT() (*asset, error) { - bytes, err := dcosDcoswindowsagentresourcesvmssTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosWindowsAgentResourcesVmss.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoswindowsprovisionPs1 = []byte(`<# - .SYNOPSIS - Provisions VM as a DCOS agent. - - .DESCRIPTION - Provisions VM as a DCOS agent. - - Invoke by: - -#> - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $masterCount, - - [string] - [ValidateNotNullOrEmpty()] - $firstMasterIP, - - [string] - [ValidateNotNullOrEmpty()] - $bootstrapUri, - - [parameter()] - [ValidateNotNullOrEmpty()] - $isAgent, - - [parameter()] - [ValidateNotNullOrEmpty()] - $subnet, - - [parameter()] - [AllowNull()] - $isPublic = $false, - - [string] - [AllowNull()] - $customAttrs = "", - - [string] - [AllowNull()] - $preprovisionExtensionParams = "" -) - - - - -$global:BootstrapInstallDir = "C:\AzureData" - -filter Timestamp {"$(Get-Date -Format o): $_"} - - -function -Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - - -function -Expand-ZIPFile($file, $destination) -{ - $shell = new-object -com shell.application - $zip = $shell.NameSpace($file) - foreach($item in $zip.items()) - { - $shell.Namespace($destination).copyhere($item, 0x14) - } -} - - -function -Remove-Directory($dirname) -{ - - try { - #Get-ChildItem $dirname -Recurse | Remove-Item -force -confirm:$false - # This doesn't work because of long file names - # But this does: - Invoke-Expression ("cmd /C rmdir /s /q "+$dirname) - } - catch { - # If this fails we don't want it to stop - - } -} - - -function -Check-Subnet ([string]$cidr, [string]$ip) -{ - try { - - $network, [int]$subnetlen = $cidr.Split('/') - - if ($subnetlen -eq 0) - { - $subnetlen = 8 # Default in case we get an IP addr, not CIDR - } - $a = ([IPAddress] $network) - [uint32] $unetwork = [uint32]$a.Address - - $mask = -bnot ((-bnot [uint32]0) -shl (32 - $subnetlen)) - - $a = [IPAddress]$ip - [uint32] $uip = [uint32]$a.Address - - return ($unetwork -eq ($mask -band $uip)) - } - catch { - return $false - } -} - -# -# Gets the bootstrap script from the blob store and places it in c:\AzureData - -function -Get-BootstrapScript($download_uri, $download_dir) -{ - # Get Mesos Binaries - $scriptfile = "DCOSWindowsAgentSetup.ps1" - - Write-Log "get script $download_uri/$scriptfile and put it $download_dir\$scriptfile" - - Invoke-WebRequest -Uri ($download_uri+"/"+$scriptfile) -OutFile ($download_dir+"\"+$scriptfile) -} - - -try -{ - # Set to false for debugging. This will output the start script to - # c:\AzureData\dcosProvisionScript.log, and then you can RDP - # to the windows machine, and run the script manually to watch - # the output. - Write-Log "Get the install script" - - Write-Log ("Parameters = isAgent = ["+ $isAgent + "] mastercount = ["+$MasterCount + "] First master ip= [" + $firstMasterIp+ "] boostrap URI = ["+ $bootstrapUri+"] Subnet = ["+ $subnet +"]" + " -customAttrs " + $customAttrs + " -preprovisionExtensionParms = "+ $preprovisionExtensionParams ) - - # Get the boostrap script - - Get-BootstrapScript $bootstrapUri $global:BootstrapInstallDir - - # Convert Master count and first IP to a JSON array of IPAddresses - $ip = ([IPAddress]$firstMasterIp).getAddressBytes() - [Array]::Reverse($ip) - $ip = ([IPAddress]($ip -join '.')).Address - - $MasterIP = @([IPAddress]$null) - - for ($i = 0; $i -lt $MasterCount; $i++ ) - { - $new_ip = ([IPAddress]$ip).getAddressBytes() - [Array]::Reverse($new_ip) - $new_ip = [IPAddress]($new_ip -join '.') - $MasterIP += $new_ip - - $ip++ - - } - $master_str = $MasterIP.IPAddressToString - - # Add the port numbers - if ($master_str.count -eq 1) { - $master_str += ":2181" - } - else { - for ($i = 0; $i -lt $master_str.count; $i++) - { - $master_str[$i] += ":2181" - } - } - $master_json = ConvertTo-Json $master_str - $master_json = $master_json -replace [Environment]::NewLine,"" - - $private_ip = ( Get-NetIPAddress | where { $_.AddressFamily -eq "IPv4" } | where { Check-Subnet $subnet $_.IPAddress } ) # We know the subnet we are on. Makes it easier and more robust - [Environment]::SetEnvironmentVariable("DCOS_AGENT_IP", $private_ip.IPAddress, "Machine") - - if ($isAgent) - { - $run_cmd = $global:BootstrapInstallDir+"\DCOSWindowsAgentSetup.ps1 -MasterIP '$master_json' -AgentPrivateIP "+($private_ip.IPAddress) +" -BootstrapUrl '$bootstrapUri' " - if ($isPublic) - { - $run_cmd += " -isPublic:` + "`" + `$true " - } - if ($customAttrs) - { - $run_cmd += " -customAttrs '$customAttrs'" - } - $run_cmd += ">"+$global:BootstrapInstallDir+"\DCOSWindowsAgentSetup.log 2>&1" - Write-Log "run setup script $run_cmd" - Invoke-Expression $run_cmd - Write-Log "setup script completed" - } - else # We must be deploying a master - { - $run_cmd = $global:BootstrapInstallDir+"\DCOSWindowsMasterSetup.ps1 -MasterIP '$master_json' -MasterPrivateIP $privateIP.IPAddress -BootstrapUrl '$bootstrapUri'" - Write-Log "run setup script $run_cmd" - Invoke-Expression $run_cmd - } - - PREPROVISION_EXTENSION - - Write-Log "Provisioning script succeeded" -} -catch -{ - Write-Log "Provisioning script failed" - Write-Error $_ - exit 1 -} -`) - -func dcosDcoswindowsprovisionPs1Bytes() ([]byte, error) { - return _dcosDcoswindowsprovisionPs1, nil -} - -func dcosDcoswindowsprovisionPs1() (*asset, error) { - bytes, err := dcosDcoswindowsprovisionPs1Bytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosWindowsProvision.ps1", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosagentresourcesvmasT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" -{{if HasBootstrap}} - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), /extensions/bootstrapready')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - {{GetDCOSAgentCustomData .}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - - } - }, - "type": "Microsoft.Compute/virtualMachines" - } -`) - -func dcosDcosagentresourcesvmasTBytes() ([]byte, error) { - return _dcosDcosagentresourcesvmasT, nil -} - -func dcosDcosagentresourcesvmasT() (*asset, error) { - bytes, err := dcosDcosagentresourcesvmasTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosagentresourcesvmas.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosagentresourcesvmssT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}NSGName')]", - "properties": { - "securityRules": [ - {{GetSecurityRules .Ports}} - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, -{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "loop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ -{{if .IsCustomVNET}} - "[concat('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" -{{else}} - "[variables('vnetID')]" -{{end}} -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if IsPublic .Ports}} - ,"[concat('Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'))]" -{{end}} -{{if HasBootstrap}} - ,"[concat('Microsoft.Compute/virtualMachines/', variables('bootstrapVMName'), '/extensions/bootstrapready')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), 'vmss')]", - "orchestratorName": "dcos", - "orchestratorVersion": "[variables('orchestratorVersion')]", - "orchestratorNode": "agent" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'vmss')]", - "properties": { - "overprovision": false, - "upgradePolicy": { - "mode": "Manual" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { -{{if .IsCustomVNET}} - "networkSecurityGroup": { - "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('{{.Name}}NSGName'))]" - }, -{{end}} - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", - {{GetDCOSAgentCustomData .}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadOnly", - "createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk')]" - - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } -`) - -func dcosDcosagentresourcesvmssTBytes() ([]byte, error) { - return _dcosDcosagentresourcesvmssT, nil -} - -func dcosDcosagentresourcesvmssT() (*asset, error) { - bytes, err := dcosDcosagentresourcesvmssTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosagentresourcesvmss.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosagentvarsT = []byte(` "{{.Name}}Count": "[parameters('{{.Name}}Count')]", - "{{.Name}}NSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('{{.Name}}NSGName'))]", - "{{.Name}}NSGName": "[concat(variables('orchestratorName'), '-{{.Name}}-nsg-', variables('nameSuffix'))]", -{{if .IsWindows}} - - "winResourceNamePrefix" : "[substring(variables('nameSuffix'), 0, 5)]", - {{if IsPublic .Ports}} - "{{.Name}}VMNamePrefix": "[concat('wp', variables('winResourceNamePrefix'), add(900,variables('{{.Name}}Index')))]", - "{{.Name}}windowsAgentCustomAttributes": "[concat(' -customAttrs ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentCustomNodeAttributes . }}', variables('doubleSingleQuote') )]", - "{{.Name}}windowsAgentCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'), '-subnet ', variables('{{.Name}}Subnet'), ' -MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), ' -bootstrapUri ', '\"', variables('dcosWindowsBootstrapURL'), '\"', ' -isAgent $true -isPublic $true ', variables('{{.Name}}windowsAgentCustomAttributes'), ' -preprovisionExtensionParams ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentPreprovisionParameters .}}', variables('doubleSingleQuote'), variables('singleQuote'), ' ; ')]", - {{else}} - "{{.Name}}VMNamePrefix": "[concat('w', variables('winResourceNamePrefix'), add(900,variables('{{.Name}}Index')))]", - "{{.Name}}windowsAgentCustomAttributes": "[concat(' -customAttrs ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentCustomNodeAttributes . }}', variables('doubleSingleQuote') )]", - "{{.Name}}windowsAgentCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'), '-subnet ', variables('{{.Name}}Subnet'), ' -MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), ' -bootstrapUri ', '\"', variables('dcosWindowsBootstrapURL'), '\"', ' -isAgent $true -isPublic $false ', variables('{{.Name}}windowsAgentCustomAttributes'), ' -preprovisionExtensionParams ', variables('doubleSingleQuote'), '{{GetDCOSWindowsAgentPreprovisionParameters .}}', variables('doubleSingleQuote'), variables('singleQuote'), ' ; ')]", - {{end}} - - "{{.Name}}windowsAgentCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('{{.Name}}windowsAgentCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1; exit $LASTEXITCODE')]", - -{{else}} - "{{.Name}}VMNamePrefix": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'), '-')]", -{{end}} - - "{{.Name}}VMSize": "[parameters('{{.Name}}VMSize')]", - "{{.Name}}VMSizeTier": "[split(parameters('{{.Name}}VMSize'),'_')[0]]", -{{if .IsAvailabilitySets}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[add(div(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),1)))]", - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),variables('{{.Name}}Index'))]", - {{end}} - "{{.Name}}AvailabilitySet": "[concat('{{.Name}}-availabilitySet-', variables('nameSuffix'))]", - "{{.Name}}Offset": "[parameters('{{.Name}}Offset')]", -{{else}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", - {{end}} -{{end}} -{{if .IsCustomVNET}} - "{{.Name}}VnetSubnetID": "[parameters('{{.Name}}VnetSubnetID')]", -{{else}} - "{{.Name}}Subnet": "[parameters('{{.Name}}Subnet')]", - "{{.Name}}SubnetName": "[concat(variables('orchestratorName'), '-{{.Name}}Subnet')]", - "{{.Name}}VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('{{.Name}}SubnetName'))]", -{{end}} -{{if IsPublic .Ports}} - "{{.Name}}EndpointDNSNamePrefix": "[tolower(parameters('{{.Name}}EndpointDNSNamePrefix'))]", - "{{.Name}}IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('{{.Name}}EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "{{.Name}}LbBackendPoolName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('{{.Name}}LbName'))]", - "{{.Name}}LbIPConfigID": "[concat(variables('{{.Name}}LbID'),'/frontendIPConfigurations/', variables('{{.Name}}LbIPConfigName'))]", - "{{.Name}}LbIPConfigName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - {{if .IsWindows}} - "{{.Name}}WindowsRDPNatRangeStart": 3389, - "{{.Name}}WindowsRDPEndRangeStop": "[add(variables('{{.Name}}WindowsRDPNatRangeStart'), add(variables('{{.Name}}Count'),variables('{{.Name}}Count')))]", - - {{end}} -{{end}} -{{if HasPrivateRegistry}} - "registry" : "[tolower(parameters('registry'))]", - "registryKey" : "[parameters('registryKey')]", -{{else}} - "registry" : "", - "registryKey" : "", -{{end}} -`) - -func dcosDcosagentvarsTBytes() ([]byte, error) { - return _dcosDcosagentvarsT, nil -} - -func dcosDcosagentvarsT() (*asset, error) { - bytes, err := dcosDcosagentvarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosagentvars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosbaseT = []byte(`{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - "dcosBinariesURL": { - "metadata": { - "description": "The download url for dcos/mesos windows binaries." - }, - "type": "string" - }, - "dcosBinariesVersion": { - "metadata": { - "description": "DCOS windows binaries version" - }, - "type": "string" - }, - {{template "windowsparams.t"}}, - {{end}} - {{template "dcos/dcosparams.t" .}} - {{template "masterparams.t" .}} - }, - "variables": { - "dcosRepositoryURL": "[parameters('dcosRepositoryURL')]", - "dcosClusterPackageListID": "[parameters('dcosClusterPackageListID')]", - "dcosProviderPackageID": "[parameters('dcosProviderPackageID')]", - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "dcos/dcosagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "dcos/dcosmastervars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosWindowsAgentResourcesVmas.t" .}}, - {{else}} - {{template "dcos/dcosWindowsAgentResourcesVmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "dcos/dcosagentresourcesvmas.t" .}}, - {{else}} - {{template "dcos/dcosagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "dcos/dcosmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} -`) - -func dcosDcosbaseTBytes() ([]byte, error) { - return _dcosDcosbaseT, nil -} - -func dcosDcosbaseT() (*asset, error) { - bytes, err := dcosDcosbaseTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosbase.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata110T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdc-gpt ];then echo DCOS-5890;parted -s /dev/sdc mklabel - gpt&&touch /var/lib/sdc-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdd-gpt ];then echo DCOS-5890;parted -s /dev/sdd mklabel - gpt&&touch /var/lib/sdd-gpt;fi" -- bash -c "if [ ! -f /var/lib/sde-gpt ];then echo DCOS-5890;parted -s /dev/sde mklabel - gpt&&touch /var/lib/sde-gpt;fi" -- bash -c "if [ ! -f /var/lib/sdf-gpt ];then echo DCOS-5890;parted -s /dev/sdf mklabel - gpt&&touch /var/lib/sdf-gpt;fi" -- bash -c "mkdir -p /dcos/volume{0,1,2,3}" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt - /dev/sdc: - layout: true - overwrite: true - table_type: gpt - /dev/sdd: - layout: true - overwrite: true - table_type: gpt - /dev/sde: - layout: true - overwrite: true - table_type: gpt - /dev/sdf: - layout: true - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -- device: /dev/sdc1 - filesystem: ext4 - overwrite: true -- device: /dev/sdd1 - filesystem: ext4 - overwrite: true -- device: /dev/sde1 - filesystem: ext4 - overwrite: true -- device: /dev/sdf1 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -- - /dev/sdc1 - - /dcos/volume0 -- - /dev/sdd1 - - /dcos/volume1 -- - /dev/sde1 - - /dcos/volume2 -- - /dev/sdf1 - - /dcos/volume3 -runcmd: PREPROVISION_EXTENSION -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["adminrouter--1166a3736442e7963a68d1d644bf5f54ca3cb01d", "avro-cpp--9cb0ee14e3cd5bbdb171efcc72a84d16862ea02d", - "boost-libs--8d515c2f703c666ae1b6c5ccc35cc0f8fa36677f", "bootstrap--c1bc86593e212cf9fe83db2246bacd129a6b3adc", - "boto--3890cb2817c00b874ba033abe784b5b343caa3c7", "check-time--79e3f6ab99125471e1d94d5f6bc0fea88446831c", - "cni--7a8572e385c3f5262945c52c8003d1bbb22cf7aa", "cosmos--e84c5bf3259405df90d682536ba445cc4839a324", - "curl--17866a8ae9305826aa5f357a09db2c1f2b2c2ad0", "dcos-checks--8fd33919e6f163dba1bd13e4c7e4e0523919a719", - "dcos-cni--12a77c1e9bebd4cbd600524a864c2bd8483330d3", "dcos-config--setup_{{{dcosProviderPackageID}}}", - "dcos-diagnostics--e3b557b0ec8e98617d0cd0fdf136ef9dded96316", "dcos-history--23de88ddc1a5f9018dd11b279c5be6a768a18de4", - "dcos-image--df630d8e930d6650ce3d0ade519660142233d862", "dcos-image-deps--81d23d00b1acddb316c9b15fd8499c2b10f6b697", - "dcos-integration-test--9ec173650d4e73ba494603324e7583d23970e4b8", "dcos-log--d2af4b1a47d3755a51823e95fbc6c366cf0f9269", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--2a26c0b50b0b6564f86c48d50aa86f681c9af93c", - "dcos-oauth--445bb1388670981c6acc667b2529fc32d4c1fbd4", "dcos-signal--4366023212ea49a64c5c9aef1965e5a3133c4b61", - "dcos-test-utils--1066d896d25f4c1e3f6d9a5e7f9c1c6e8c675bb7", "dcos-ui--cc2e3d26537ea190efacd6f899dd4cc2210d45b7", - "dnspython--0be432372a3820eafcfa66975943c9536dbe1164", "docker-gc--89f5535aea154dca504f84cd60eac6f61836aef9", - "dvdcli--ee85411e3cb9f0988ed54b5cc0789172b887f12f", "erlang--d693172f6f033707c7f07ff78fc18ac543d66b41", - "exhibitor--c3e48bbae19c0ed9c30d7f9396305d1e77130658", "flask--6d0f985ad677e8422c7190cbe207424acd813c3b", - "java--ce5ff19502fca31eaf4a9af86d50a10a8c212a5b", "libevent--05dc18bc0ab7434b2738318c5ebaa2e61a311f50", - "libffi--0e5b99b94f296b2a9a1b75e9fe5f74f5446f5e9b", "libsodium--e7056355f1fe160ade83aac0d11352a2bf3844e6", - "logrotate--877aece1fd506af3b9167b6938c316adfa79d4f5", "marathon--accdc43bafeca02da1be340baba4b55011eadf63", - "mesos--0677ce2b7d2e8c45091f6481884542f1f765c3d5", "mesos-dns--600da87080b7634f2380594499004a7ff0b34662", - "mesos-modules--1f5c4860450949db92ed27326c3146526041e681", "metronome--2ec6f56be44ed822e7228cb66c4dae6a78345789", - "navstar--c66f92f01d837433de3e2b19d221c64d26cc54b1", "ncurses--030fd6b08ed46a7ecce001c36901f5b4ad5d2af5", - "octarine--4e37c062d2f145f9c2ce01d30dadf72c2aac5c4a", "openssl--44777d19d54a3c33cc19543f2201cb20bf085d98", - "pkgpanda-api--30cb1e68f92ed5d4b89d57ca526f8a69b44132c8", "pkgpanda-role--612a6734567cc0c7c2ae1d508f03172f4bc7beed", - "pytest--5e26c8ed9fd2c325672d56fe558299bfbd0f7018", "python--5a4285ff7296548732203950bf73d360ea67f6ab", - "python-azure-mgmt-resource--26cbe8349f3fe139f7dc8bff7f0cb735382314fc", "python-cryptography--0d83d8afef4a8faddf0d8b713619d9d76e510a9e", - "python-dateutil--519201adebeba186049ecd79a9f358f614173b10", "python-docopt--0af809c220a922f7f6c58f15beafebaa043477c7", - "python-gunicorn--2ceb53716237da0736f67f4004682083f6ac68e1", "python-isodate--c9efb5859a0cfb06d82f25220cc5b387914af85d", - "python-jinja2--601a1443aa4c649ab1da10c2a6d7a4477a263fb3", "python-kazoo--0ff8e6ef528f58c6f36f0a9df6dc27d3871e5c27", - "python-markupsafe--1388c95920b4eb920c7a753d620a1ad07fc8b64d", "python-passlib--4691268be760073188b555dc436f836c6706b37a", - "python-pyyaml--d8a775d6e43da5eb239af5cccdf1d3fceeb0335f", "python-requests--db0474fab16019ba29a609a354285f221c1a2859", - "python-retrying--37dd25bf69bcbefe0c50139085d6bb2e22ccf439", "python-tox--322c468e2a75c5b143cb06af460b5e801ee34342", - "rexray--da7f17f8a4b772c0bac3f8d289a08abd4ff272b4", "six--93734bac9907087744815f9cb5b6152e9a198fae", - "spartan--c3d8005b1340bcbc3a00496861745b2d0bb2d697", "strace--9be573456909e3931a890785eb6474af7e0dcce4", - "teamcity-messages--073793b16cf369e58ebdb6348b93ed14b0e5e59a", "toybox--0c49f879bfe2f99e6f99b397136894fa5096fa0c"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-docker: - disabled: true - service: vfs - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://mesosphere.blob.core.windows.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/dockerd --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: 'PROVISION_STR' - path: /opt/azure/containers/provision.sh - permissions: "0744" - owner: "root" -`) - -func dcosDcoscustomdata110TBytes() ([]byte, error) { - return _dcosDcoscustomdata110T, nil -} - -func dcosDcoscustomdata110T() (*asset, error) { - bytes, err := dcosDcoscustomdata110TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata110.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata184T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/testing - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: 'BOOTSTRAP_ID=5b4aa43610c57ee1d60b4aa0751a1fb75824c083 - - ' - owner: root - path: /etc/mesosphere/setup-flags/bootstrap-id - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - EnvironmentFile=/etc/mesosphere/setup-flags/bootstrap-id - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 - -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -`) - -func dcosDcoscustomdata184TBytes() ([]byte, error) { - return _dcosDcoscustomdata184T, nil -} - -func dcosDcoscustomdata184T() (*asset, error) { - bytes, err := dcosDcoscustomdata184TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata184.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata187T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/stable - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -`) - -func dcosDcoscustomdata187TBytes() ([]byte, error) { - return _dcosDcoscustomdata187T, nil -} - -func dcosDcoscustomdata187T() (*asset, error) { - bytes, err := dcosDcoscustomdata187TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata187.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata188T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 50 - - 50 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: 'https://dcosio.azureedge.net/dcos/stable - - ' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: 'DCOS_ENVIRONMENT={{{targetEnvironment}}} - - ' - owner: root - path: /etc/mesosphere/setup-flags/dcos-deploy-environment - permissions: '0644' -- content: '["dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-metadata--setup_{{{dcosProviderPackageID}}}"] - - ' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: '[Journal] - - MaxLevelConsole=warning - - RateLimitInterval=1s - - RateLimitBurst=20000 - - ' - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: "rexray:\n loglevel: info\n modules:\n default-admin:\n host:\ - \ tcp://127.0.0.1:61003\n default-docker:\n disabled: true\n" - path: /etc/rexray/config.yml - permissions: '0644' -- content: '[Unit] - - After=network-online.target - - Wants=network-online.target - - [Service] - - Type=oneshot - - Environment=DEBIAN_FRONTEND=noninteractive - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/lib/mesos/dl/d.deb || ((try>9));do - echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl - restart docker.socket" - - ' - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: '[Service] - - Restart=always - - StartLimitInterval=0 - - RestartSec=15 - - ExecStartPre=-/sbin/ip link del docker0 - - ExecStart= - - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - - ' - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: '[Unit] - - PartOf=docker.service - - [Socket] - - ListenStream=/var/run/docker.sock - - SocketMode=0660 - - SocketUser=root - - SocketGroup=docker - - ListenStream=2375 - - BindIPv6Only=both - - [Install] - - WantedBy=sockets.target - - ' - path: /etc/systemd/system/docker.socket - permissions: '0644' -- content: '[Unit] - - Requires=dcos-setup.service - - After=dcos-setup.service - - [Service] - - Type=oneshot - - EnvironmentFile=/etc/environment - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - - ' - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: 'MESOS_CLUSTER={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/mesos-master-provider -- content: 'ADMINROUTER_ACTIVATE_AUTH_MODULE={{{oauthEnabled}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/adminrouter.env -- content: '["'', DCOSCUSTOMDATAPUBLICIPSTR''"] - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/master_list -- content: 'EXHIBITOR_BACKEND=AZURE - - AZURE_CONTAINER=dcos-exhibitor - - AZURE_PREFIX={{{masterPublicIPAddressName}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor -- content: 'com.netflix.exhibitor.azure.account-name={{{masterStorageAccountExhibitorName}}} - - com.netflix.exhibitor.azure.account-key='', listKeys(resourceId(''Microsoft.Storage/storageAccounts'', - variables(''masterStorageAccountExhibitorName'')), ''2015-06-15'').key1,'' - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/exhibitor.properties -- content: '{"uiConfiguration":{"plugins":{"banner":{"enabled":false,"backgroundColor":"#1E232F","foregroundColor":"#FFFFFF","headerTitle":null,"headerContent":null,"footerContent":null,"imagePath":null,"dismissible":null},"branding":{"enabled":false},"external-links": - {"enabled": false}, - - - "authentication":{"enabled":false}, - - - "oauth":{"enabled":{{{oauthEnabled}}},"authHost":"https://dcos.auth0.com"}, - - - - "tracking":{"enabled":false}}}} - - ' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/etc/ui-config.json -- content: '{}' - path: /etc/mesosphere/setup-packages/dcos-provider-azure--setup/pkginfo.json -- content: '[Unit] - - Before=dcos.target - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - - ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh - - ' - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Download DC/OS to this host. - - After=network-online.target - - Wants=network-online.target - - ConditionPathExists=!/opt/mesosphere/ - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o /var/lib/mesos/dl/bootstrap.tar.xz {{{dcosBootstrapURL}}} - - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - - ExecStart=/usr/bin/tar -axf /var/lib/mesos/dl/bootstrap.tar.xz -C /opt/mesosphere - - ExecStartPost=-/usr/bin/rm -f /var/lib/mesos/dl/bootstrap.tar.xz - - ' - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: '[Unit] - - Description=Pkgpanda: Specialize DC/OS for this host. - - Requires=dcos-download.service - - After=dcos-download.service - - [Service] - - Type=oneshot - - StandardOutput=journal+console - - StandardError=journal+console - - EnvironmentFile=/opt/mesosphere/environment - - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - - [Install] - - WantedBy=multi-user.target - - ' - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -`) - -func dcosDcoscustomdata188TBytes() ([]byte, error) { - return _dcosDcoscustomdata188T, nil -} - -func dcosDcoscustomdata188T() (*asset, error) { - bytes, err := dcosDcoscustomdata188TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata188.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata190T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- sed -i "s/^Port 22$/Port 22\nPort 2222/1" /etc/ssh/sshd_config -- service ssh restart -- /opt/azure/containers/setup_ephemeral_disk.sh -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} - -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["3dt--7847ebb24bf6756c3103902971b34c3f09c3afbd", "adminrouter--0493a6fdaed08e1971871818e194aa4607df4f09", - "avro-cpp--760c214063f6b038b522eaf4b768b905fed56ebc", "boost-libs--2015ccb58fb756f61c02ee6aa05cc1e27459a9ec", - "bootstrap--59a905ecee27e71168ed44cefda4481fb76b816d", "boto--6344d31eef082c7bd13259b17034ea7b5c34aedf", - "check-time--be7d0ba757ec87f9965378fee7c76a6ee5ae996d", "cni--e48337da39a8cd379414acfe0da52a9226a10d24", - "cosmos--20decef90f0623ed253a12ec4cf5c148b18d8249", "curl--fc3486c43f98e63f9b12675f1356e8fe842f26b0", - "dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-history--77b0e97d7b25c8bedf8f7da0689cac65b83e3813", - "dcos-image--bda6a02bcb2eb21c4218453a870cc584f921a800", "dcos-image-deps--83584fd868e5b470f7cf754424a9a75b328e9b68", - "dcos-integration-test--c28bcb2347799dca43083f55e4c7b28503176f9c", "dcos-log--4d630df863228f38c6333e44670b4c4b20a74832", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--23ee2f89c58b1258bc959f1d0dd7debcbb3d79d2", - "dcos-oauth--0079529da183c0f23a06d2b069721b6fa6cc7b52", "dcos-signal--1bcd3b612cbdc379380dcba17cdf9a3b6652d9dc", - "dcos-ui--d4afd695796404a5b35950c3daddcae322481ac4", "dnspython--0f833eb9a8abeba3179b43f3a200a8cd42d3795a", - "docker-gc--59a98ed6446a084bf74e4ff4b8e3479f59ea8528", "dvdcli--5374dd4ffb519f1dcefdec89b2247e3404f2e2e3", - "erlang--a9ee2530357a3301e53056b36a93420847b339a3", "exhibitor--72d9d8f947e5411eda524d40dde1a58edeb158ed", - "flask--26d1bcdb2d1c3dcf1d2c03bc0d4f29c86d321b21", "java--cd5e921ce66b0d3303883c06d73a657314044304", - "libevent--208be855d2be29c9271a7bd6c04723ff79946e02", "libffi--83ce3bd7eda2ef089e57efd2bc16c144d5a1f094", - "libsodium--9ff915db08c6bba7d6738af5084e782b13c84bf8", "logrotate--7f7bc4416d3ad101d0c5218872858483b516be07", - "marathon--bfb24f7f90cb3cd52a1cb22a07caafa5013bba21", "mesos--aaedd03eee0d57f5c0d49c74ff1e5721862cad98", - "mesos-dns--0401501b2b5152d01bfa84ff6d007fdafe414b16", "mesos-modules--311849eaae42696b8a7eefe86b9ab3ebd9bd48f5", - "metronome--467e4c64f804dbd4cd8572516e111a3f9298c10d", "navstar--1128db0234105a64fb4be52f4453cd6aa895ff30", - "ncurses--d889894b71aa1a5b311bafef0e85479025b4dacb", "octarine--e86d3312691b12523280d56f6260216729aaa0ad", - "openssl--b01a32a42e3ccba52b417276e9509a441e1d4a82", "pkgpanda-api--541feb8a8be58bdde8fecf1d2e5bfa0515f5a7d0", - "pkgpanda-role--f8a749a4a821476ad2ef7e9dd9d12b6a8c4643a4", "pytest--78aee3e58a049cdab0d266af74f77d658b360b4f", - "python--b7a144a49577a223d37d447c568f51330ee95390", "python-azure-mgmt-resource--03c05550f43b0e7a4455c33fe43b0deb755d87f0", - "python-cryptography--4184767c68e48801dd394072cb370c610a05029d", "python-dateutil--fdc6ff929f65dd0918cf75a9ad56704683d31781", - "python-docopt--beba78faa13e5bf4c52393b4b82d81f3c391aa65", "python-gunicorn--a537f95661fb2689c52fe12510eb0d01cb83af60", - "python-isodate--40d378c688e6badfd16676dd8b51b742bfebc8d5", "python-jinja2--7450f5ae5a822f63f7a58c717207be0456df51ed", - "python-kazoo--cb7ce13a1068cd82dd84ea0de32b529a760a4bdd", "python-markupsafe--dd46d2a3c58611656a235f96d4adc51b2a7a590e", - "python-passlib--802ec3605c0b82428fedba60983b1bafaa036bb8", "python-pyyaml--81dd44cc4a24db7cefa7016c6586a131acf279c3", - "python-requests--1b2cadbd3811cc0c2ee235ce927e13ea1d6af41d", "python-retrying--eb7b8bac133f50492b1e1349cbe77c3e38bd02c3", - "python-tox--07244f8a939a10353634c952c6d88ec4a3c05736", "rexray--869621bb411c9f2a793ea42cdfeed489e1972aaa", - "six--f06424b68523c4dfa2a7c3e7475d479f3d361e42", "spartan--9cc57a3d55452b905d90e3201f56913140914ecc", - "strace--7d01796d64994451c1b2b82d161a335cbe90569b", "teamcity-messages--e623a4d86eb3a8d199cefcc240dd4c5460cb2962", - "toybox--f235594ab8ea9a2864ee72abe86723d76f92e848"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-admin: - host: tcp://127.0.0.1:61003 - default-docker: - disabled: true - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://az837203.vo.msecnd.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - LimitNOFILE=16384 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' - content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -- content: | - #!/bin/bash - # Check the partitions on /dev/sdb created by cloudinit and force a detach and - # reformat of the parition. After which, all will be remounted. - EPHEMERAL_DISK="/dev/sdb" - PARTITIONS=` + "`" + `fdisk -l $EPHEMERAL_DISK | grep "^$EPHEMERAL_DISK" | cut -d" " -f1 | sed "s~$EPHEMERAL_DISK~~"` + "`" + ` - if [ -n "$PARTITIONS" ]; then - for f in $PARTITIONS; do - df -k | grep "/dev/sdb$f" - if [ $? -eq 0 ]; then - umount -f /dev/sdb$f - fi - mkfs.ext4 /dev/sdb$f - done - mount -a - fi - # If there is a /var/tmp partition on the ephemeral disk, create a symlink such - # that the /var/log/mesos and /var/log/journal placed on the ephemeral disk. - VAR_TMP_PARTITION=` + "`" + `df -P /var/tmp | tail -1 | cut -d" " -f 1` + "`" + ` - echo $VAR_TMP_PARTITION | grep "^$EPHEMERAL_DISK" - if [ $? -eq 0 ]; then - # Handle the /var/log/mesos directory - mkdir -p /var/tmp/log/mesos - if [ -d "/var/log/mesos" ]; then - cp -rp /var/log/mesos/* /var/tmp/log/mesos/ - rm -rf /var/log/mesos - fi - ln -s /var/tmp/log/mesos /var/log/mesos - # Handle the /var/log/journal direcotry - mkdir -p /var/tmp/log/journal - if [ -d "/var/log/journal" ]; then - cp -rp /var/log/journal/* /var/tmp/log/journal/ - rm -rf /var/log/journal - fi - ln -s /var/tmp/log/journal /var/log/journal - fi - path: "/opt/azure/containers/setup_ephemeral_disk.sh" - permissions: "0744" - owner: "root"`) - -func dcosDcoscustomdata190TBytes() ([]byte, error) { - return _dcosDcoscustomdata190T, nil -} - -func dcosDcoscustomdata190T() (*asset, error) { - bytes, err := dcosDcoscustomdata190TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata190.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcoscustomdata198T = []byte(`bootcmd: -- bash -c "if [ ! -f /var/lib/sdb-gpt ];then echo DCOS-5890;parted -s /dev/sdb mklabel - gpt;touch /var/lib/sdb-gpt;fi" -disk_setup: - ephemeral0: - layout: - - 45 - - 45 - - 10 - overwrite: true - table_type: gpt -fs_setup: -- device: ephemeral0.1 - filesystem: ext4 - overwrite: true -- device: ephemeral0.2 - filesystem: ext4 - overwrite: true -- device: ephemeral0.3 - filesystem: ext4 - overwrite: true -mounts: -- - ephemeral0.1 - - /var/lib/mesos -- - ephemeral0.2 - - /var/lib/docker -- - ephemeral0.3 - - /var/tmp -runcmd: PREPROVISION_EXTENSION -- /usr/lib/apt/apt.systemd.daily -- echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local # mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -- - ln - - -s - - /bin/rm - - /usr/bin/rm -- - ln - - -s - - /bin/mkdir - - /usr/bin/mkdir -- - ln - - -s - - /bin/tar - - /usr/bin/tar -- - ln - - -s - - /bin/ln - - /usr/bin/ln -- - ln - - -s - - /bin/cp - - /usr/bin/cp -- - ln - - -s - - /bin/systemctl - - /usr/bin/systemctl -- - ln - - -s - - /bin/mount - - /usr/bin/mount -- - ln - - -s - - /bin/bash - - /usr/bin/bash -- - ln - - -s - - /usr/sbin/useradd - - /usr/bin/useradd -- - systemctl - - disable - - --now - - resolvconf.service -- - systemctl - - mask - - --now - - lxc-net.service -- - systemctl - - disable - - --now - - unscd.service -- - systemctl - - stop - - --now - - unscd.service -- sed -i "s/^Port 22$/Port 22\nPort 2222/1" /etc/ssh/sshd_config -- service ssh restart -- /opt/azure/containers/setup_ephemeral_disk.sh -- - tar - - czf - - /etc/docker.tar.gz - - -C - - /tmp/xtoph - - .docker -- - rm - - -rf - - /tmp/xtoph -- /opt/azure/containers/provision.sh -- - cp - - -p - - /etc/resolv.conf - - /tmp/resolv.conf -- - rm - - -f - - /etc/resolv.conf -- - cp - - -p - - /tmp/resolv.conf - - /etc/resolv.conf -- - systemctl - - start - - dcos-docker-install.service -- - systemctl - - start - - dcos-config-writer.service -- - systemctl - - restart - - systemd-journald.service -- - systemctl - - restart - - docker.service -- - systemctl - - start - - dcos-link-env.service -- - systemctl - - enable - - dcos-setup.service -- - systemctl - - --no-block - - start - - dcos-setup.service -write_files: -- content: '{{{dcosRepositoryURL}}} - -' - owner: root - path: /etc/mesosphere/setup-flags/repository-url - permissions: '0644' -- content: '["3dt--4eb6a10d16421bc87cb6e93ac97746f36aded925", "adminrouter--31f3f6390c8ef79a2774f42390d6340a24d67f08", - "avro-cpp--6194e9a67928c357c1c1b2bb409536ceef888e04", "boost-libs--2015ccb58fb756f61c02ee6aa05cc1e27459a9ec", - "bootstrap--d50592de9bf45937df7bcc7008e84a8739239c99", "boto--471853efd730e52e4ed7bfb890587432a576982a", - "check-time--be7d0ba757ec87f9965378fee7c76a6ee5ae996d", "cni--e48337da39a8cd379414acfe0da52a9226a10d24", - "cosmos--74e0339c91c278622d9f45b5fb0771872f443140", "curl--e7fd5880e4f94db05692d7e43279d8fe6348cb21", - "dcos-config--setup_{{{dcosProviderPackageID}}}", "dcos-history--787ce2fd81cb7469590c12951033f0482e879d2a", - "dcos-image--078703170a2f218447abea4b1be00b7431b340f1", "dcos-image-deps--5512ff49cdbba7f404759a5751a4ab1eae44c677", - "dcos-integration-test--bad12974ed31ace44432ad9a451c5b5dc3e20e81", "dcos-log--4d630df863228f38c6333e44670b4c4b20a74832", - "dcos-metadata--setup_{{{dcosProviderPackageID}}}", "dcos-metrics--e65d65e1b65335efdaa6bf7609a671f4288e7af9", - "dcos-oauth--23d8ca77549c1ac6087c11c9f7e8f8a4fddfc948", "dcos-signal--5633dc8da7e864cb34e3d29ed13e6756c7a6df94", - "dcos-ui--6f4af319cf4dd9bb8366de22ec37775beaa96747", "dnspython--1118f0ffaa60e6a779d4614f0ed692d215005f0e", - "docker-gc--9737ec72de5d1edc71175028762f06fe22c8a48c", "dvdcli--5374dd4ffb519f1dcefdec89b2247e3404f2e2e3", - "erlang--984871e11f69e37aeb76a471d4a4b90e93fdf355", "exhibitor--300da0c612afcf27541dbc681da5de3a6408de7e", - "flask--2936647fa917d16ee289d34e61fd1afcc49157b5", "java--091eb5a0f3dcbd7762a43e84c3e2d6aac8891111", - "libevent--468f4ae789f659e452e8356a9d2309c4f41135a8", "libffi--83ce3bd7eda2ef089e57efd2bc16c144d5a1f094", - "libsodium--9ff915db08c6bba7d6738af5084e782b13c84bf8", "logrotate--7f7bc4416d3ad101d0c5218872858483b516be07", - "marathon--99d0cbc65da6be31872878174f3a28fa63d0fa34", "mesos--0c992033b8d43e00dc69f0c548c826d573c82642", - "mesos-dns--ca591a18f9b010999106285fedddd010606c0d06", "mesos-modules--4c176c23a4fd3670d059fec55e2d4c8c7dbf1f6c", - "metronome--138ec50cd4da05bce74b6cd2c84ae873c2bd67ab", "navstar--fdf7e79fdf210548d183badfde00d60c1a540257", - "ncurses--d889894b71aa1a5b311bafef0e85479025b4dacb", "octarine--4e37c062d2f145f9c2ce01d30dadf72c2aac5c4a", - "openssl--ef04a6f76f6e5e194c783bc129fdabad16816aff", "pkgpanda-api--220e45fbd93403f8b4fd7f9c8c3d5178aff6e34b", - "pkgpanda-role--f8a749a4a821476ad2ef7e9dd9d12b6a8c4643a4", "pytest--63ab7e9520e4da70202b81076880fcdf2c1236cf", - "python--3c96ab7f21312f4d7d54a9b901cfe6382aa66b8a", "python-azure-mgmt-resource--2313114eec2adcb37ef61082cd2cfdceabf5c21e", - "python-cryptography--39ee7d59411569700f3343e64c32e9711a83decc", "python-dateutil--d098c1933ca6d754a90734afd366d556cc3107a8", - "python-docopt--85e7726dbb777584a9f5d4dd7bd58ed8ca5466d8", "python-gunicorn--bd425f55abd9236b5ead7e68a3c40c39b8d75bb7", - "python-isodate--9a15007db453e141892966ebf50a9175ee0ba08b", "python-jinja2--9fbc35d1405f06f1959c54629ab7d443cef79076", - "python-kazoo--050358610274815ebacabcdfca874729e53f4e0b", "python-markupsafe--09c65e6cdedd4783137a203cbc1b5a64ef3124eb", - "python-passlib--27056b95ad1a067b7992402e679c6260e673a554", "python-pyyaml--5be319fd73348558d69a03fb6dcb134e9b7f4c48", - "python-requests--63e1c3f4f03efc4607a4c20c5492026a9af7a9c7", "python-retrying--692b1a298d22436e25b2d14fc4f980be444adbe7", - "python-tox--7962137d89dae9eb45dd80b0ea59731fa3f5bbc9", "rexray--f07795e2c10f9a1a27de9d8e67ab171029db2e1d", - "six--9229b1a9d7d57bc086fa50f73fc9a753d9a4605d", "spartan--3dc1785bf698e65ceb2fecf26b2a439de219269f", - "strace--7d01796d64994451c1b2b82d161a335cbe90569b", "teamcity-messages--d13bc3f52ed0e30de3a71d86ff8718984b60b65f", - "toybox--c0e85790eb8aaeefe5037b053c2fcd140ab800a4"] - -' - owner: root - path: /etc/mesosphere/setup-flags/cluster-packages.json - permissions: '0644' -- content: | - [Journal] - MaxLevelConsole=warning - RateLimitInterval=1s - RateLimitBurst=20000 - owner: root - path: /etc/systemd/journald.conf.d/dcos.conf - permissions: '0644' -- content: | - rexray: - loglevel: info - modules: - default-admin: - host: tcp://127.0.0.1:61003 - default-docker: - disabled: true - path: /etc/rexray/config.yml - permissions: '0644' -- content: | - [Unit] - After=network-online.target - Wants=network-online.target - [Service] - Type=oneshot - Environment=DEBIAN_FRONTEND=noninteractive - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl -fLsSv --retry 20 -Y 100000 -y 60 -o /var/tmp/d.deb https://az837203.vo.msecnd.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb - ExecStart=/usr/bin/bash -c "try=1;until dpkg -D3 -i /var/tmp/d.deb || ((try>9));do echo retry $((try++));sleep $((try*try));done;systemctl --now start docker;systemctl restart docker.socket" - path: /etc/systemd/system/dcos-docker-install.service - permissions: '0644' -- content: | - [Service] - Restart=always - StartLimitInterval=0 - RestartSec=15 - LimitNOFILE=16384 - ExecStartPre=-/sbin/ip link del docker0 - ExecStart= - ExecStart=/usr/bin/docker daemon -H fd:// --storage-driver=overlay - path: /etc/systemd/system/docker.service.d/execstart.conf - permissions: '0644' -- content: | - [Unit] - PartOf=docker.service - [Socket] - ListenStream=/var/run/docker.sock - SocketMode=0660 - SocketUser=root - SocketGroup=docker - ListenStream=2375 - BindIPv6Only=both - [Install] - WantedBy=sockets.target - path: /etc/systemd/system/docker.socket - permissions: '0644' - content: | - [Unit] - Requires=dcos-setup.service - After=dcos-setup.service - [Service] - Type=oneshot - EnvironmentFile=/etc/environment - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/usr/bin/bash -c "echo $(detect_ip) $(hostname) > /etc/hosts" - path: /etc/systemd/system/dcos-config-writer.service - permissions: '0644' -- content: | - "bound_values": - "adminrouter_auth_enabled": |- - {{{oauthEnabled}}} - "cluster_name": |- - {{{masterPublicIPAddressName}}} - "exhibitor_azure_account_key": |- - ', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('masterStorageAccountExhibitorName')), '2015-06-15').key1, ' - "exhibitor_azure_account_name": |- - {{{masterStorageAccountExhibitorName}}} - "exhibitor_azure_prefix": |- - {{{masterPublicIPAddressName}}} - "master_list": |- - ["', DCOSCUSTOMDATAPUBLICIPSTR'"] - "oauth_enabled": |- - {{{oauthEnabled}}} - "late_bound_package_id": |- - dcos-provider-{{{dcosProviderPackageID}}}-azure--setup - owner: root - path: /etc/mesosphere/setup-flags/late-config.yaml - permissions: '0644' -- content: | - [Unit] - Before=dcos.target - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/mkdir -p /etc/profile.d - ExecStart=/usr/bin/ln -sf /opt/mesosphere/bin/add_dcos_path.sh /etc/profile.d/dcos.sh - path: /etc/systemd/system/dcos-link-env.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Download DC/OS to this host. - After=network-online.target - Wants=network-online.target - ConditionPathExists=!/opt/mesosphere/ - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - ExecStartPre=/usr/bin/curl --keepalive-time 2 -fLsSv --retry 20 -Y 100000 -y 60 -o //var/tmp/bootstrap.tar.xz {{{dcosBootstrapURL}}} - ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere - ExecStart=/usr/bin/tar -axf //var/tmp/bootstrap.tar.xz -C /opt/mesosphere - ExecStartPost=-/usr/bin/rm -f //var/tmp/bootstrap.tar.xz - path: /etc/systemd/system/dcos-download.service - permissions: '0644' -- content: | - [Unit] - Description=Pkgpanda: Specialize DC/OS for this host. - Requires=dcos-download.service - After=dcos-download.service - [Service] - Type=oneshot - StandardOutput=journal+console - StandardError=journal+console - EnvironmentFile=/opt/mesosphere/environment - ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd - [Install] - WantedBy=multi-user.target - path: /etc/systemd/system/dcos-setup.service - permissions: '0644' -- content: '' - path: /etc/mesosphere/roles/azure -- content: 'PROVISION_STR' - path: "/opt/azure/containers/provision.sh" - permissions: "0744" - owner: "root" -- path: /var/lib/dcos/mesos-slave-common - content: 'ATTRIBUTES_STR' - permissions: "0644" - owner: "root" -- content: '{ "auths": { "{{{registry}}}": { "auth" : "{{{registryKey}}}" } } }' - path: "/tmp/xtoph/.docker/config.json" - owner: "root" -- content: | - #!/bin/bash - # Check the partitions on /dev/sdb created by cloudinit and force a detach and - # reformat of the parition. After which, all will be remounted. - EPHEMERAL_DISK="/dev/sdb" - PARTITIONS=` + "`" + `fdisk -l $EPHEMERAL_DISK | grep "^$EPHEMERAL_DISK" | cut -d" " -f1 | sed "s~$EPHEMERAL_DISK~~"` + "`" + ` - if [ -n "$PARTITIONS" ]; then - for f in $PARTITIONS; do - df -k | grep "/dev/sdb$f" - if [ $? -eq 0 ]; then - umount -f /dev/sdb$f - fi - mkfs.ext4 /dev/sdb$f - done - mount -a - fi - # If there is a /var/tmp partition on the ephemeral disk, create a symlink such - # that the /var/log/mesos and /var/log/journal placed on the ephemeral disk. - VAR_TMP_PARTITION=` + "`" + `df -P /var/tmp | tail -1 | cut -d" " -f 1` + "`" + ` - echo $VAR_TMP_PARTITION | grep "^$EPHEMERAL_DISK" - if [ $? -eq 0 ]; then - # Handle the /var/log/mesos directory - mkdir -p /var/tmp/log/mesos - if [ -d "/var/log/mesos" ]; then - cp -rp /var/log/mesos/* /var/tmp/log/mesos/ - rm -rf /var/log/mesos - fi - ln -s /var/tmp/log/mesos /var/log/mesos - # Handle the /var/log/journal direcotry - mkdir -p /var/tmp/log/journal - if [ -d "/var/log/journal" ]; then - cp -rp /var/log/journal/* /var/tmp/log/journal/ - rm -rf /var/log/journal - fi - ln -s /var/tmp/log/journal /var/log/journal - fi - path: "/opt/azure/containers/setup_ephemeral_disk.sh" - permissions: "0744" - owner: "root" -`) - -func dcosDcoscustomdata198TBytes() ([]byte, error) { - return _dcosDcoscustomdata198T, nil -} - -func dcosDcoscustomdata198T() (*asset, error) { - bytes, err := dcosDcoscustomdata198TBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcoscustomdata198.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosmasterresourcesT = []byte(`{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountExhibitorName')]", - "properties": { - "accountType": "Standard_LRS" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - {{GetVNETSubnetDependencies}} - ], - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets true}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('location')]", - "name": "[variables('masterLbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('masterLbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('masterLbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('masterPublicIPAddressName'))]" - } - } - } - ] -{{if .MasterProfile.OAuthEnabled}} - ,"loadBalancingRules": [ - { - "name": "LBRule443", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 443, - "backendPort": 443, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - }, - { - "name": "LBRule80", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": 80, - "backendPort": 80, - "enableFloatingIP": false, - "idleTimeoutInMinutes": 4, - "protocol": "Tcp", - "loadDistribution": "Default", - "backendAddressPool": { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - }, - "probe": { - "id": "[concat(variables('masterLbID'),'/probes/dcosMasterProbe')]" - } - } - } - ], - "probes": [ - { - "name": "dcosMasterProbe", - "properties": { - "protocol": "Http", - "port": 5050, - "requestPath": "/health", - "intervalInSeconds": 5, - "numberOfProbes": 2 - } - } - ] -{{end}} - }, - "type": "Microsoft.Network/loadBalancers" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "masterLbLoopNode" - }, - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[variables('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" - }, -{{if IsDCOS19}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[variables('masterLbID')]" - ], - "location": "[resourceGroup().location]", - - "name": "[concat(variables('masterLbName'), '/', 'SSHPort22-', variables('masterVMNamePrefix'), '0')]", - "properties": { - "backendPort": 2222, - "enableFloatingIP": false, - "frontendIPConfiguration": { - "id": "[variables('masterLbIPConfigID')]" - }, - "frontendPort": "22", - "protocol": "Tcp" - }, - "type": "Microsoft.Network/loadBalancers/inboundNatRules" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterNSGName')]", - "properties": { - "securityRules": [ -{{if IsDCOS19}} - { - "properties": { - "priority": 201, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "2222", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "sshPort22" - }, -{{if .MasterProfile.OAuthEnabled}} - { - "name": "http", - "properties": { - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "80", - "sourceAddressPrefix": "[variables('masterHttpSourceAddressPrefix')]", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 202, - "direction": "Inbound" - } - }, - { - "name": "https", - "properties": { - "protocol": "Tcp", - "sourcePortRange": "*", - "destinationPortRange": "443", - "sourceAddressPrefix": "[variables('masterHttpSourceAddressPrefix')]", - "destinationAddressPrefix": "*", - "access": "Allow", - "priority": 203, - "direction": "Inbound" - } - }, -{{end}} -{{end}} - { - "properties": { - "priority": 200, - "access": "Allow", - "direction": "Inbound", - "destinationPortRange": "22", - "sourcePortRange": "*", - "destinationAddressPrefix": "*", - "protocol": "Tcp", - "description": "Allow SSH", - "sourceAddressPrefix": "*" - }, - "name": "ssh" - } - ] - }, - "type": "Microsoft.Network/networkSecurityGroups" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "nicLoopNode" - }, - "dependsOn": [ - "[variables('masterNSGID')]", -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", -{{if IsDCOS19}} - "[concat(variables('masterLbID'),'/inboundNatRules/SSHPort22-',variables('masterVMNamePrefix'),0)]", -{{end}} - "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('masterLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]" - } - ], -{{if IsDCOS19}} - "loadBalancerInboundNatRules": "[variables('masterLbInboundNatRules')[copyIndex()]]", -{{else}} - "loadBalancerInboundNatRules": [ - { - "id": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',variables('masterVMNamePrefix'),copyIndex())]" - } - ], -{{end}} - "privateIPAddress": "[concat(variables('masterFirstAddrPrefix'), copyIndex(int(variables('masterFirstAddrOctet4'))))]", - "privateIPAllocationMethod": "Static", - "subnet": { - "id": "[variables('masterVnetSubnetID')]" - } - } - } - ] - ,"networkSecurityGroup": { - "id": "[variables('masterNSGID')]" - } - }, - "type": "Microsoft.Network/networkInterfaces" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]", -{{if .MasterProfile.IsStorageAccount}} - "[variables('masterStorageAccountName')]", -{{end}} - "[variables('masterStorageAccountExhibitorName')]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "location": "[variables('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())]", - {{GetDCOSMasterCustomData}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('masterVMNamePrefix'), sub(variables('masterCount'), 1))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), sub(variables('masterCount'), 1), '/waitforleader')]", - "properties": { - "autoUpgradeMinorVersion": true, - "publisher": "Microsoft.OSTCExtensions", - "settings": { - "commandToExecute": "sh -c 'until ping -c1 leader.mesos;do echo waiting for leader.mesos;sleep 15;done;echo leader.mesos up'" - }, - "type": "CustomScriptForLinux", - "typeHandlerVersion": "1.4" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - }{{WriteLinkedTemplatesForExtensions}} -`) - -func dcosDcosmasterresourcesTBytes() ([]byte, error) { - return _dcosDcosmasterresourcesT, nil -} - -func dcosDcosmasterresourcesT() (*asset, error) { - bytes, err := dcosDcosmasterresourcesTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosmasterresources.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosmastervarsT = []byte(` "adminUsername": "[parameters('linuxAdminUsername')]", - "targetEnvironment": "[parameters('targetEnvironment')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", - "apiVersionLinkDefault": "2015-01-01", - "singleQuote": "'", - "doubleSingleQuote": "''", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "orchestratorVersion": "{{.OrchestratorProfile.OrchestratorVersion}}", -{{if .HasWindows}} - "windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsBackendPort": 3389, - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "dcosWindowsBootstrapURL" : "[parameters('dcosWindowsBootstrapURL')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsMasterCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-MasterCount ', variables('masterCount'), ' -firstMasterIP ', parameters('firstConsecutiveStaticIP'), variables('singleQuote'), ' ; ')]", - - "windowsMasterCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsMasterCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\dcosWindowsProvision.log 2>&1')]", -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "masterHttpSourceAddressPrefix": "{{.MasterProfile.HTTPSourceAddressPrefix}}", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups',variables('masterNSGName'))]", - "masterNSGName": "[concat(variables('orchestratorName'), '-master-nsg-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "apiVersionStorage": "2015-06-15", - - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location'),variables('orchestratorName')))]", - "masterStorageAccountExhibitorName": "[concat(variables('storageAccountBaseName'), 'exhb0')]", - "storageAccountType": "Standard_LRS", -{{if .HasStorageAccountDisks}} - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), 'mstr0')]", -{{end}} -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "masterVMNamePrefix": "[concat(variables('orchestratorName'), '-master-', variables('nameSuffix'), '-')]", - "masterVMNic": [ - "[concat(variables('masterVMNamePrefix'), 'nic-0')]", - "[concat(variables('masterVMNamePrefix'), 'nic-1')]", - "[concat(variables('masterVMNamePrefix'), 'nic-2')]", - "[concat(variables('masterVMNamePrefix'), 'nic-3')]", - "[concat(variables('masterVMNamePrefix'), 'nic-4')]", - "[concat(variables('masterVMNamePrefix'), 'nic-5')]", - "[concat(variables('masterVMNamePrefix'), 'nic-6')]" - ], - "masterVMSize": "[parameters('masterVMSize')]", - "nameSuffix": "[parameters('nameSuffix')]", - "oauthEnabled": "{{.MasterProfile.OAuthEnabled}}", - "orchestratorName": "dcos", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "[parameters('osImageSKU')]", - "osImageVersion": "[parameters('osImageVersion')]", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]", - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", -{{if IsDCOS19}} - "masterSshInboundNatRuleIdPrefix": "[concat(variables('masterLbID'),'/inboundNatRules/SSH-',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')]" - } - ] - ], -{{end}} - "dcosBootstrapURL": "[parameters('dcosBootstrapURL')]" - -`) - -func dcosDcosmastervarsTBytes() ([]byte, error) { - return _dcosDcosmastervarsT, nil -} - -func dcosDcosmastervarsT() (*asset, error) { - bytes, err := dcosDcosmastervarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosmastervars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosparamsT = []byte(` "dcosBootstrapURL": { - "defaultValue": "https://dcosio.azureedge.net/dcos/stable/bootstrap/58fd0833ce81b6244fc73bf65b5deb43217b0bd7.bootstrap.tar.xz", - "metadata": { - "description": "The default mesosphere bootstrap package." - }, - "type": "string" - }, - "dcosWindowsBootstrapURL": { - "defaultValue": "http://dcos-win.westus.cloudapp.azure.com/dcos-windows/stable/", - "metadata": { - "description": "The default mesosphere bootstrap package location for windows." - }, - "type": "string" - }, - "dcosRepositoryURL": { - "defaultValue": "https://dcosio.azureedge.net/dcos/stable", - "metadata": { - "description": "The repository URL" - }, - "type": "string" - }, - "dcosClusterPackageListID": { - "defaultValue": "77282d8864a5bf36db345b54a0d1de3674a0e937", - "metadata": { - "description": "The default cluster package list IDs." - }, - "type": "string" - }, - "dcosProviderPackageID": { - "defaultValue": "", - "metadata": { - "description": "The guid for provider dcos-provider package." - }, - "type": "string" - }, -`) - -func dcosDcosparamsTBytes() ([]byte, error) { - return _dcosDcosparamsT, nil -} - -func dcosDcosparamsT() (*asset, error) { - bytes, err := dcosDcosparamsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosparams.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosprovisionSh = []byte(`#!/bin/bash - -MESOSDIR=/var/lib/mesos/dl -mkdir $MESOSDIR - -# load the env vars -. /etc/mesosphere/setup-flags/dcos-deploy-environment - -# default dc/os component download address (Azure CDN) -DOCKER_ENGINE_DOWNLOAD_URL=https://mesosphere.blob.core.windows.net/dcos-deps/docker-engine_1.13.1-0-ubuntu-xenial_amd64.deb -LIBIPSET_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/libipset3_6.29-1_amd64.deb -IPSET_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/ipset_6.29-1_amd64.deb -UNZIP_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/unzip_6.0-20ubuntu1_amd64.deb -LIBLTDL_DOWNLOAD_URL=https://az837203.vo.msecnd.net/dcos-deps/libltdl7_2.4.6-0.1_amd64.deb - -case $DCOS_ENVIRONMENT in - # because of Chinese GreatWall Firewall, the default packages on Azure CDN is blocked. So the following Chinese local mirror url should be used instead. - AzureChinaCloud) - DOCKER_ENGINE_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/docker-engine_1.11.2-0~xenial_amd64.deb - LIBIPSET_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/libipset3_6.29-1_amd64.deb - IPSET_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/ipset_6.29-1_amd64.deb - UNZIP_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/unzip_6.0-20ubuntu1_amd64.deb - LIBLTDL_DOWNLOAD_URL=http://acsengine.blob.core.chinacloudapi.cn/dcos/libltdl7_2.4.6-0.1_amd64.deb - ;; -esac - -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/d.deb $DOCKER_ENGINE_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/1.deb $LIBIPSET_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/2.deb $IPSET_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/3.deb $UNZIP_DOWNLOAD_URL & -curl -fLsSv --retry 20 -Y 100000 -y 60 -o $MESOSDIR/4.deb $LIBLTDL_DOWNLOAD_URL & -wait - -for i in {1..300}; do - dpkg -i $MESOSDIR/{1,2,3,4}.deb - if [ "$?" = "0" ] - then - echo "succeeded" - break - fi - sleep 1 -done - -ROLESFILECONTENTS - -# add Azure update domain and fault domain attributes -ud=$( curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/platformUpdateDomain?api-version=2017-04-02&format=text" ) -fd=$( curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute/platformFaultDomain?api-version=2017-04-02&format=text" ) -echo ";azure.faultdomain:$fd;azure.updatedomain:$ud" >> /var/lib/dcos/mesos-slave-common`) - -func dcosDcosprovisionShBytes() ([]byte, error) { - return _dcosDcosprovisionSh, nil -} - -func dcosDcosprovisionSh() (*asset, error) { - bytes, err := dcosDcosprovisionShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosprovision.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _dcosDcosprovisionsourceSh = []byte(`function retry_download() { - retries=$1; wait_sleep=$2; timeout=$3; url=$4; path=$5 checksum=$6 - for i in $(seq 1 $retries); do - rm -f $path - timeout $timeout curl -fsSL $url -o $path - if [ $? -ne 0 ]; then - echo "retry_download[$i] Error: Failed to execute curl -fsSL $url -o $path" - sleep $wait_sleep - continue - fi - if [ ! -z "${checksum:-}" ]; then - actual=$(sha1sum -b $path | cut -f 1 -d " ") - if [ $? -ne 0 ]; then - echo "retry_download[$i] Error: Failed to execute sha1sum -b $path (per $url)" - sleep $wait_sleep - continue - fi - if [ "$checksum" != "$actual" ]; then - echo "retry_download[$i] Error: sha1sum mismatch for $url" - sleep $wait_sleep - continue - fi - fi - return 0 - done - return 1 -} - -function retrycmd_if_failure() { - retries=$1; wait_sleep=$2; timeout=$3; shift && shift && shift - for i in $(seq 1 $retries); do - timeout $timeout ${@} - [ $? -eq 0 ] && break || \ - if [ $i -eq $retries ]; then - echo "Error: Failed to execute \"$@\" after $i attempts" - return 1 - else - sleep $wait_sleep - fi - done - echo Executed \"$@\" $i times; -} - -function retry_get_install_deb() { - retries=$1; wait_sleep=$2; timeout=$3; url=$4; checksum=$5 - deb=$(mktemp) - trap "rm -f $deb" RETURN - retry_download $retries $wait_sleep $timeout $url $deb $checksum - if [ $? -ne 0 ]; then - echo "Error: Failed to download $url" - return 1 - fi - retrycmd_if_failure $retries $wait_sleep $timeout dpkg -i $deb - if [ $? -ne 0 ]; then - echo "Error: Failed to install $url" - return 1 - fi -} -`) - -func dcosDcosprovisionsourceShBytes() ([]byte, error) { - return _dcosDcosprovisionsourceSh, nil -} - -func dcosDcosprovisionsourceSh() (*asset, error) { - bytes, err := dcosDcosprovisionsourceShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "dcos/dcosprovisionsource.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - var _iaasoutputsT = []byte(` "resourceGroup": { "type": "string", "value": "[variables('resourceGroup')]" @@ -25320,2954 +19358,6 @@ func masterparamsT() (*asset, error) { return a, nil } -var _swarmInstallContainerhostAndJoinSwarmPs1 = []byte(`############################################################ -# Script adapted from -# https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/windows-server-container-tools/Install-ContainerHost/Install-ContainerHost.ps1 - -<# - .NOTES - Copyright (c) Microsoft Corporation. All rights reserved. - - Use of this sample source code is subject to the terms of the Microsoft - license agreement under which you licensed this sample source code. If - you did not accept the terms of the license agreement, you are not - authorized to use this sample source code. For the terms of the license, - please see the license agreement between you and Microsoft or, if applicable, - see the LICENSE.RTF on your install media or the root of your tools installation. - THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES. - - .SYNOPSIS - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a swarm master. - - .DESCRIPTION - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a swarm master. - - .PARAMETER SwarmMasterIP - IP Address of Docker Swarm Master - - .EXAMPLE - .\Install-ContainerHost.ps1 -SwarmMasterIP 192.168.255.5 - -#> -#Requires -Version 5.0 - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $SwarmMasterIP = "172.16.0.5" -) - -$global:DockerServiceName = "Docker" -$global:HNSServiceName = "hns" - -filter Timestamp {"$(Get-Date -Format o): $_"} - -function Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - -function -Start-Docker() -{ - Write-Log "Starting $global:DockerServiceName..." - $startTime = Get-Date - - while (-not $dockerReady) - { - try - { - Start-Service -Name $global:DockerServiceName -ea Stop - - $dockerReady = $true - } - catch - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Docker Daemon did not start successfully within 5 minutes." - break - } - - $errorStr = $_.Exception.Message - Write-Log "Starting Service failed: $errorStr" - Write-Log "sleeping for 10 seconds..." - Start-Sleep -sec 10 - } - } -} - - -function -Stop-Docker() -{ - Write-Log "Stopping $global:DockerServiceName..." - try - { - Stop-Service -Name $global:DockerServiceName -ea Stop - } - catch - { - Write-Log "Failed to stop Docker" - } -} - -function -Update-DockerServiceRecoveryPolicy() -{ - $dockerReady = $false - $startTime = Get-Date - - # wait until the service exists - while (-not $dockerReady) - { - if (Get-Service $global:DockerServiceName -ErrorAction SilentlyContinue) - { - $dockerReady = $true - } - else - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Unable to find service $global:DockerServiceName within 5 minutes." - break - } - Write-Log "failed to find $global:DockerServiceName, sleeping for 5 seconds" - Start-Sleep -sec 5 - } - } - - Write-Log "Updating docker restart policy, to ensure it restarts on error" - $services = Get-WMIObject win32_service | Where-Object {$_.name -imatch $global:DockerServiceName} - foreach ($service in $services) - { - sc.exe failure $service.name reset= 86400 actions= restart/5000 - } -} - -# Open Windows Firewall Ports Needed -function Open-FirewallPorts() -{ - $ports = @(80,443,2375,8080) - foreach ($port in $ports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $port' dir=in action=allow protocol=TCP localport=$port" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } -} - -# Update Docker Config to have cluster-store=consul:// address configured for Swarm cluster. -function Write-DockerDaemonJson() -{ - $dataDir = $env:ProgramData - - # create the target directory - $targetDir = $dataDir + '\docker\config' - if(!(Test-Path -Path $targetDir )){ - New-Item -ItemType directory -Path $targetDir - } - - Write-Log "Delete key file, so that this node is unique to swarm" - $keyFileName = "$targetDir\key.json" - Write-Log "Removing $($keyFileName)" - if (Test-Path $keyFileName) { - Remove-Item $keyFileName - } - - $ipAddress = Get-IPAddress - - Write-Log "Advertise $($ipAddress) to consul://$($SwarmMasterIP):8500" - $OutFile = @" -{ - "hosts": ["tcp://0.0.0.0:2375", "npipe://"], - "cluster-store": "consul://$($SwarmMasterIP):8500", - "cluster-advertise": "$($ipAddress):2375" -} -"@ - - $OutFile | Out-File -encoding ASCII -filepath "$targetDir\daemon.json" -} - -# Get Node IPV4 Address -function Get-IPAddress() -{ - return (Get-NetIPAddress | where {$_.IPAddress -Like '10.*' -and $_.AddressFamily -eq 'IPV4'})[0].IPAddress -} - -try -{ - Write-Log "Provisioning $global:DockerServiceName... with Swarm IP $SwarmMasterIP" - - Write-Log "Stop Docker" - Stop-Docker - - Write-Log "Opening firewall ports" - Open-FirewallPorts - - Write-Log "Write Docker Configuration" - Write-DockerDaemonJson - - Write-Log "Update Docker restart policy" - Update-DockerServiceRecoveryPolicy - - Write-Log "Start Docker" - Start-Docker - - #remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Wininit" Headless - #Write-Log "shutdown /r /f /t 60" - #shutdown /r /f /t 60 - - Write-Log "Setup Complete" -} -catch -{ - Write-Error $_ -} - - -`) - -func swarmInstallContainerhostAndJoinSwarmPs1Bytes() ([]byte, error) { - return _swarmInstallContainerhostAndJoinSwarmPs1, nil -} - -func swarmInstallContainerhostAndJoinSwarmPs1() (*asset, error) { - bytes, err := swarmInstallContainerhostAndJoinSwarmPs1Bytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/Install-ContainerHost-And-Join-Swarm.ps1", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmJoinSwarmmodeClusterPs1 = []byte(`############################################################ -# Script adapted from -# https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/windows-server-container-tools/Install-ContainerHost/Install-ContainerHost.ps1 - -<# - .NOTES - Copyright (c) Microsoft Corporation. All rights reserved. - - Use of this sample source code is subject to the terms of the Microsoft - license agreement under which you licensed this sample source code. If - you did not accept the terms of the license agreement, you are not - authorized to use this sample source code. For the terms of the license, - please see the license agreement between you and Microsoft or, if applicable, - see the LICENSE.RTF on your install media or the root of your tools installation. - THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES. - - .SYNOPSIS - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a Swarm Mode master. - - .DESCRIPTION - Installs the prerequisites for creating Windows containers - Opens TCP ports (80,443,2375,8080) in Windows Firewall. - Connects Docker to a Swarm Mode master. - - .PARAMETER SwarmMasterIP - IP Address of Docker Swarm Mode Master - - .EXAMPLE - .\Join-SwarmMode-cluster.ps1 -SwarmMasterIP 192.168.255.5 - -#> -#Requires -Version 5.0 - -[CmdletBinding(DefaultParameterSetName="Standard")] -param( - [string] - [ValidateNotNullOrEmpty()] - $SwarmMasterIP = "172.16.0.5" -) - -$global:DockerServiceName = "Docker" -$global:DockerBinariesURL = "https://acsengine.blob.core.windows.net/swarmm/docker.zip" -$global:DockerExePath = "C:\Program Files\Docker" -$global:IsNewDockerVersion = $false - -filter Timestamp {"$(Get-Date -Format o): $_"} - -function Write-Log($message) -{ - $msg = $message | Timestamp - Write-Output $msg -} - -function Start-Docker() -{ - Write-Log "Starting $global:DockerServiceName..." - $startTime = Get-Date - - while (-not $dockerReady) - { - try - { - Start-Service -Name $global:DockerServiceName -ea Stop - - $dockerReady = $true - } - catch - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Docker Daemon did not start successfully within 5 minutes." - break - } - - $errorStr = $_.Exception.Message - Write-Log "Starting Service failed: $errorStr" - Write-Log "sleeping for 10 seconds..." - Start-Sleep -sec 10 - } - } -} - -function Stop-Docker() -{ - Write-Log "Stopping $global:DockerServiceName..." - try - { - Stop-Service -Name $global:DockerServiceName -ea Stop - } - catch - { - Write-Log "Failed to stop Docker" - } -} - -function Expand-ZIPFile($file, $destination) -{ - $shell = new-object -com shell.application - $zip = $shell.NameSpace($file) - foreach($item in $zip.items()) - { - $shell.Namespace($destination).copyhere($item, 0x14) - } -} - -function Install-DockerBinaries() -{ - if( $global:IsNewDockerVersion) - { - Write-Log "Skipping installation of new Docker binaries because latest is already installed." - return - } - - $currentRetry = 0; - $success = $false; - - $zipfile = "c:\swarmm.zip" - - do { - try - { - Write-Log "Downloading and installing Docker binaries...." - Invoke-WebRequest -Uri $global:DockerBinariesURL -OutFile $zipfile - $success = $true; - Write-Log "Successfully downloaded Docker binaries. Number of retries: $currentRetry"; - } - catch [System.Exception] - { - $message = 'Exception occurred while trying to download binaries:' + $_.Exception.ToString(); - Write-Log $message; - if ($currentRetry -gt 5) { - $message = "Could not download Docker binaries, aborting install. Error: " + $_.Exception.ToString(); - throw $message; - } else { - Write-Log "Sleeping before retry number: $currentRetry to download binaries."; - Start-Sleep -sec 5; - } - $currentRetry = $currentRetry + 1; - } - } while (!$success); - - Write-Log "Expanding zip file at destination: $global:DockerExePath" - Expand-ZIPFile -File $zipfile -Destination $global:DockerExePath - - Write-Log "Deleting zip file at: $zipfile" - Remove-Item $zipfile -} - -function Update-DockerServiceRecoveryPolicy() -{ - $dockerReady = $false - $startTime = Get-Date - - # wait until the service exists - while (-not $dockerReady) - { - if (Get-Service $global:DockerServiceName -ErrorAction SilentlyContinue) - { - $dockerReady = $true - } - else - { - $timeElapsed = $(Get-Date) - $startTime - if ($($timeElapsed).TotalMinutes -ge 5) - { - Write-Log "Unable to find service $global:DockerServiceName within 5 minutes." - break - } - Write-Log "failed to find $global:DockerServiceName, sleeping for 5 seconds" - Start-Sleep -sec 5 - } - } - - Write-Log "Updating docker restart policy, to ensure it restarts on error" - $services = Get-WMIObject win32_service | Where-Object {$_.name -imatch $global:DockerServiceName} - foreach ($service in $services) - { - sc.exe failure $service.name reset= 86400 actions= restart/5000 - } -} - -# Open Windows Firewall Ports Needed -function Open-FirewallPorts() -{ - $tcpports = @(80,443,2375,8080,2377,7946,4789) - foreach ($tcpport in $tcpports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $tcpport' dir=in action=allow protocol=TCP localport=$tcpport" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } - - $udpports = @(7946,4789) - foreach ($udpport in $udpports) - { - $netsh = "netsh advfirewall firewall add rule name='Open Port $udpport' dir=in action=allow protocol=UDP localport=$udpport" - Write-Log "enabling port with command $netsh" - Invoke-Expression -Command:$netsh - } -} - -# Update Docker Config to have cluster-store=consul:// address configured for Swarm cluster. -function Write-DockerDaemonJson() -{ - $dataDir = $env:ProgramData - - # create the target directory - $targetDir = $dataDir + '\docker\config' - if(!(Test-Path -Path $targetDir )){ - New-Item -ItemType directory -Path $targetDir - } - - Write-Log "Delete key file, so that this node is unique to swarm" - $keyFileName = "$targetDir\key.json" - Write-Log "Removing $($keyFileName)" - if (Test-Path $keyFileName) { - Remove-Item $keyFileName - } - - Write-Log "Configure Docker Engine to accept incoming connections on port 2375" - $OutFile = @" -{ - "hosts": ["tcp://0.0.0.0:2375", "npipe://"] -} -"@ - - $OutFile | Out-File -encoding ASCII -filepath "$targetDir\daemon.json" -} - -function Join-Swarm() -{ - $currentRetry = 0; - $success = $false; - $getTokenCommand = "docker -H $($SwarmMasterIP):2375 swarm join-token -q worker" - $swarmmodetoken; - - do { - try - { - Write-Log "Executing [$getTokenCommand] command...." - <#& $swarmmodetoken#> - $swarmmodetoken = Invoke-Expression -Command:$getTokenCommand - $success = $true; - Write-Log "Successfully executed [$getTokenCommand] command. Number of entries: $currentRetry. Token: [$swarmmodetoken]"; - } - catch [System.Exception] - { - $message = 'Exception occurred while trying to execute command [$swarmmodetoken]:' + $_.Exception.ToString(); - Write-Log $message; - if ($currentRetry -gt 120) { - $message = "Agent couldn't join Swarm, aborting install. Error: " + $_.Exception.ToString(); - throw $message; - } else { - Write-Log "Sleeping before $currentRetry retry of [$getTokenCommand] command"; - Start-Sleep -sec 5; - } - $currentRetry = $currentRetry + 1; - } - } while (!$success); - - $joinSwarmCommand = "docker swarm join --token $($swarmmodetoken) $($SwarmMasterIP):2377" - Write-Log "Joining Swarm. Command [$joinSwarmCommand]...." - Invoke-Expression -Command:$joinSwarmCommand -} - -function Confirm-DockerVersion() -{ - $dockerServerVersionCmd = "docker version --format '{{.Server.Version}}'" - Write-Log "Running command: $dockerServerVersionCmd" - $dockerServerVersion = Invoke-Expression -Command:$dockerServerVersionCmd - - $dockerClientVersionCmd = "docker version --format '{{.Client.Version}}'" - Write-Log "Running command: $dockerClientVersionCmd" - $dockerClientVersion = Invoke-Expression -Command:$dockerClientVersionCmd - - Write-Log "Docker Server version: $dockerServerVersion, Docker Client verison: $dockerClientVersion" - - $serverVersionData = $dockerServerVersion.Split(".") - $isNewServerVersion = $false; - if(($serverVersionData[0] -ge 1) -and ($serverVersionData[1] -ge 13)){ - $isNewServerVersion = $true; - Write-Log "Setting isNewServerVersion to $isNewServerVersion" - } - - $clientVersionData = $dockerClientVersion.Split(".") - $isNewClientVersion = $false; - if(($clientVersionData[0] -ge 1) -and ($clientVersionData[1] -ge 13)){ - $isNewClientVersion = $true; - Write-Log "Setting isNewClientVersion to $isNewClientVersion" - } - - if($isNewServerVersion -and $isNewClientVersion) - { - $global:IsNewDockerVersion = $true; - Write-Log "Setting IsNewDockerVersion to $global:IsNewDockerVersion" - } -} - -try -{ - Write-Log "Provisioning $global:DockerServiceName... with Swarm IP $SwarmMasterIP" - - Write-Log "Checking Docker version" - Confirm-DockerVersion - - Write-Log "Stop Docker" - Stop-Docker - - Write-Log "Installing Docker binaries" - Install-DockerBinaries - - Write-Log "Opening firewall ports" - Open-FirewallPorts - - Write-Log "Write Docker Configuration" - Write-DockerDaemonJson - - Write-Log "Update Docker restart policy" - Update-DockerServiceRecoveryPolicy - - Write-Log "Start Docker" - Start-Docker - - Write-Log "Join existing Swarm" - Join-Swarm - - Write-Log "Setup Complete" -} -catch -{ - Write-Error $_ -}`) - -func swarmJoinSwarmmodeClusterPs1Bytes() ([]byte, error) { - return _swarmJoinSwarmmodeClusterPs1, nil -} - -func swarmJoinSwarmmodeClusterPs1() (*asset, error) { - bytes, err := swarmJoinSwarmmodeClusterPs1Bytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/Join-SwarmMode-cluster.ps1", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmConfigureSwarmClusterSh = []byte(`#!/bin/bash - -set -x - -echo "starting swarm cluster configuration" -date -ps ax - -############# -# Parameters -############# - -SWARM_VERSION=${1} -DOCKER_COMPOSE_VERSION=${2} -MASTERCOUNT=${3} -MASTERPREFIX=${4} -MASTERFIRSTADDR=${5} -AZUREUSER=${6} -POSTINSTALLSCRIPTURI=${7} -BASESUBNET=${8} -DOCKERENGINEDOWNLOADREPO=${9} -DOCKERCOMPOSEDOWNLOADURL=${10} -DOCKER_CE_VERSION=17.03.* -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 1 - 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 - # attempt to fix hostname, in case dns is not resolving Azure IPs (but can resolve public ips) - if [ $networkHealthy -ne 0 ] - then - HOSTNAME=` + "`" + `hostname` + "`" + ` - HOSTADDR=` + "`" + `ip address show dev eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` + "`" + ` - echo $HOSTADDR $HOSTNAME >> /etc/hosts - hostname -i - if [ $? -eq 0 ] - then - # hostname has been found continue - networkHealthy=0 - echo "the network is healthy by updating /etc/hosts" - fi - fi - 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` + "`" + ` - -# apply all Canonical security updates during provisioning -/usr/lib/apt/apt.systemd.daily - -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 - -consulstr() -{ - consulargs="" - for i in ` + "`" + `seq 0 $((MASTERCOUNT-1))` + "`" + ` ; - do - MASTEROCTET=` + "`" + `expr $MASTERFIRSTADDR + $i` + "`" + ` - IPADDR="${BASESUBNET}${MASTEROCTET}" - - if [ "$VMNUMBER" -eq "0" ] - then - consulargs="${consulargs}-bootstrap-expect $MASTERCOUNT " - fi - if [ "$VMNUMBER" -eq "$i" ] - then - consulargs="${consulargs}-advertise $IPADDR " - else - consulargs="${consulargs}-retry-join $IPADDR " - fi - done - echo $consulargs -} - -consulargs=$(consulstr) -MASTER0IPADDR="${BASESUBNET}${MASTERFIRSTADDR}" - -###################### -# resolve self in DNS -###################### - -echo "$HOSTADDR $VMNAME" | sudo tee -a /etc/hosts - -################ -# Install Docker -################ - -echo "Installing and configuring docker" - -# simple general command retry function -retrycmd_if_failure() { for i in 1 2 3 4 5; do $@; [ $? -eq 0 ] && break || sleep 5; done ; } - -installDocker() -{ - for i in {1..10}; do - apt-get install -y apt-transport-https ca-certificates curl software-properties-common - curl --max-time 60 -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - apt-get update - apt-get install -y docker-ce=${DOCKER_CE_VERSION} - 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 -if isagent ; then - # Start Docker and listen on :2375 (no auth, but in vnet) - echo 'DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:2375 --cluster-store=consul://'$MASTER0IPADDR:8500 --cluster-advertise=$HOSTADDR:2375'"' | sudo tee -a /etc/default/docker -fi - -echo "Installing docker compose" -installDockerCompose() -{ - for i in {1..10}; do - wget --tries 4 --retry-connrefused --waitretry=15 -qO- $DOCKERCOMPOSEDOWNLOADURL/$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 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 - mkdir -p /data/consul - echo "consul: - image: \"progrium/consul\" - command: -server -node $VMNAME $consulargs - ports: - - \"8500:8500\" - - \"8300:8300\" - - \"8301:8301\" - - \"8301:8301/udp\" - - \"8302:8302\" - - \"8302:8302/udp\" - - \"8400:8400\" - volumes: - - \"/data/consul:/data\" - restart: \"always\" -swarm: - image: \"$SWARM_VERSION\" - command: manage --replication --advertise $HOSTADDR:2375 --discovery-opt kv.path=docker/nodes consul://$MASTER0IPADDR:8500 - ports: - - \"2375:2375\" - links: - - \"consul\" - volumes: - - \"/etc/docker:/etc/docker\" - restart: \"always\" -" > /opt/azure/containers/docker-compose.yml - - pushd /opt/azure/containers/ - docker-compose up -d - popd - echo "completed starting docker swarm on the master" -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 [ $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 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 -`) - -func swarmConfigureSwarmClusterShBytes() ([]byte, error) { - return _swarmConfigureSwarmClusterSh, nil -} - -func swarmConfigureSwarmClusterSh() (*asset, error) { - bytes, err := swarmConfigureSwarmClusterShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/configure-swarm-cluster.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmConfigureSwarmmodeClusterSh = []byte(`#!/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 - -############# -# Parameters -############# - -DOCKER_CE_VERSION=${1} -DOCKER_COMPOSE_VERSION=${2} -MASTERCOUNT=${3} -MASTERPREFIX=${4} -MASTERFIRSTADDR=${5} -AZUREUSER=${6} -POSTINSTALLSCRIPTURI=${7} -BASESUBNET=${8} -DOCKERENGINEDOWNLOADREPO=${9} -DOCKERCOMPOSEDOWNLOADURL=${10} -VMNAME=` + "`" + `hostname` + "`" + ` -VMNUMBER=` + "`" + `echo $VMNAME | sed 's/.*[^0-9]\([0-9]\+\)*$/\1/'` + "`" + ` -VMPREFIX=` + "`" + `echo $VMNAME | sed 's/\(.*[^0-9]\)*[0-9]\+$/\1/'` + "`" + ` -OS="$(. /etc/os-release; echo $ID)" - -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" -echo "OS ID: $OS" - -################### -# Common Functions -################### - -isUbuntu() -{ - if [ "$OS" == "ubuntu" ] - then - return 0 - else - return 1 - fi -} - -isRHEL() -{ - if [ "$OS" == "rhel" ] - then - return 0 - else - return 1 - fi -} - -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 1 - 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 - # attempt to fix hostname, in case dns is not resolving Azure IPs (but can resolve public ips) - if [ $networkHealthy -ne 0 ] - then - HOSTNAME=` + "`" + `hostname` + "`" + ` - HOSTADDR=` + "`" + `ip address show dev eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` + "`" + ` - echo $HOSTADDR $HOSTNAME >> /etc/hosts - hostname -i - if [ $? -eq 0 ] - then - # hostname has been found continue - networkHealthy=0 - echo "the network is healthy by updating /etc/hosts" - fi - fi - 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` + "`" + ` - -# apply all Canonical security updates during provisioning -/usr/lib/apt/apt.systemd.daily - -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 -###################### - -if [ -z "$(grep "$HOSTADDR $VMNAME" /etc/hosts)" ]; then - echo "$HOSTADDR $VMNAME" | sudo tee -a /etc/hosts -fi - -################ -# Install Docker -################ - -echo "Installing and configuring Docker" - -installDockerUbuntu() -{ - for i in {1..10}; do - apt-get install -y apt-transport-https ca-certificates curl software-properties-common - curl --max-time 60 -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - apt-get update - apt-get install -y docker-ce=${DOCKER_CE_VERSION} - if [ $? -eq 0 ] - then - systemctl restart docker - # hostname has been found continue - echo "Docker installed successfully" - break - fi - sleep 10 - done -} - -installDockerRHEL() -{ - for i in {1..10}; do - yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - yum makecache fast - yum -y install docker-ce - if [ $? -eq 0 ] - then - systemctl enable docker - systemctl start docker - echo "Docker installed successfully" - break - fi - sleep 10 - done -} - -installDocker() -{ - if isUbuntu ; then - installDockerUbuntu - elif isRHEL ; then - installDockerRHEL - else - echo "OS not supported, aborting install" - exit 5 - fi -} - -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/dockerd -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- $DOCKERCOMPOSEDOWNLOADURL/$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 - -if ismaster && isRHEL ; then - echo "Opening Docker ports" - firewall-cmd --add-port=2375/tcp --permanent - firewall-cmd --add-port=2377/tcp --permanent - firewall-cmd --reload -fi - -echo "Restarting Docker" -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 3 - 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 4 - 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 - -# mitigation for bug https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1676635 -echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind -sed -i "13i\echo 2dd1ce17-079e-403c-b352-a1921ee207ee > /sys/bus/vmbus/drivers/hv_util/unbind\n" /etc/rc.local - -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 -`) - -func swarmConfigureSwarmmodeClusterShBytes() ([]byte, error) { - return _swarmConfigureSwarmmodeClusterSh, nil -} - -func swarmConfigureSwarmmodeClusterSh() (*asset, error) { - bytes, err := swarmConfigureSwarmmodeClusterShBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/configure-swarmmode-cluster.sh", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmagentresourcesvmasT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "loop" - }, - "dependsOn": [ -{{if not .IsCustomVNET}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computername": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", -{{if IsSwarmMode}} - {{if not .IsRHEL}} - {{GetAgentSwarmModeCustomData .}} - {{end}} -{{else}} - {{GetAgentSwarmCustomData .}} -{{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "offer": "[variables('{{.Name}}OSImageOffer')]", - "publisher": "[variables('{{.Name}}OSImagePublisher')]", - "sku": "[variables('{{.Name}}OSImageSKU')]", - "version": "[variables('{{.Name}}OSImageVersion')]" - } - - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - } -{{if .IsRHEL}} - ,{ - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('{{.Name}}Count')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset'))))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/configureagent')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('agentCustomScript')]", - "fileUris": [ - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } -{{end}} -`) - -func swarmSwarmagentresourcesvmasTBytes() ([]byte, error) { - return _swarmSwarmagentresourcesvmasT, nil -} - -func swarmSwarmagentresourcesvmasT() (*asset, error) { - bytes, err := swarmSwarmagentresourcesvmasTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmagentresourcesvmas.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmagentresourcesvmssT = []byte(`{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if not .IsCustomVNET}} - ,"[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/backendAddressPools/', variables('{{.Name}}LbBackendPoolName'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "adminUsername": "[variables('adminUsername')]", - "computerNamePrefix": "[variables('{{.Name}}VMNamePrefix')]", -{{if IsSwarmMode}} - {{if not .IsRHEL}} - {{GetAgentSwarmModeCustomData .}} - {{end}} -{{else}} - {{GetAgentSwarmCustomData .}} -{{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[parameters('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if HasLinuxSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "offer": "[variables('{{.Name}}OSImageOffer')]", - "publisher": "[variables('{{.Name}}OSImagePublisher')]", - "sku": "[variables('{{.Name}}OSImageSKU')]", - "version": "[variables('{{.Name}}OSImageVersion')]" - }, - {{GetDataDisks .}} - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } -{{if .IsRHEL}} - ,"extensionProfile": { - "extensions": [ - { - "name": "configure{{.Name}}", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('agentCustomScript')]", - "fileUris": [ - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - } - } - ] - } -{{end}} - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } -`) - -func swarmSwarmagentresourcesvmssTBytes() ([]byte, error) { - return _swarmSwarmagentresourcesvmssT, nil -} - -func swarmSwarmagentresourcesvmssT() (*asset, error) { - bytes, err := swarmSwarmagentresourcesvmssTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmagentresourcesvmss.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmagentvarsT = []byte(`{{if not .IsRHEL}} - "{{.Name}}RunCmd": "[concat('runcmd:\n {{GetSwarmAgentPreprovisionExtensionCommands .}} \n- [ /bin/bash, /opt/azure/containers/install-cluster.sh ]\n\n')]", - "{{.Name}}RunCmdFile": "[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')]", -{{end}} -{{if IsSwarmMode }} - "{{.Name}}OSImageOffer": {{GetAgentOSImageOffer .}}, - "{{.Name}}OSImagePublisher": {{GetAgentOSImagePublisher .}}, - "{{.Name}}OSImageSKU": {{GetAgentOSImageSKU .}}, - "{{.Name}}OSImageVersion": {{GetAgentOSImageVersion .}}, -{{else}} - "{{.Name}}OSImageOffer": "[variables('osImageOffer')]", - "{{.Name}}OSImagePublisher": "[variables('osImagePublisher')]", - "{{.Name}}OSImageSKU": "[variables('osImageSKU')]", - "{{.Name}}OSImageVersion": "[variables('osImageVersion')]", -{{end}} - "{{.Name}}Count": "[parameters('{{.Name}}Count')]", - "{{.Name}}VMNamePrefix": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}VMSize": "[parameters('{{.Name}}VMSize')]", - "{{.Name}}VMSizeTier": "[split(parameters('{{.Name}}VMSize'),'_')[0]]", -{{if .IsAvailabilitySets}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[add(div(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')), mod(add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),2), add(mod(variables('{{.Name}}Count'), variables('maxVMsPerStorageAccount')),1)))]", - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),variables('{{.Name}}Index'))]", - {{end}} - "{{.Name}}AvailabilitySet": "[concat('{{.Name}}-availabilitySet-', variables('nameSuffix'))]", - "{{.Name}}Offset": "[parameters('{{.Name}}Offset')]", -{{else}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountsCount": "[variables('maxStorageAccountsPerAgent')]", - {{end}} -{{end}} -{{if .IsCustomVNET}} - "{{.Name}}VnetSubnetID": "[parameters('{{.Name}}VnetSubnetID')]", -{{else}} - "{{.Name}}Subnet": "[parameters('{{.Name}}Subnet')]", - "{{.Name}}SubnetName": "[concat(variables('orchestratorName'), '-{{.Name}}subnet')]", - "{{.Name}}VnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('{{.Name}}SubnetName'))]", -{{end}} -{{if IsPublic .Ports}} - "{{.Name}}EndpointDNSNamePrefix": "[tolower(parameters('{{.Name}}EndpointDNSNamePrefix'))]", - "{{.Name}}IPAddressName": "[concat(variables('orchestratorName'), '-agent-ip-', variables('{{.Name}}EndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", - "{{.Name}}LbBackendPoolName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbID": "[resourceId('Microsoft.Network/loadBalancers',variables('{{.Name}}LbName'))]", - "{{.Name}}LbIPConfigID": "[concat(variables('{{.Name}}LbID'),'/frontendIPConfigurations/', variables('{{.Name}}LbIPConfigName'))]", - "{{.Name}}LbIPConfigName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - "{{.Name}}LbName": "[concat(variables('orchestratorName'), '-{{.Name}}-', variables('nameSuffix'))]", - {{if .IsWindows}} - "{{.Name}}WindowsRDPNatRangeStart": 3389, - "{{.Name}}WindowsRDPEndRangeStop": "[add(variables('{{.Name}}WindowsRDPNatRangeStart'), add(variables('{{.Name}}Count'),variables('{{.Name}}Count')))]", - {{end}} - {{end}} -`) - -func swarmSwarmagentvarsTBytes() ([]byte, error) { - return _swarmSwarmagentvarsT, nil -} - -func swarmSwarmagentvarsT() (*asset, error) { - bytes, err := swarmSwarmagentvarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmagentvars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmbaseT = []byte(`{ - "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", - "contentVersion": "1.0.0.0", - "parameters": { - {{range .AgentPoolProfiles}}{{template "agentparams.t" .}},{{end}} - {{if .HasWindows}} - {{template "windowsparams.t"}}, - {{end}} - {{template "masterparams.t" .}} - {{template "swarm/swarmparams.t" .}} - }, - "variables": { - {{range $index, $agent := .AgentPoolProfiles}} - "{{.Name}}Index": {{$index}}, - {{template "swarm/swarmagentvars.t" .}} - {{if .IsStorageAccount}} - "{{.Name}}StorageAccountOffset": "[mul(variables('maxStorageAccountsPerAgent'),{{$index}})]", - "{{.Name}}AccountName": "[concat(variables('storageAccountBaseName'), 'agnt{{$index}}')]", - {{if .HasDisks}} - "{{.Name}}DataAccountName": "[concat(variables('storageAccountBaseName'), 'data{{$index}}')]", - {{end}} - {{end}} - {{end}} - - {{template "swarm/swarmmastervars.t" .}} - }, - "resources": [ - {{range .AgentPoolProfiles}} - {{if .IsWindows}} - {{if .IsAvailabilitySets}} - {{template "swarm/swarmwinagentresourcesvmas.t" .}}, - {{else}} - {{template "swarm/swarmwinagentresourcesvmss.t" .}}, - {{end}} - {{else}} - {{if .IsAvailabilitySets}} - {{template "swarm/swarmagentresourcesvmas.t" .}}, - {{else}} - {{template "swarm/swarmagentresourcesvmss.t" .}}, - {{end}} - {{end}} - {{end}} - {{template "swarm/swarmmasterresources.t" .}} - ], - "outputs": { - {{range .AgentPoolProfiles}}{{template "agentoutputs.t" .}} - {{end}} - {{template "masteroutputs.t" .}} - } -} -`) - -func swarmSwarmbaseTBytes() ([]byte, error) { - return _swarmSwarmbaseT, nil -} - -func swarmSwarmbaseT() (*asset, error) { - bytes, err := swarmSwarmbaseTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmbase.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmmasterresourcesT = []byte(`{{if not .MasterProfile.IsCustomVNET}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('virtualNetworkName')]", - "properties": { - "addressSpace": { - "addressPrefixes": [ - {{GetVNETAddressPrefixes}} - ] - }, - "subnets": [ - {{GetVNETSubnets false}} - ] - }, - "type": "Microsoft.Network/virtualNetworks" - }, -{{end}} -{{if .MasterProfile.IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .MasterProfile.IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('masterAvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, - { - "apiVersion": "[variables('apiVersionStorage')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('masterStorageAccountName')]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('masterVMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('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": "[variables('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": "[variables('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": "[variables('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": [ -{{if not .MasterProfile.IsCustomVNET}} - "[variables('vnetID')]", -{{end}} - "[variables('masterLbID')]", - "[concat(variables('masterSshPort22InboundNatRuleIdPrefix'),'0')]", - "[concat(variables('masterSshInboundNatRuleIdPrefix'),copyIndex())]" - ], - "location": "[variables('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" - }, - { -{{if .MasterProfile.IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/networkInterfaces/', variables('masterVMNamePrefix'), 'nic-', copyIndex())]", - "[concat('Microsoft.Compute/availabilitySets/',variables('masterAvailabilitySet'))]" -{{if .MasterProfile.IsStorageAccount}} - ,"[variables('masterStorageAccountName')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('masterVMNamePrefix'), copyIndex())]" - }, - "location": "[variables('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())]", - {{if .OrchestratorProfile.IsSwarmMode}} - {{if not .MasterProfile.IsRHEL}} - {{GetMasterSwarmModeCustomData}} - {{end}} - {{else}} - {{GetMasterSwarmCustomData}} - {{end}} - "linuxConfiguration": { - "disablePasswordAuthentication": true, - "ssh": { - "publicKeys": [ - { - "keyData": "[variables('sshRSAPublicKey')]", - "path": "[variables('sshKeyPath')]" - } - ] - } - } - {{if .LinuxProfile.HasSecrets}} - , - "secrets": "[variables('linuxProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - {{if .OrchestratorProfile.IsSwarmMode}} - "offer": "[variables('masterOSImageOffer')]", - "publisher": "[variables('masterOSImagePublisher')]", - "sku": "[variables('masterOSImageSKU')]", - "version": "[variables('masterOSImageVersion')]" - {{else}} - "offer": "[variables('osImageOffer')]", - "publisher": "[variables('osImagePublisher')]", - "sku": "[variables('osImageSKU')]", - "version": "[variables('osImageVersion')]" - {{end}} - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .MasterProfile.IsStorageAccount}} - ,"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')]" - } -{{end}} -{{if ne .MasterProfile.OSDiskSizeGB 0}} - ,"diskSizeGB": {{.MasterProfile.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[variables('masterCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', concat(variables('masterVMNamePrefix'), copyIndex()))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('masterVMNamePrefix'), copyIndex(), '/configuremaster')]", - "properties": { - "publisher": "Microsoft.Azure.Extensions", - "settings": { - "commandToExecute": "[variables('masterCustomScript')]", - "fileUris": [ -{{if .MasterProfile.IsRHEL}} - "[concat('{{ GetConfigurationScriptRootURL }}', variables('configureClusterScriptFile'))]" -{{end}} - ] - }, - "type": "CustomScript", - "typeHandlerVersion": "2.0" - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } -`) - -func swarmSwarmmasterresourcesTBytes() ([]byte, error) { - return _swarmSwarmmasterresourcesT, nil -} - -func swarmSwarmmasterresourcesT() (*asset, error) { - bytes, err := swarmSwarmmasterresourcesTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmmasterresources.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmmastervarsT = []byte(` "adminUsername": "[parameters('linuxAdminUsername')]", - "maxVMsPerPool": 100, - "apiVersionDefault": "2016-03-30", -{{if .OrchestratorProfile.IsSwarmMode}} - "configureClusterScriptFile": "configure-swarmmode-cluster.sh", -{{else}} - "configureClusterScriptFile": "configure-swarm-cluster.sh", -{{end}} -{{if .MasterProfile.IsRHEL}} - "agentCustomScript": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash ',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1 &\" &')]", -{{else}} - "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 &\" &')]", -{{end}} - "agentMaxVMs": 100, - "clusterInstallParameters": "[concat(variables('orchestratorVersion'), ' ',variables('dockerComposeVersion'), ' ',variables('masterCount'), ' ',variables('masterVMNamePrefix'), ' ',variables('masterFirstAddrOctet4'), ' ',variables('adminUsername'),' ',variables('postInstallScriptURI'),' ',variables('masterFirstAddrPrefix'),' ', parameters('dockerEngineDownloadRepo'), ' ', parameters('dockerComposeDownloadURL'))]", -{{if .LinuxProfile.HasSecrets}} - "linuxProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('linuxKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('linuxKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ], -{{end}} - "masterAvailabilitySet": "[concat(variables('orchestratorName'), '-master-availabilitySet-', variables('nameSuffix'))]", - "masterCount": {{.MasterProfile.Count}}, -{{if .MasterProfile.IsRHEL}} - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash ',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", -{{else}} - "masterCustomScript": "[concat('/bin/bash -c \"/bin/bash /opt/azure/containers/',variables('configureClusterScriptFile'), ' ',variables('clusterInstallParameters'),' >> /var/log/azure/cluster-bootstrap.log 2>&1\"')]", -{{end}} - "masterEndpointDNSNamePrefix": "[tolower(parameters('masterEndpointDNSNamePrefix'))]", - "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'))]", - "masterLbName": "[concat(variables('orchestratorName'), '-master-lb-', variables('nameSuffix'))]", - "masterPublicIPAddressName": "[concat(variables('orchestratorName'), '-master-ip-', variables('masterEndpointDNSNamePrefix'), '-', variables('nameSuffix'))]", -{{if .MasterProfile.IsCustomVNET}} - "masterVnetSubnetID": "[parameters('masterVnetSubnetID')]", -{{else}} - "masterSubnet": "[parameters('masterSubnet')]", - "masterSubnetName": "[concat(variables('orchestratorName'), '-masterSubnet')]", - "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", - "masterVnetSubnetID": "[concat(variables('vnetID'),'/subnets/',variables('masterSubnetName'))]", - "virtualNetworkName": "[concat(variables('orchestratorName'), '-vnet-', variables('nameSuffix'))]", -{{end}} - "masterFirstAddrOctets": "[split(parameters('firstConsecutiveStaticIP'),'.')]", - "masterFirstAddrOctet4": "[variables('masterFirstAddrOctets')[3]]", - "masterFirstAddrPrefix": "[concat(variables('masterFirstAddrOctets')[0],'.',variables('masterFirstAddrOctets')[1],'.',variables('masterFirstAddrOctets')[2],'.')]", - "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')]" - } - ] - ], -{{if .OrchestratorProfile.IsSwarmMode}} - "orchestratorName": "swarmm", - "masterOSImageOffer": {{GetMasterOSImageOffer}}, - "masterOSImagePublisher": {{GetMasterOSImagePublisher}}, - "masterOSImageSKU": {{GetMasterOSImageSKU}}, - "masterOSImageVersion": {{GetMasterOSImageVersion}}, - {{GetSwarmModeVersions}} -{{else}} - "orchestratorName": "swarm", - "osImageOffer": "[parameters('osImageOffer')]", - "osImagePublisher": "[parameters('osImagePublisher')]", - "osImageSKU": "14.04.5-LTS", - "osImageVersion": "14.04.201706190", - {{getSwarmVersions}} -{{end}} - "locations": [ - "[resourceGroup().location]", - "[parameters('location')]" - ], - "location": "[variables('locations')[mod(add(2,length(parameters('location'))),add(1,length(parameters('location'))))]]", - "postInstallScriptURI": "disabled", - "sshKeyPath": "[concat('/home/', variables('adminUsername'), '/.ssh/authorized_keys')]", -{{if .HasStorageAccountDisks}} - "apiVersionStorage": "2015-06-15", - "maxVMsPerStorageAccount": 20, - "maxStorageAccountsPerAgent": "[div(variables('maxVMsPerPool'),variables('maxVMsPerStorageAccount'))]", - "dataStorageAccountPrefixSeed": 97, - "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'))]", - "vmsPerStorageAccount": 20, - "storageAccountBaseName": "[uniqueString(concat(variables('masterEndpointDNSNamePrefix'),variables('location')))]", - {{GetSizeMap}}, -{{else}} - "storageAccountPrefixes": [], - "storageAccountBaseName": "", -{{end}} -{{if .HasManagedDisks}} - "apiVersionStorageManagedDisks": "2016-04-30-preview", -{{end}} -{{if .MasterProfile.IsStorageAccount}} - "masterStorageAccountName": "[concat(variables('storageAccountBaseName'), '0')]", -{{end}} - "sshRSAPublicKey": "[parameters('sshRSAPublicKey')]" -{{if .HasWindows}} - ,"windowsAdminUsername": "[parameters('windowsAdminUsername')]", - "windowsAdminPassword": "[parameters('windowsAdminPassword')]", - "agentWindowsPublisher": "[parameters('agentWindowsPublisher')]", - "agentWindowsOffer": "[parameters('agentWindowsOffer')]", - "agentWindowsSku": "[parameters('agentWindowsSku')]", - "agentWindowsVersion": "[parameters('agentWindowsVersion')]", - "singleQuote": "'", - "windowsCustomScriptArguments": "[concat('$arguments = ', variables('singleQuote'),'-SwarmMasterIP ', variables('masterFirstAddrPrefix'), variables('masterFirstAddrOctet4'), variables('singleQuote'), ' ; ')]", - "windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\CustomDataSetupScript.ps1' ; $inputStream = New-Object System.IO.FileStream $inputFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read) ; $sr = New-Object System.IO.StreamReader(New-Object System.IO.Compression.GZipStream($inputStream, [System.IO.Compression.CompressionMode]::Decompress)) ; $sr.ReadToEnd() | Out-File($outputFile) ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; ", - "windowsCustomScript": "[concat('powershell.exe -ExecutionPolicy Unrestricted -command \"', variables('windowsCustomScriptArguments'), variables('windowsCustomScriptSuffix'), '\" > %SYSTEMDRIVE%\\AzureData\\CustomDataSetupScript.log 2>&1')]", - "agentWindowsBackendPort": 3389 - {{if .WindowsProfile.HasSecrets}} - , - "windowsProfileSecrets" : - [ - {{range $vIndex, $vault := .LinuxProfile.Secrets}} - {{if $vIndex}} , {{end}} - { - "sourceVault":{ - "id":"[parameters('windowsKeyVaultID{{$vIndex}}')]" - }, - "vaultCertificates":[ - {{range $cIndex, $cert := $vault.VaultCertificates}} - {{if $cIndex}} , {{end}} - { - "certificateUrl" :"[parameters('windowsKeyVaultID{{$vIndex}}CertificateURL{{$cIndex}}')]", - "certificateStore" :"[parameters('windowsKeyVaultID{{$vIndex}}CertificateStore{{$cIndex}}')]" - } - {{end}} - ] - } - {{end}} - ] - {{end}} -{{end}} - -`) - -func swarmSwarmmastervarsTBytes() ([]byte, error) { - return _swarmSwarmmastervarsT, nil -} - -func swarmSwarmmastervarsT() (*asset, error) { - bytes, err := swarmSwarmmastervarsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmmastervars.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmparamsT = []byte(` , - "dockerEngineDownloadRepo": { - "defaultValue": "", - "metadata": { - "description": "Docker engine download repo." - }, - "type": "string" - }, - "dockerComposeDownloadURL": { - "defaultValue": "", - "metadata": { - "description": "Docker compose download URL." - }, - "type": "string" - }`) - -func swarmSwarmparamsTBytes() ([]byte, error) { - return _swarmSwarmparamsT, nil -} - -func swarmSwarmparamsT() (*asset, error) { - bytes, err := swarmSwarmparamsTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmparams.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmwinagentresourcesvmasT = []byte(` { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "loop" - }, - "dependsOn": [ -{{if not .IsCustomVNET}} - "[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "ipConfigurations": [ - { - "name": "ipConfigNode", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('{{.Name}}LbName'), '/backendAddressPools/',variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "privateIPAllocationMethod": "Dynamic", - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ] - }, - "type": "Microsoft.Network/networkInterfaces" - }, -{{if .IsManagedDisks}} - { - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": { - "platformFaultDomainCount": 2, - "platformUpdateDomainCount": 3, - "managed": "true" - }, - "type": "Microsoft.Compute/availabilitySets" - }, -{{else if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{if .HasDisks}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "datadiskLoop" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(variables('dataStorageAccountPrefixSeed')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, - {{end}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}AvailabilitySet')]", - "properties": {}, - "type": "Microsoft.Compute/availabilitySets" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ -{{if .IsStorageAccount}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - {{if .HasDisks}} - "[concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('dataStorageAccountPrefixSeed')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}DataAccountName'))]", - {{end}} -{{end}} - "[concat('Microsoft.Network/networkInterfaces/', variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset')))]", - "[concat('Microsoft.Compute/availabilitySets/', variables('{{.Name}}AvailabilitySet'))]" - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]", - "properties": { - "availabilitySet": { - "id": "[resourceId('Microsoft.Compute/availabilitySets',variables('{{.Name}}AvailabilitySet'))]" - }, - "hardwareProfile": { - "vmSize": "[variables('{{.Name}}VMSize')]" - }, - "networkProfile": { - "networkInterfaces": [ - { - "id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('{{.Name}}VMNamePrefix'), 'nic-', copyIndex(variables('{{.Name}}Offset'))))]" - } - ] - }, - "osProfile": { - "computername": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs', copyIndex(variables('{{.Name}}Offset')), add(900,variables('{{.Name}}Index')))]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{if IsSwarmMode}} - {{GetWinAgentSwarmModeCustomData}} - {{else}} - {{GetWinAgentSwarmCustomData}} - {{end}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - {{GetDataDisks .}} - "imageReference": { - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "[variables('agentWindowsVersion')]" - } - ,"osDisk": { - "caching": "ReadOnly" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')),'-osdisk')]" - ,"vhd": { - "uri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(div(copyIndex(variables('{{.Name}}Offset')),variables('maxVMsPerStorageAccount')),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')),variables('apiVersionStorage')).primaryEndpoints.blob,'osdisk/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '-osdisk.vhd')]" - } -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - } - }, - "type": "Microsoft.Compute/virtualMachines" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "copy": { - "count": "[sub(variables('{{.Name}}Count'), variables('{{.Name}}Offset'))]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Compute/virtualMachines/', variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), copyIndex(variables('{{.Name}}Offset')), '/cse')]", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('windowsCustomScript')]" - } - }, - "type": "Microsoft.Compute/virtualMachines/extensions" - } -`) - -func swarmSwarmwinagentresourcesvmasTBytes() ([]byte, error) { - return _swarmSwarmwinagentresourcesvmasT, nil -} - -func swarmSwarmwinagentresourcesvmasT() (*asset, error) { - bytes, err := swarmSwarmwinagentresourcesvmasTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmwinagentresourcesvmas.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _swarmSwarmwinagentresourcesvmssT = []byte(`{{if .IsStorageAccount}} - { - "apiVersion": "[variables('apiVersionStorage')]", - "copy": { - "count": "[variables('{{.Name}}StorageAccountsCount')]", - "name": "vmLoopNode" - }, - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[concat(variables('storageAccountPrefixes')[mod(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(copyIndex(),variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "properties": { - "accountType": "[variables('vmSizesMap')[variables('{{.Name}}VMSize')].storageAccountType]" - }, - "type": "Microsoft.Storage/storageAccounts" - }, -{{end}} -{{if IsPublic .Ports}} - { - "apiVersion": "[variables('apiVersionDefault')]", - "location": "[variables('location')]", - "name": "[variables('{{.Name}}IPAddressName')]", - "properties": { - "dnsSettings": { - "domainNameLabel": "[variables('{{.Name}}EndpointDNSNamePrefix')]" - }, - "publicIPAllocationMethod": "Dynamic" - }, - "type": "Microsoft.Network/publicIPAddresses" - }, - { - "apiVersion": "[variables('apiVersionDefault')]", - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('{{.Name}}IPAddressName'))]" - ], - "location": "[variables('location')]", - "name": "[variables('{{.Name}}LbName')]", - "properties": { - "backendAddressPools": [ - { - "name": "[variables('{{.Name}}LbBackendPoolName')]" - } - ], - "frontendIPConfigurations": [ - { - "name": "[variables('{{.Name}}LbIPConfigName')]", - "properties": { - "publicIPAddress": { - "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('{{.Name}}IPAddressName'))]" - } - } - } - ], - "inboundNatRules": [], - "loadBalancingRules": [ - {{(GetLBRules .Name .Ports)}} - ], - "probes": [ - {{(GetProbes .Ports)}} - ], - "inboundNatPools": [ - { - "name": "[concat('RDP-', variables('{{.Name}}VMNamePrefix'))]", - "properties": { - "frontendIPConfiguration": { - "id": "[variables('{{.Name}}LbIPConfigID')]" - }, - "protocol": "Tcp", - "frontendPortRangeStart": "[variables('{{.Name}}WindowsRDPNatRangeStart')]", - "frontendPortRangeEnd": "[variables('{{.Name}}WindowsRDPEndRangeStop')]", - "backendPort": "[variables('agentWindowsBackendPort')]" - } - } - ] - }, - "type": "Microsoft.Network/loadBalancers" - }, -{{end}} - { -{{if .IsManagedDisks}} - "apiVersion": "[variables('apiVersionStorageManagedDisks')]", -{{else}} - "apiVersion": "[variables('apiVersionDefault')]", -{{end}} - "dependsOn": [ - "[concat('Microsoft.Network/publicIPAddresses/', variables('masterPublicIPAddressName'))]" -{{if .IsStorageAccount}} - ,"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]", - "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName'))]" -{{end}} -{{if not .IsCustomVNET}} - ,"[variables('vnetID')]" -{{end}} -{{if IsPublic .Ports}} - ,"[variables('{{.Name}}LbID')]" -{{end}} - ], - "tags": - { - "creationSource" : "[concat('acsengine-', variables('{{.Name}}VMNamePrefix'), '-vmss')]" - }, - "location": "[variables('location')]", - "name": "[concat(variables('{{.Name}}VMNamePrefix'), '-vmss')]", - "properties": { - "upgradePolicy": { - "mode": "Automatic" - }, - "virtualMachineProfile": { - "networkProfile": { - "networkInterfaceConfigurations": [ - { - "name": "nic", - "properties": { - "ipConfigurations": [ - { - "name": "nicipconfig", - "properties": { -{{if IsPublic .Ports}} - "loadBalancerBackendAddressPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/backendAddressPools/', variables('{{.Name}}LbBackendPoolName'))]" - } - ], - "loadBalancerInboundNatPools": [ - { - "id": "[concat(variables('{{.Name}}LbID'), '/inboundNatPools/', 'RDP-', variables('{{.Name}}VMNamePrefix'))]" - } - ], -{{end}} - "subnet": { - "id": "[variables('{{.Name}}VnetSubnetID')]" - } - } - } - ], - "primary": "true" - } - } - ] - }, - "osProfile": { - "computerNamePrefix": "[concat(substring(variables('nameSuffix'), 0, 5), 'acs')]", - "adminUsername": "[variables('windowsAdminUsername')]", - "adminPassword": "[variables('windowsAdminPassword')]", - {{if IsSwarmMode}} - {{GetWinAgentSwarmModeCustomData}} - {{else}} - {{GetWinAgentSwarmCustomData}} - {{end}} - {{if HasWindowsSecrets}} - , - "secrets": "[variables('windowsProfileSecrets')]" - {{end}} - }, - "storageProfile": { - "imageReference": { - "publisher": "[variables('agentWindowsPublisher')]", - "offer": "[variables('agentWindowsOffer')]", - "sku": "[variables('agentWindowsSku')]", - "version": "[variables('agentWindowsVersion')]" - }, - "osDisk": { - "caching": "ReadWrite" - ,"createOption": "FromImage" -{{if .IsStorageAccount}} - ,"name": "vmssosdisk" - ,"vhdContainers": [ - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(0,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage') ).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(1,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(2,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(3,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]", - "[concat(reference(concat('Microsoft.Storage/storageAccounts/',variables('storageAccountPrefixes')[mod(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('storageAccountPrefixes')[div(add(4,variables('{{.Name}}StorageAccountOffset')),variables('storageAccountPrefixesCount'))],variables('{{.Name}}AccountName')), variables('apiVersionStorage')).primaryEndpoints.blob, 'osdisk')]" - ] -{{end}} -{{if ne .OSDiskSizeGB 0}} - ,"diskSizeGB": {{.OSDiskSizeGB}} -{{end}} - } - }, - "extensionProfile": { - "extensions": [ - { - "name": "vmssCustomScriptExtension", - "properties": { - "publisher": "Microsoft.Compute", - "type": "CustomScriptExtension", - "typeHandlerVersion": "1.8", - "autoUpgradeMinorVersion": true, - "settings": { - "commandToExecute": "[variables('windowsCustomScript')]" - } - } - } - ] - } - } - }, - "sku": { - "capacity": "[variables('{{.Name}}Count')]", - "name": "[variables('{{.Name}}VMSize')]", - "tier": "[variables('{{.Name}}VMSizeTier')]" - }, - "type": "Microsoft.Compute/virtualMachineScaleSets" - } -`) - -func swarmSwarmwinagentresourcesvmssTBytes() ([]byte, error) { - return _swarmSwarmwinagentresourcesvmssT, nil -} - -func swarmSwarmwinagentresourcesvmssT() (*asset, error) { - bytes, err := swarmSwarmwinagentresourcesvmssTBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "swarm/swarmwinagentresourcesvmss.t", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - var _windowsparamsT = []byte(` {{if IsKubernetes}} "kubeBinariesSASURL": { "metadata": { @@ -28463,38 +19553,9 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "agentoutputs.t": agentoutputsT, - "agentparams.t": agentparamsT, - "dcos/bstrap/bootstrapcustomdata.yml": dcosBstrapBootstrapcustomdataYml, - "dcos/bstrap/bootstrapparams.t": dcosBstrapBootstrapparamsT, - "dcos/bstrap/bootstrapprovision.sh": dcosBstrapBootstrapprovisionSh, - "dcos/bstrap/bootstrapresources.t": dcosBstrapBootstrapresourcesT, - "dcos/bstrap/bootstrapvars.t": dcosBstrapBootstrapvarsT, - "dcos/bstrap/dcos1.11.0.customdata.t": dcosBstrapDcos1110CustomdataT, - "dcos/bstrap/dcos1.11.2.customdata.t": dcosBstrapDcos1112CustomdataT, - "dcos/bstrap/dcosbase.t": dcosBstrapDcosbaseT, - "dcos/bstrap/dcosmasterresources.t": dcosBstrapDcosmasterresourcesT, - "dcos/bstrap/dcosmastervars.t": dcosBstrapDcosmastervarsT, - "dcos/bstrap/dcosprovision.sh": dcosBstrapDcosprovisionSh, - "dcos/dcosWindowsAgentResourcesVmas.t": dcosDcoswindowsagentresourcesvmasT, - "dcos/dcosWindowsAgentResourcesVmss.t": dcosDcoswindowsagentresourcesvmssT, - "dcos/dcosWindowsProvision.ps1": dcosDcoswindowsprovisionPs1, - "dcos/dcosagentresourcesvmas.t": dcosDcosagentresourcesvmasT, - "dcos/dcosagentresourcesvmss.t": dcosDcosagentresourcesvmssT, - "dcos/dcosagentvars.t": dcosDcosagentvarsT, - "dcos/dcosbase.t": dcosDcosbaseT, - "dcos/dcoscustomdata110.t": dcosDcoscustomdata110T, - "dcos/dcoscustomdata184.t": dcosDcoscustomdata184T, - "dcos/dcoscustomdata187.t": dcosDcoscustomdata187T, - "dcos/dcoscustomdata188.t": dcosDcoscustomdata188T, - "dcos/dcoscustomdata190.t": dcosDcoscustomdata190T, - "dcos/dcoscustomdata198.t": dcosDcoscustomdata198T, - "dcos/dcosmasterresources.t": dcosDcosmasterresourcesT, - "dcos/dcosmastervars.t": dcosDcosmastervarsT, - "dcos/dcosparams.t": dcosDcosparamsT, - "dcos/dcosprovision.sh": dcosDcosprovisionSh, - "dcos/dcosprovisionsource.sh": dcosDcosprovisionsourceSh, - "iaasoutputs.t": iaasoutputsT, + "agentoutputs.t": agentoutputsT, + "agentparams.t": agentparamsT, + "iaasoutputs.t": iaasoutputsT, "k8s/addons/aad-default-admin-group-rbac.yaml": k8sAddonsAadDefaultAdminGroupRbacYaml, "k8s/addons/aad-pod-identity.yaml": k8sAddonsAadPodIdentityYaml, "k8s/addons/aci-connector.yaml": k8sAddonsAciConnectorYaml, @@ -28593,19 +19654,6 @@ var _bindata = map[string]func() (*asset, error){ "k8s/windowskubeletfunc.ps1": k8sWindowskubeletfuncPs1, "masteroutputs.t": masteroutputsT, "masterparams.t": masterparamsT, - "swarm/Install-ContainerHost-And-Join-Swarm.ps1": swarmInstallContainerhostAndJoinSwarmPs1, - "swarm/Join-SwarmMode-cluster.ps1": swarmJoinSwarmmodeClusterPs1, - "swarm/configure-swarm-cluster.sh": swarmConfigureSwarmClusterSh, - "swarm/configure-swarmmode-cluster.sh": swarmConfigureSwarmmodeClusterSh, - "swarm/swarmagentresourcesvmas.t": swarmSwarmagentresourcesvmasT, - "swarm/swarmagentresourcesvmss.t": swarmSwarmagentresourcesvmssT, - "swarm/swarmagentvars.t": swarmSwarmagentvarsT, - "swarm/swarmbase.t": swarmSwarmbaseT, - "swarm/swarmmasterresources.t": swarmSwarmmasterresourcesT, - "swarm/swarmmastervars.t": swarmSwarmmastervarsT, - "swarm/swarmparams.t": swarmSwarmparamsT, - "swarm/swarmwinagentresourcesvmas.t": swarmSwarmwinagentresourcesvmasT, - "swarm/swarmwinagentresourcesvmss.t": swarmSwarmwinagentresourcesvmssT, "windowsparams.t": windowsparamsT, } @@ -28652,40 +19700,7 @@ type bintree struct { var _bintree = &bintree{nil, map[string]*bintree{ "agentoutputs.t": {agentoutputsT, map[string]*bintree{}}, "agentparams.t": {agentparamsT, map[string]*bintree{}}, - "dcos": {nil, map[string]*bintree{ - "bstrap": {nil, map[string]*bintree{ - "bootstrapcustomdata.yml": {dcosBstrapBootstrapcustomdataYml, map[string]*bintree{}}, - "bootstrapparams.t": {dcosBstrapBootstrapparamsT, map[string]*bintree{}}, - "bootstrapprovision.sh": {dcosBstrapBootstrapprovisionSh, map[string]*bintree{}}, - "bootstrapresources.t": {dcosBstrapBootstrapresourcesT, map[string]*bintree{}}, - "bootstrapvars.t": {dcosBstrapBootstrapvarsT, map[string]*bintree{}}, - "dcos1.11.0.customdata.t": {dcosBstrapDcos1110CustomdataT, map[string]*bintree{}}, - "dcos1.11.2.customdata.t": {dcosBstrapDcos1112CustomdataT, map[string]*bintree{}}, - "dcosbase.t": {dcosBstrapDcosbaseT, map[string]*bintree{}}, - "dcosmasterresources.t": {dcosBstrapDcosmasterresourcesT, map[string]*bintree{}}, - "dcosmastervars.t": {dcosBstrapDcosmastervarsT, map[string]*bintree{}}, - "dcosprovision.sh": {dcosBstrapDcosprovisionSh, map[string]*bintree{}}, - }}, - "dcosWindowsAgentResourcesVmas.t": {dcosDcoswindowsagentresourcesvmasT, map[string]*bintree{}}, - "dcosWindowsAgentResourcesVmss.t": {dcosDcoswindowsagentresourcesvmssT, map[string]*bintree{}}, - "dcosWindowsProvision.ps1": {dcosDcoswindowsprovisionPs1, map[string]*bintree{}}, - "dcosagentresourcesvmas.t": {dcosDcosagentresourcesvmasT, map[string]*bintree{}}, - "dcosagentresourcesvmss.t": {dcosDcosagentresourcesvmssT, map[string]*bintree{}}, - "dcosagentvars.t": {dcosDcosagentvarsT, map[string]*bintree{}}, - "dcosbase.t": {dcosDcosbaseT, map[string]*bintree{}}, - "dcoscustomdata110.t": {dcosDcoscustomdata110T, map[string]*bintree{}}, - "dcoscustomdata184.t": {dcosDcoscustomdata184T, map[string]*bintree{}}, - "dcoscustomdata187.t": {dcosDcoscustomdata187T, map[string]*bintree{}}, - "dcoscustomdata188.t": {dcosDcoscustomdata188T, map[string]*bintree{}}, - "dcoscustomdata190.t": {dcosDcoscustomdata190T, map[string]*bintree{}}, - "dcoscustomdata198.t": {dcosDcoscustomdata198T, map[string]*bintree{}}, - "dcosmasterresources.t": {dcosDcosmasterresourcesT, map[string]*bintree{}}, - "dcosmastervars.t": {dcosDcosmastervarsT, map[string]*bintree{}}, - "dcosparams.t": {dcosDcosparamsT, map[string]*bintree{}}, - "dcosprovision.sh": {dcosDcosprovisionSh, map[string]*bintree{}}, - "dcosprovisionsource.sh": {dcosDcosprovisionsourceSh, map[string]*bintree{}}, - }}, - "iaasoutputs.t": {iaasoutputsT, map[string]*bintree{}}, + "iaasoutputs.t": {iaasoutputsT, map[string]*bintree{}}, "k8s": {nil, map[string]*bintree{ "addons": {nil, map[string]*bintree{ "aad-default-admin-group-rbac.yaml": {k8sAddonsAadDefaultAdminGroupRbacYaml, map[string]*bintree{}}, @@ -28794,21 +19809,6 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, "masteroutputs.t": {masteroutputsT, map[string]*bintree{}}, "masterparams.t": {masterparamsT, map[string]*bintree{}}, - "swarm": {nil, map[string]*bintree{ - "Install-ContainerHost-And-Join-Swarm.ps1": {swarmInstallContainerhostAndJoinSwarmPs1, map[string]*bintree{}}, - "Join-SwarmMode-cluster.ps1": {swarmJoinSwarmmodeClusterPs1, map[string]*bintree{}}, - "configure-swarm-cluster.sh": {swarmConfigureSwarmClusterSh, map[string]*bintree{}}, - "configure-swarmmode-cluster.sh": {swarmConfigureSwarmmodeClusterSh, map[string]*bintree{}}, - "swarmagentresourcesvmas.t": {swarmSwarmagentresourcesvmasT, map[string]*bintree{}}, - "swarmagentresourcesvmss.t": {swarmSwarmagentresourcesvmssT, map[string]*bintree{}}, - "swarmagentvars.t": {swarmSwarmagentvarsT, map[string]*bintree{}}, - "swarmbase.t": {swarmSwarmbaseT, map[string]*bintree{}}, - "swarmmasterresources.t": {swarmSwarmmasterresourcesT, map[string]*bintree{}}, - "swarmmastervars.t": {swarmSwarmmastervarsT, map[string]*bintree{}}, - "swarmparams.t": {swarmSwarmparamsT, map[string]*bintree{}}, - "swarmwinagentresourcesvmas.t": {swarmSwarmwinagentresourcesvmasT, map[string]*bintree{}}, - "swarmwinagentresourcesvmss.t": {swarmSwarmwinagentresourcesvmssT, map[string]*bintree{}}, - }}, "windowsparams.t": {windowsparamsT, map[string]*bintree{}}, }} diff --git a/pkg/engine/testdata/disks-managed/dcos-vmas.json b/pkg/engine/testdata/disks-managed/dcos-vmas.json deleted file mode 100644 index 8650369fd..000000000 --- a/pkg/engine/testdata/disks-managed/dcos-vmas.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "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/engine/testdata/disks-managed/dcos-vmss.json b/pkg/engine/testdata/disks-managed/dcos-vmss.json deleted file mode 100644 index 4516d55da..000000000 --- a/pkg/engine/testdata/disks-managed/dcos-vmss.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "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/engine/testdata/disks-managed/swarm-vmas.json b/pkg/engine/testdata/disks-managed/swarm-vmas.json deleted file mode 100644 index bb76f540e..000000000 --- a/pkg/engine/testdata/disks-managed/swarm-vmas.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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/engine/testdata/disks-managed/swarm-vmss.json b/pkg/engine/testdata/disks-managed/swarm-vmss.json deleted file mode 100644 index e9b0085a3..000000000 --- a/pkg/engine/testdata/disks-managed/swarm-vmss.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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/engine/testdata/disks-managed/swarm-windows-vmas.json b/pkg/engine/testdata/disks-managed/swarm-windows-vmas.json deleted file mode 100644 index b09fb6246..000000000 --- a/pkg/engine/testdata/disks-managed/swarm-windows-vmas.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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], - "osType": "Windows" - }, - { - "name": "agent1public", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agent1public", - "availabilityProfile": "AvailabilitySet", - "storageProfile": "ManagedDisks", - "diskSizesGB": [1], - "osType": "Windows", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/disks-managed/swarm-windows-vmss.json b/pkg/engine/testdata/disks-managed/swarm-windows-vmss.json deleted file mode 100644 index 9f9d7a55f..000000000 --- a/pkg/engine/testdata/disks-managed/swarm-windows-vmss.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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], - "osType": "Windows" - }, - { - "name": "agent1public", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agent1public", - "availabilityProfile": "VirtualMachineScaleSets", - "storageProfile": "ManagedDisks", - "diskSizesGB": [1], - "osType": "Windows", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/disks-managed/swarmmode-vmas.json b/pkg/engine/testdata/disks-managed/swarmmode-vmas.json deleted file mode 100644 index 6d138604a..000000000 --- a/pkg/engine/testdata/disks-managed/swarmmode-vmas.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/disks-managed/swarmmode-vmss.json b/pkg/engine/testdata/disks-managed/swarmmode-vmss.json deleted file mode 100644 index 99638bd64..000000000 --- a/pkg/engine/testdata/disks-managed/swarmmode-vmss.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/disks-storageaccount/dcos.json b/pkg/engine/testdata/disks-storageaccount/dcos.json deleted file mode 100644 index 8a56269d5..000000000 --- a/pkg/engine/testdata/disks-storageaccount/dcos.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "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/engine/testdata/disks-storageaccount/swarm.json b/pkg/engine/testdata/disks-storageaccount/swarm.json deleted file mode 100644 index 7517d0b58..000000000 --- a/pkg/engine/testdata/disks-storageaccount/swarm.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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/engine/testdata/disks-storageaccount/swarmmode.json b/pkg/engine/testdata/disks-storageaccount/swarmmode.json deleted file mode 100644 index 5f8a27126..000000000 --- a/pkg/engine/testdata/disks-storageaccount/swarmmode.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/extensions/dcos.json b/pkg/engine/testdata/extensions/dcos.json deleted file mode 100644 index bf8999725..000000000 --- a/pkg/engine/testdata/extensions/dcos.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "masterProfile": { - "count": 1, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2", - "preProvisionExtension": { - "name": "hello-world", - "singleOrAll": "All" - } - }, - "agentPoolProfiles": [ - { - "name": "agentpool1", - "count": 3, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet", - "preProvisionExtension": { - "name": "hello-world", - "singleOrAll": "All" - } - }, - { - "name": "agentpool2", - "count": 3, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - }, - "extensionProfiles": [ - { - "name": "hello-world", - "version": "v1", - "rootURL": "https://raw.githubusercontent.com/Azure/aks-engine/master/", - "script": "hello.sh" - } - ] - } -} diff --git a/pkg/engine/testdata/extensions/swarmmode.json b/pkg/engine/testdata/extensions/swarmmode.json deleted file mode 100644 index 6b28cf8e3..000000000 --- a/pkg/engine/testdata/extensions/swarmmode.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "apiVersion": "vlabs", - "plan": {}, - "properties": { - "provisioningState": "", - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2", - "firstConsecutiveStaticIP": "172.16.0.5", - "preProvisionExtension": { - "name": "hello-world-k8s", - "singleOrAll": "all" - }, - "extensions": [ - { - "name": "hello-world-k8s", - "singleOrAll": "all" - } - ] - }, - "agentPoolProfiles": [ - { - "name": "agentpool1", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentdns1", - "ports": [ - 80, - 443, - 8080 - ], - "availabilityProfile": "AvailabilitySet", - "storageProfile": "StorageAccount", - "extensions": [ - { - "name": "hello-world-k8s", - "singleOrAll": "all" - } - ] - }, - { - "name": "agentpool2", - "count": 3, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet", - "storageProfile": "StorageAccount" - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - }, - "extensionProfiles": [ - { - "name": "hello-world-k8s", - "version": "v1", - "extensionParameters": "extensionParameters", - "rootURL": "https://raw.githubusercontent.com/Azure/aks-engine/master/", - "script": "test.sh" - } - ], - "windowsProfile": {}, - "servicePrincipalProfile": {}, - "certificateProfile": {} - } -} diff --git a/pkg/engine/testdata/key-vault-certs/dcos.json b/pkg/engine/testdata/key-vault-certs/dcos.json deleted file mode 100644 index 3f8049183..000000000 --- a/pkg/engine/testdata/key-vault-certs/dcos.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - }, - "secrets":[ - { - "sourceVault":{ - "id":"vaultId" - }, - "vaultCertificates":[ - { - "certificateUrl" :"http://url1" - } - ] - } - ] - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/key-vault-certs/swarm.json b/pkg/engine/testdata/key-vault-certs/swarm.json deleted file mode 100644 index 92c2d7473..000000000 --- a/pkg/engine/testdata/key-vault-certs/swarm.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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" - }, - { - "name": "agentpoolw", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Windows" - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$", - "secrets":[ - { - "sourceVault":{ - "id":"vaultId" - }, - "vaultCertificates":[ - { - "certificateUrl" :"http://url3", - "certificateStore" : "store" - }, - { - "certificateUrl" :"http://url4", - "certificateStore" : "store" - } - ] - } - ] - }, - "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/engine/testdata/key-vault-certs/swarmmode.json b/pkg/engine/testdata/key-vault-certs/swarmmode.json deleted file mode 100644 index 7f4a9619f..000000000 --- a/pkg/engine/testdata/key-vault-certs/swarmmode.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/largeclusters/dcos-vmas.json b/pkg/engine/testdata/largeclusters/dcos-vmas.json deleted file mode 100644 index 9b51b3254..000000000 --- a/pkg/engine/testdata/largeclusters/dcos-vmas.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentpri0", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri1", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri2", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri3", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri4", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri5", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri6", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri7", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri8", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri9", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri10", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpublic1", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet", - "dnsPrefix": "agentpublic1", - "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/engine/testdata/largeclusters/dcos.json b/pkg/engine/testdata/largeclusters/dcos.json deleted file mode 100644 index 1ea576b78..000000000 --- a/pkg/engine/testdata/largeclusters/dcos.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "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 PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/largeclusters/swarm.json b/pkg/engine/testdata/largeclusters/swarm.json deleted file mode 100644 index d9772de68..000000000 --- a/pkg/engine/testdata/largeclusters/swarm.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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 PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/largeclusters/swarmmode.json b/pkg/engine/testdata/largeclusters/swarmmode.json deleted file mode 100644 index 62c2f7257..000000000 --- a/pkg/engine/testdata/largeclusters/swarmmode.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/largeclusters/swarmmodevmas.json b/pkg/engine/testdata/largeclusters/swarmmodevmas.json deleted file mode 100644 index 743e70365..000000000 --- a/pkg/engine/testdata/largeclusters/swarmmodevmas.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/largeclusters/swarmvmas.json b/pkg/engine/testdata/largeclusters/swarmvmas.json deleted file mode 100644 index 63b119dbb..000000000 --- a/pkg/engine/testdata/largeclusters/swarmvmas.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentpri0", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri1", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri2", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri3", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri4", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri5", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri6", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri7", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri8", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri9", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri10", - "count": 100, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet" - }, - { - "name": "agentpri11", - "count": 100, - "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/engine/testdata/location/dcos.json b/pkg/engine/testdata/location/dcos.json deleted file mode 100644 index d942686ae..000000000 --- a/pkg/engine/testdata/location/dcos.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "apiVersion": "vlabs", - "location": "eastus", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "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/engine/testdata/location/swarm.json b/pkg/engine/testdata/location/swarm.json deleted file mode 100644 index 316b17d0b..000000000 --- a/pkg/engine/testdata/location/swarm.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "apiVersion": "vlabs", - "location": "centralus", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/simple/dcos.json b/pkg/engine/testdata/simple/dcos.json deleted file mode 100644 index 193e020dc..000000000 --- a/pkg/engine/testdata/simple/dcos.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "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/engine/testdata/simple/dcos1.10.0.json b/pkg/engine/testdata/simple/dcos1.10.0.json deleted file mode 100644 index 3fab18e99..000000000 --- a/pkg/engine/testdata/simple/dcos1.10.0.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS", - "orchestratorRelease": "1.10" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} diff --git a/pkg/engine/testdata/simple/dcos1.8.8.json b/pkg/engine/testdata/simple/dcos1.8.8.json deleted file mode 100644 index a5de9b1be..000000000 --- a/pkg/engine/testdata/simple/dcos1.8.8.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS", - "orchestratorRelease": "1.8" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} diff --git a/pkg/engine/testdata/simple/dcos1.9.0.json b/pkg/engine/testdata/simple/dcos1.9.0.json deleted file mode 100644 index 2edd5d37b..000000000 --- a/pkg/engine/testdata/simple/dcos1.9.0.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS", - "orchestratorRelease": "1.9" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agentprivate", - "count": 3, - "vmSize": "Standard_D2_v2" - }, - { - "name": "agentpublic", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "agentpublic1", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} diff --git a/pkg/engine/testdata/simple/swarm.json b/pkg/engine/testdata/simple/swarm.json deleted file mode 100644 index a32d1f2b6..000000000 --- a/pkg/engine/testdata/simple/swarm.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/simple/swarmmode.json b/pkg/engine/testdata/simple/swarmmode.json deleted file mode 100644 index a257703ff..000000000 --- a/pkg/engine/testdata/simple/swarmmode.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "apiVersion": "vlabs", - "plan": {}, - "properties": { - "provisioningState": "", - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/simple/swarmmode_classicmode.json b/pkg/engine/testdata/simple/swarmmode_classicmode.json deleted file mode 100644 index 12ece7705..000000000 --- a/pkg/engine/testdata/simple/swarmmode_classicmode.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "apiVersion": "vlabs", - "plan": {}, - "properties": { - "provisioningState": "", - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "master", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agent", - "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/engine/testdata/vnet/dcosvnet.json b/pkg/engine/testdata/vnet/dcosvnet.json deleted file mode 100644 index b89de4c76..000000000 --- a/pkg/engine/testdata/vnet/dcosvnet.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "DCOS", - "dcosConfig": { - "bootstrapProfile": { - "staticIP": "10.100.0.240" - } - } - }, - "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", - "availabilityProfile": "AvailabilitySet", - "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/engine/testdata/vnet/swarmmodevnet.json b/pkg/engine/testdata/vnet/swarmmodevnet.json deleted file mode 100644 index ca0b8e568..000000000 --- a/pkg/engine/testdata/vnet/swarmmodevnet.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "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/engine/testdata/vnet/swarmvnet.json b/pkg/engine/testdata/vnet/swarmvnet.json deleted file mode 100644 index 9e66f03ec..000000000 --- a/pkg/engine/testdata/vnet/swarmvnet.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "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/engine/testdata/windows/swarm-vmas.json b/pkg/engine/testdata/windows/swarm-vmas.json deleted file mode 100644 index 9ce3e58dc..000000000 --- a/pkg/engine/testdata/windows/swarm-vmas.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "masterProfile": { - "count": 1, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "publicwin1", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "publicwin1", - "osType": "Windows", - "availabilityProfile": "AvailabilitySet", - "ports": [ - 80, - 443, - 8080 - ] - }, - { - "name": "privatewin", - "count": 3, - "vmSize": "Standard_D2_v2", - "availabilityProfile": "AvailabilitySet", - "osType": "Windows" - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/windows/swarm.json b/pkg/engine/testdata/windows/swarm.json deleted file mode 100644 index 97c31303b..000000000 --- a/pkg/engine/testdata/windows/swarm.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "masterProfile": { - "count": 1, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "publicwin1", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "publicwin1", - "osType": "Windows", - "ports": [ - 80, - 443, - 8080 - ] - }, - { - "name": "privatewin", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Windows" - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/windows/swarmWinAndLin.json b/pkg/engine/testdata/windows/swarmWinAndLin.json deleted file mode 100644 index ec0565367..000000000 --- a/pkg/engine/testdata/windows/swarmWinAndLin.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "apiVersion": "vlabs", - "properties": { - "orchestratorProfile": { - "orchestratorType": "Swarm" - }, - "masterProfile": { - "count": 1, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "publicwin1", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "publicwin1", - "osType": "Windows", - "ports": [ - 80, - 443, - 8080 - ] - }, - { - "name": "privatewin", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Windows" - }, - { - "name": "privatelinux", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Linux" - } - ], - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/windows/swarmmode-windows_classicmode.json b/pkg/engine/testdata/windows/swarmmode-windows_classicmode.json deleted file mode 100644 index c10a850be..000000000 --- a/pkg/engine/testdata/windows/swarmmode-windows_classicmode.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "apiVersion": "vlabs", - "plan": {}, - "properties": { - "provisioningState": "", - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "master", - "vmSize": "Standard_D2_v2" - }, - "agentPoolProfiles": [ - { - "name": "agent", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Windows", - "dnsPrefix": "agentdns1", - "ports": [ - 80, - 443, - 8080 - ] - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - }, - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - } - } -} \ No newline at end of file diff --git a/pkg/engine/testdata/windows/swarmmodeWinAndLin.json b/pkg/engine/testdata/windows/swarmmodeWinAndLin.json deleted file mode 100644 index 670e9f940..000000000 --- a/pkg/engine/testdata/windows/swarmmodeWinAndLin.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "apiVersion": "vlabs", - "plan": {}, - "properties": { - "provisioningState": "", - "orchestratorProfile": { - "orchestratorType": "SwarmMode" - }, - "masterProfile": { - "count": 3, - "dnsPrefix": "masterdns1", - "vmSize": "Standard_D2_v2", - "firstConsecutiveStaticIP": "172.16.0.5" - }, - "agentPoolProfiles": [ - { - "name": "publicwin1", - "count": 3, - "vmSize": "Standard_D2_v2", - "dnsPrefix": "publicwin1", - "osType": "Windows", - "ports": [ - 80, - 443, - 8080 - ] - }, - { - "name": "privatewin", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Windows" - }, - { - "name": "privatelinux", - "count": 3, - "vmSize": "Standard_D2_v2", - "osType": "Linux" - } - ], - "linuxProfile": { - "adminUsername": "azureuser", - "ssh": { - "publicKeys": [ - { - "keyData": "ssh-rsa PUBLICKEY azureuser@linuxvm" - } - ] - } - }, - "windowsProfile": { - "adminUsername": "azureuser", - "adminPassword": "replacepassword1234$" - }, - "servicePrincipalProfile": {}, - "certificateProfile": {} - } -} \ No newline at end of file diff --git a/pkg/engine/types.go b/pkg/engine/types.go index 518829ed7..d21456943 100644 --- a/pkg/engine/types.go +++ b/pkg/engine/types.go @@ -17,25 +17,6 @@ type VlabsContainerService struct { *vlabs.ContainerService } -//DockerSpecConfig is the configurations of docker -type DockerSpecConfig struct { - DockerEngineRepo string - DockerComposeDownloadURL string -} - -//DCOSSpecConfig is the configurations of DCOS -type DCOSSpecConfig struct { - DCOS188BootstrapDownloadURL string - DCOS190BootstrapDownloadURL string - DCOS198BootstrapDownloadURL string - DCOS110BootstrapDownloadURL string - DCOS111BootstrapDownloadURL string - DCOSWindowsBootstrapDownloadURL string - DcosRepositoryURL string // For custom install, for example CI, need these three addributes - DcosClusterPackageListID string // the id of the package list file - DcosProviderPackageID string // the id of the dcos-provider-xxx package -} - //KubernetesSpecConfig is the kubernetes container images used. type KubernetesSpecConfig struct { KubernetesImageBase string diff --git a/pkg/helpers/azure_skus_dcos.go b/pkg/helpers/azure_skus_dcos.go deleted file mode 100644 index 42b74d0d5..000000000 --- a/pkg/helpers/azure_skus_dcos.go +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -package helpers - -// GetDCOSMasterAllowedSizes returns the master allowed sizes -func GetDCOSMasterAllowedSizes() string { - return ` "allowedValues": [ - "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_B12ms", - "Standard_B16ms", - "Standard_B20ms", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D16_v3", - "Standard_D16a_v3", - "Standard_D16a_v4", - "Standard_D16as_v3", - "Standard_D16as_v4", - "Standard_D16s_v3", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D2_v3", - "Standard_D2a_v3", - "Standard_D2a_v4", - "Standard_D2as_v3", - "Standard_D2as_v4", - "Standard_D2s_v3", - "Standard_D3", - "Standard_D32_v3", - "Standard_D32a_v3", - "Standard_D32a_v4", - "Standard_D32as_v3", - "Standard_D32as_v4", - "Standard_D32s_v3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D48_v3", - "Standard_D48a_v3", - "Standard_D48a_v4", - "Standard_D48as_v3", - "Standard_D48as_v4", - "Standard_D48s_v3", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D4_v3", - "Standard_D4a_v3", - "Standard_D4a_v4", - "Standard_D4as_v3", - "Standard_D4as_v4", - "Standard_D4s_v3", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_D64_v3", - "Standard_D64a_v3", - "Standard_D64a_v4", - "Standard_D64as_v3", - "Standard_D64as_v4", - "Standard_D64s_v3", - "Standard_D8_v3", - "Standard_D8a_v3", - "Standard_D8a_v4", - "Standard_D8as_v3", - "Standard_D8as_v4", - "Standard_D8s_v3", - "Standard_D96a_v3", - "Standard_D96a_v4", - "Standard_D96as_v3", - "Standard_D96as_v4", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC8s", - "Standard_DS11", - "Standard_DS11-1_v2", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12-1_v2", - "Standard_DS12-2_v2", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13-2_v2", - "Standard_DS13-4_v2", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14-4_v2", - "Standard_DS14-8_v2", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_E16-4s_v3", - "Standard_E16-8s_v3", - "Standard_E16_v3", - "Standard_E16a_v3", - "Standard_E16as_v3", - "Standard_E16a_v4", - "Standard_E16as_v4", - "Standard_E16s_v3", - "Standard_E20_v3", - "Standard_E20a_v4", - "Standard_E20as_v4", - "Standard_E20s_v3", - "Standard_E2_v3", - "Standard_E2a_v3", - "Standard_E2as_v3", - "Standard_E2a_v4", - "Standard_E2as_v4", - "Standard_E2s_v3", - "Standard_E32-16s_v3", - "Standard_E32-8s_v3", - "Standard_E32_v3", - "Standard_E32a_v3", - "Standard_E32as_v3", - "Standard_E32a_v4", - "Standard_E32as_v4", - "Standard_E32s_v3", - "Standard_E4-2s_v3", - "Standard_E48_v3", - "Standard_E48a_v3", - "Standard_E48as_v3", - "Standard_E48a_v4", - "Standard_E48as_v4", - "Standard_E48s_v3", - "Standard_E4_v3", - "Standard_E4a_v3", - "Standard_E4as_v3", - "Standard_E4a_v4", - "Standard_E4as_v4", - "Standard_E4s_v3", - "Standard_E64-16s_v3", - "Standard_E64-32s_v3", - "Standard_E64_v3", - "Standard_E64a_v3", - "Standard_E64as_v3", - "Standard_E64a_v4", - "Standard_E64as_v4", - "Standard_E64i_v3", - "Standard_E64is_v3", - "Standard_E64s_v3", - "Standard_E8-2s_v3", - "Standard_E8-4s_v3", - "Standard_E8_v3", - "Standard_E8a_v3", - "Standard_E8as_v3", - "Standard_E8a_v4", - "Standard_E8as_v4", - "Standard_E8s_v3", - "Standard_E96a_v4", - "Standard_E96as_v4", - "Standard_F16", - "Standard_F16s", - "Standard_F16s_v2", - "Standard_F2", - "Standard_F2s_v2", - "Standard_F32s_v2", - "Standard_F4", - "Standard_F48s_v2", - "Standard_F4s", - "Standard_F4s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_F8", - "Standard_F8s", - "Standard_F8s_v2", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS4-4", - "Standard_GS4-8", - "Standard_GS5", - "Standard_GS5-16", - "Standard_GS5-8", - "Standard_H16", - "Standard_H16_Promo", - "Standard_H16m", - "Standard_H16m_Promo", - "Standard_H16mr", - "Standard_H16mr_Promo", - "Standard_H16r", - "Standard_H16r_Promo", - "Standard_H8", - "Standard_H8_Promo", - "Standard_H8m", - "Standard_H8m_Promo", - "Standard_HB120rs_v2", - "Standard_HB60rs", - "Standard_HC44rs", - "Standard_L16s", - "Standard_L16s_v2", - "Standard_L32s", - "Standard_L32s_v2", - "Standard_L48s_v2", - "Standard_L4s", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_L8s", - "Standard_L8s_v2", - "Standard_M128", - "Standard_M128-32ms", - "Standard_M128-64ms", - "Standard_M128m", - "Standard_M128ms", - "Standard_M128s", - "Standard_M16-4ms", - "Standard_M16-8ms", - "Standard_M16ms", - "Standard_M208ms_v2", - "Standard_M208s_v2", - "Standard_M32-16ms", - "Standard_M32-8ms", - "Standard_M32ls", - "Standard_M32ms", - "Standard_M32ts", - "Standard_M416ms_v2", - "Standard_M416s_v2", - "Standard_M64", - "Standard_M64-16ms", - "Standard_M64-32ms", - "Standard_M64ls", - "Standard_M64m", - "Standard_M64ms", - "Standard_M64s", - "Standard_M8-2ms", - "Standard_M8-4ms", - "Standard_M8ms", - "Standard_NC12", - "Standard_NC12_Promo", - "Standard_NC12s_v2", - "Standard_NC12s_v3", - "Standard_NC24", - "Standard_NC24_Promo", - "Standard_NC24r", - "Standard_NC24r_Promo", - "Standard_NC24rs_v2", - "Standard_NC24rs_v3", - "Standard_NC24s_v2", - "Standard_NC24s_v3", - "Standard_NC6", - "Standard_NC6_Promo", - "Standard_NC6s_v2", - "Standard_NC6s_v3", - "Standard_ND12s", - "Standard_ND24rs", - "Standard_ND24s", - "Standard_ND40rs_v2", - "Standard_ND40s_v3", - "Standard_ND6s", - "Standard_NP10s", - "Standard_NP20s", - "Standard_NP40s", - "Standard_NV12", - "Standard_NV12_Promo", - "Standard_NV12s_v2", - "Standard_NV12s_v3", - "Standard_NV24", - "Standard_NV24_Promo", - "Standard_NV24s_v2", - "Standard_NV24s_v3", - "Standard_NV48s_v3", - "Standard_NV6", - "Standard_NV6_Promo", - "Standard_NV6s_v2", - "Standard_PB12s", - "Standard_PB24s", - "Standard_PB6s" - ], -` -} diff --git a/pkg/helpers/azure_skus_dcos_test.go b/pkg/helpers/azure_skus_dcos_test.go deleted file mode 100644 index 819c2ea87..000000000 --- a/pkg/helpers/azure_skus_dcos_test.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -package helpers - -import ( - "strings" - "testing" -) - -func TestGetDCOSMasterAllowedSizes(t *testing.T) { - sizes := GetDCOSMasterAllowedSizes() - if len(sizes) == 0 { - t.Errorf("expected GetDCOSMasterAllowedSizes to return a non empty string") - } - - expectedSizes := []string{ - "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_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D11", - "Standard_D11_v2", - "Standard_D11_v2_Promo", - "Standard_D12", - "Standard_D12_v2", - "Standard_D12_v2_Promo", - "Standard_D13", - "Standard_D13_v2", - "Standard_D13_v2_Promo", - "Standard_D14", - "Standard_D14_v2", - "Standard_D14_v2_Promo", - "Standard_D15_v2", - "Standard_D16_v3", - "Standard_D16s_v3", - "Standard_D2", - "Standard_D2_v2", - "Standard_D2_v2_Promo", - "Standard_D2_v3", - "Standard_D2s_v3", - "Standard_D3", - "Standard_D32_v3", - "Standard_D32s_v3", - "Standard_D3_v2", - "Standard_D3_v2_Promo", - "Standard_D4", - "Standard_D4_v2", - "Standard_D4_v2_Promo", - "Standard_D4_v3", - "Standard_D4s_v3", - "Standard_D5_v2", - "Standard_D5_v2_Promo", - "Standard_D64_v3", - "Standard_D64s_v3", - "Standard_D8_v3", - "Standard_D8s_v3", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DS11", - "Standard_DS11-1_v2", - "Standard_DS11_v2", - "Standard_DS11_v2_Promo", - "Standard_DS12", - "Standard_DS12-1_v2", - "Standard_DS12-2_v2", - "Standard_DS12_v2", - "Standard_DS12_v2_Promo", - "Standard_DS13", - "Standard_DS13-2_v2", - "Standard_DS13-4_v2", - "Standard_DS13_v2", - "Standard_DS13_v2_Promo", - "Standard_DS14", - "Standard_DS14-4_v2", - "Standard_DS14-8_v2", - "Standard_DS14_v2", - "Standard_DS14_v2_Promo", - "Standard_DS15_v2", - "Standard_DS3", - "Standard_DS3_v2", - "Standard_DS3_v2_Promo", - "Standard_DS4", - "Standard_DS4_v2", - "Standard_DS4_v2_Promo", - "Standard_DS5_v2", - "Standard_DS5_v2_Promo", - "Standard_E16-4s_v3", - "Standard_E16-8s_v3", - "Standard_E16_v3", - "Standard_E16s_v3", - "Standard_E20_v3", - "Standard_E20s_v3", - "Standard_E2_v3", - "Standard_E2s_v3", - "Standard_E32-16s_v3", - "Standard_E32-8s_v3", - "Standard_E32_v3", - "Standard_E32s_v3", - "Standard_E4-2s_v3", - "Standard_E4_v3", - "Standard_E4s_v3", - "Standard_E64-16s_v3", - "Standard_E64-32s_v3", - "Standard_E64_v3", - "Standard_E64i_v3", - "Standard_E64is_v3", - "Standard_E64s_v3", - "Standard_E8-2s_v3", - "Standard_E8-4s_v3", - "Standard_E8_v3", - "Standard_E8s_v3", - "Standard_F16", - "Standard_F16s", - "Standard_F16s_v2", - "Standard_F2", - "Standard_F2s_v2", - "Standard_F32s_v2", - "Standard_F4", - "Standard_F4s", - "Standard_F4s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_F8", - "Standard_F8s", - "Standard_F8s_v2", - "Standard_G1", - "Standard_G2", - "Standard_G3", - "Standard_G4", - "Standard_G5", - "Standard_GS1", - "Standard_GS2", - "Standard_GS3", - "Standard_GS4", - "Standard_GS4-4", - "Standard_GS4-8", - "Standard_GS5", - "Standard_GS5-16", - "Standard_GS5-8", - "Standard_H16", - "Standard_H16m", - "Standard_H16mr", - "Standard_H16r", - "Standard_H8", - "Standard_H8m", - "Standard_HB60rs", - "Standard_HC44rs", - "Standard_L16s", - "Standard_L16s_v2", - "Standard_L32s", - "Standard_L32s_v2", - "Standard_L4s", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_L8s", - "Standard_L8s_v2", - "Standard_M128", - "Standard_M128-32ms", - "Standard_M128-64ms", - "Standard_M128m", - "Standard_M128ms", - "Standard_M128s", - "Standard_M16-4ms", - "Standard_M16-8ms", - "Standard_M16ms", - "Standard_M32-16ms", - "Standard_M32-8ms", - "Standard_M32ls", - "Standard_M32ms", - "Standard_M32ts", - "Standard_M64", - "Standard_M64-16ms", - "Standard_M64-32ms", - "Standard_M64ls", - "Standard_M64m", - "Standard_M64ms", - "Standard_M64s", - "Standard_M8-2ms", - "Standard_M8-4ms", - "Standard_M8ms", - "Standard_NC12", - "Standard_NC12s_v2", - "Standard_NC12s_v3", - "Standard_NC24", - "Standard_NC24r", - "Standard_NC24rs_v2", - "Standard_NC24rs_v3", - "Standard_NC24s_v2", - "Standard_NC24s_v3", - "Standard_NC6", - "Standard_NC6s_v2", - "Standard_NC6s_v3", - "Standard_ND12s", - "Standard_ND24rs", - "Standard_ND24s", - "Standard_ND6s", - "Standard_NV12", - "Standard_NV12s_v2", - "Standard_NV24", - "Standard_NV24s_v2", - "Standard_NV6", - "Standard_NV6s_v2", - "Standard_PB12s", - "Standard_PB24s", - "Standard_PB6s", - } - - for _, expectedSize := range expectedSizes { - if !strings.Contains(sizes, expectedSize) { - t.Errorf("expected %s to be present in the list of allowedValues", expectedSize) - } - } -} diff --git a/pkg/operations/dcosupgrade/doc.go b/pkg/operations/dcosupgrade/doc.go deleted file mode 100644 index 0bea892b8..000000000 --- a/pkg/operations/dcosupgrade/doc.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -// Package dcosupgrade allows upgrading of ACS clusters with DC/OS as the orchestrator. -// Deprecated: This code remains only to support the legacy ACS service. -package dcosupgrade diff --git a/pkg/operations/dcosupgrade/upgradecluster.go b/pkg/operations/dcosupgrade/upgradecluster.go deleted file mode 100644 index ad98488b4..000000000 --- a/pkg/operations/dcosupgrade/upgradecluster.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -package dcosupgrade - -import ( - "github.com/Azure/aks-engine/pkg/api" - "github.com/Azure/aks-engine/pkg/armhelpers" - "github.com/Azure/aks-engine/pkg/i18n" - "github.com/google/uuid" - "github.com/sirupsen/logrus" -) - -// ClusterTopology contains resources of the cluster the upgrade operation -// is targeting -type ClusterTopology struct { - DataModel *api.ContainerService - Location string - ResourceGroup string - CurrentDcosVersion string - NameSuffix string - SSHKey []byte -} - -// UpgradeCluster upgrades a cluster with Orchestrator version X.X to version Y.Y. -// Right now upgrades are supported for Kubernetes cluster only. -type UpgradeCluster struct { - Translator *i18n.Translator - Logger *logrus.Entry - ClusterTopology - Client armhelpers.AKSEngineClient -} - -// UpgradeCluster runs the workflow to upgrade a DCOS cluster. -func (uc *UpgradeCluster) UpgradeCluster(subscriptionID uuid.UUID, resourceGroup, currentDcosVersion string, - cs *api.ContainerService, nameSuffix string, sshKey []byte) error { - uc.ClusterTopology = ClusterTopology{} - uc.ResourceGroup = resourceGroup - uc.CurrentDcosVersion = currentDcosVersion - uc.DataModel = cs - uc.NameSuffix = nameSuffix - uc.SSHKey = sshKey - - upgradeVersion := uc.DataModel.Properties.OrchestratorProfile.OrchestratorVersion - uc.Logger.Infof("Upgrading DCOS from %s to %s", uc.CurrentDcosVersion, upgradeVersion) - - if err := uc.runUpgrade(); err != nil { - return err - } - - uc.Logger.Infof("Cluster upgraded successfully to DCOS %s", upgradeVersion) - return nil -} diff --git a/pkg/operations/dcosupgrade/upgrader.go b/pkg/operations/dcosupgrade/upgrader.go deleted file mode 100644 index 279ecac85..000000000 --- a/pkg/operations/dcosupgrade/upgrader.go +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -package dcosupgrade - -import ( - "encoding/json" - "fmt" - "strings" - - "github.com/Azure/aks-engine/pkg/operations" - "github.com/pkg/errors" -) - -type nodeHealthReport struct { - IP string `json:"host_ip"` - Role string `json:"role"` - Health int `json:"health"` -} - -type healthReport struct { - Nodes []nodeHealthReport `json:"nodes"` -} - -var bootstrapUpgradeScript = `#!/bin/bash - -echo "Starting upgrade configuration" -if [ ! -e /opt/azure/dcos/upgrade/NEW_VERSION/upgrade_url ]; then - echo "Setting up bootstrap node" - rm -rf /opt/azure/dcos/upgrade/NEW_VERSION - mkdir -p /opt/azure/dcos/upgrade/NEW_VERSION/genconf - cp /opt/azure/dcos/genconf/config.yaml /opt/azure/dcos/genconf/ip-detect /opt/azure/dcos/upgrade/NEW_VERSION/genconf/ - cd /opt/azure/dcos/upgrade/NEW_VERSION/ - curl -s -O https://dcos-mirror.azureedge.net/dcos-NEW_DASHED_VERSION/dcos_generate_config.sh - bash dcos_generate_config.sh --generate-node-upgrade-script CURR_VERSION | tee /opt/azure/dcos/upgrade/NEW_VERSION/log - process=\$(docker ps -f ancestor=nginx -q) - if [ ! -z "\$process" ]; then - echo "Stopping nginx service \$process" - docker kill \$process - fi - echo "Starting nginx service \$process" - docker run -d -p 8086:80 -v \$PWD/genconf/serve:/usr/share/nginx/html:ro nginx - docker ps - grep 'Node upgrade script URL' /opt/azure/dcos/upgrade/NEW_VERSION/log | awk -F ': ' '{print \$2}' | cat > /opt/azure/dcos/upgrade/NEW_VERSION/upgrade_url -fi -upgrade_url=\$(cat /opt/azure/dcos/upgrade/NEW_VERSION/upgrade_url) -if [ -z \${upgrade_url} ]; then - rm -f /opt/azure/dcos/upgrade/NEW_VERSION/upgrade_url - echo "Failed to set up bootstrap node. Please try again" - exit 1 -else - echo "Setting up bootstrap node completed. Node upgrade script URL \${upgrade_url}" -fi -` - -var nodeUpgradeScript = `#!/bin/bash - -echo "Starting node upgrade" -mkdir -p /opt/azure/dcos/upgrade/NEW_VERSION -cd /opt/azure/dcos/upgrade/NEW_VERSION -curl -O UPGRADE_SCRIPT_URL -bash ./dcos_node_upgrade.sh - -` - -func (uc *UpgradeCluster) runUpgrade() error { - if uc.ClusterTopology.DataModel.Properties.OrchestratorProfile.DcosConfig == nil || - uc.ClusterTopology.DataModel.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile == nil { - return errors.New("BootstrapProfile is not set") - } - - cs := uc.ClusterTopology.DataModel - newVersion := cs.Properties.OrchestratorProfile.OrchestratorVersion - dashedVersion := strings.Replace(newVersion, ".", "-", -1) - - masterDNS := cs.GetAzureProdFQDN() - masterCount := cs.Properties.MasterProfile.Count - bootstrapIP := cs.Properties.OrchestratorProfile.DcosConfig.BootstrapProfile.StaticIP - uc.Logger.Infof("masterDNS:%s masterCount:%d bootstrapIP:%s", masterDNS, masterCount, bootstrapIP) - - // copy SSH key to master - uc.Logger.Infof("Copy SSH key to master") - out, err := operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, fmt.Sprintf("cat << END > .ssh/id_rsa_cluster\n%s\nEND\n", string(uc.SSHKey))) - if err != nil { - uc.Logger.Errorf(out) - return err - } - // set SSH key permissions - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, "chmod 600 .ssh/id_rsa_cluster") - if err != nil { - uc.Logger.Errorf(out) - return err - } - // upgrade bootstrap node - bootstrapScript := strings.Replace(bootstrapUpgradeScript, "CURR_VERSION", uc.CurrentDcosVersion, -1) - bootstrapScript = strings.Replace(bootstrapScript, "NEW_VERSION", newVersion, -1) - bootstrapScript = strings.Replace(bootstrapScript, "NEW_DASHED_VERSION", dashedVersion, -1) - - upgradeScriptURL, err := uc.upgradeBootstrapNode(masterDNS, bootstrapIP, bootstrapScript) - if err != nil { - return err - } - - nodeScript := strings.Replace(nodeUpgradeScript, "NEW_VERSION", newVersion, -1) - nodeScript = strings.Replace(nodeScript, "UPGRADE_SCRIPT_URL", upgradeScriptURL, -1) - - // upgrade master nodes - if err = uc.upgradeMasterNodes(masterDNS, masterCount, nodeScript); err != nil { - return err - } - - // get the node list - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, "curl -s http://localhost:1050/system/health/v1/nodes") - if err != nil { - uc.Logger.Errorf(out) - return err - } - uc.Logger.Info(out) - nodes := &healthReport{} - if err = json.Unmarshal([]byte(out), nodes); err != nil { - return err - } - // upgrade agent nodes - return uc.upgradeAgentNodes(masterDNS, nodes) -} - -func (uc *UpgradeCluster) upgradeBootstrapNode(masterDNS, bootstrapIP, bootstrapScript string) (string, error) { - // copy bootstrap script to master - uc.Logger.Infof("Copy bootstrap script to master") - out, err := operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, fmt.Sprintf("cat << END > bootstrap_upgrade.sh\n%s\nEND\n", bootstrapScript)) - if err != nil { - uc.Logger.Errorf(out) - return "", err - } - // set script permissions - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, "chmod 755 ./bootstrap_upgrade.sh") - if err != nil { - uc.Logger.Errorf(out) - return "", err - } - // copy bootstrap script to the bootstrap node - uc.Logger.Infof("Copy bootstrap script to the bootstrap node") - cmd := fmt.Sprintf("scp -i .ssh/id_rsa_cluster -o ConnectTimeout=30 -o StrictHostKeyChecking=no bootstrap_upgrade.sh %s:", bootstrapIP) - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, cmd) - if err != nil { - uc.Logger.Errorf(out) - return "", err - } - // run bootstrap script - uc.Logger.Infof("Run bootstrap upgrade script") - cmd = fmt.Sprintf("ssh -i .ssh/id_rsa_cluster -o ConnectTimeout=30 -o StrictHostKeyChecking=no %s sudo ./bootstrap_upgrade.sh", bootstrapIP) - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, cmd) - if err != nil { - uc.Logger.Errorf(out) - return "", err - } - uc.Logger.Info(out) - // retrieve upgrade script URL - var url string - arr := strings.Split(out, "\n") - prefix := "Setting up bootstrap node completed. Node upgrade script URL" - for _, str := range arr { - if strings.HasPrefix(str, prefix) { - url = strings.TrimSpace(str[len(prefix):]) - break - } - } - if len(url) == 0 { - return "", errors.New("Undefined upgrade script URL") - } - return url, nil -} - -func (uc *UpgradeCluster) upgradeMasterNodes(masterDNS string, masterCount int, nodeScript string) error { - // run master upgrade script - catCmd := fmt.Sprintf("cat << END > node_upgrade.sh\n%s\nEND\n", nodeScript) - for i := 0; i < masterCount; i++ { - uc.Logger.Infof("Upgrading master node #%d", i+1) - // check current version - out, err := operations.RemoteRun("azureuser", masterDNS, 2200+i, uc.SSHKey, "grep version /opt/mesosphere/etc/dcos-version.json | cut -d '\"' -f 4") - if err != nil { - uc.Logger.Errorf(out) - return err - } - if strings.TrimSpace(out) == uc.ClusterTopology.DataModel.Properties.OrchestratorProfile.OrchestratorVersion { - uc.Logger.Infof("Master node is up-to-date. Skipping upgrade") - continue - } - // copy script to the node - out, err = operations.RemoteRun("azureuser", masterDNS, 2200+i, uc.SSHKey, catCmd) - if err != nil { - uc.Logger.Errorf(out) - return err - } - // set script permissions - out, err = operations.RemoteRun("azureuser", masterDNS, 2200+i, uc.SSHKey, "chmod 755 ./node_upgrade.sh") - if err != nil { - uc.Logger.Errorf(out) - return err - } - // run the script - out, err = operations.RemoteRun("azureuser", masterDNS, 2200+i, uc.SSHKey, "sudo ./node_upgrade.sh") - if err != nil { - uc.Logger.Errorf(out) - return err - } - uc.Logger.Info(out) - } - return nil -} - -func (uc *UpgradeCluster) upgradeAgentNodes(masterDNS string, nodes *healthReport) error { - for _, node := range nodes.Nodes { - if node.Role == "master" { - continue - } - uc.Logger.Infof("Upgrading %s %s", node.Role, node.IP) - - // check current version - cmd := fmt.Sprintf("ssh -i .ssh/id_rsa_cluster -o ConnectTimeout=30 -o StrictHostKeyChecking=no %s grep version /opt/mesosphere/etc/dcos-version.json | cut -d '\"' -f 4", node.IP) - out, err := operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, cmd) - if err != nil { - uc.Logger.Errorf(out) - return err - } - if strings.TrimSpace(out) == uc.ClusterTopology.DataModel.Properties.OrchestratorProfile.OrchestratorVersion { - uc.Logger.Infof("Agent node is up-to-date. Skipping upgrade") - continue - } - // copy script to the node - cmd = fmt.Sprintf("scp -i .ssh/id_rsa_cluster -o ConnectTimeout=30 -o StrictHostKeyChecking=no node_upgrade.sh %s:", node.IP) - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, cmd) - if err != nil { - uc.Logger.Errorf(out) - return err - } - // run the script - cmd = fmt.Sprintf("ssh -i .ssh/id_rsa_cluster -o ConnectTimeout=30 -o StrictHostKeyChecking=no %s sudo ./node_upgrade.sh", node.IP) - out, err = operations.RemoteRun("azureuser", masterDNS, 2200, uc.SSHKey, cmd) - if err != nil { - uc.Logger.Errorf(out) - return err - } - uc.Logger.Info(out) - } - return nil -} diff --git a/scripts/validate-shell.sh b/scripts/validate-shell.sh index ea41b3f4f..9bbdb3f2e 100755 --- a/scripts/validate-shell.sh +++ b/scripts/validate-shell.sh @@ -12,7 +12,7 @@ if [ -f /.dockerenv ]; then fi # All shell scripts, except those that support deprecated orchestrators or are in vendored code. -files=$(find . -type f -name "*.sh" -not -path './vendor/*' -not -path './hack/tools/*' -not -path './test/e2e/vendor/*' -not -path "*dcos*" -not -path "*swarm*") +files=$(find . -type f -name "*.sh" -not -path './vendor/*' -not -path './hack/tools/*' -not -path './test/e2e/vendor/*') IGNORED=" SC1127