Skip to content

Commit

Permalink
Merge pull request docker-archive#421 from docker/mgrvmss
Browse files Browse the repository at this point in the history
Place managers in a VMSS for Azure
  • Loading branch information
nathanleclaire authored Nov 4, 2016
2 parents 3c3604e + 9b123a0 commit fdc95d7
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 109 deletions.
3 changes: 1 addition & 2 deletions azure/release/files/custom-data_manager.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ export TENANT_ID="variables('adServicePrincipalTenantID')"
export SWARM_INFO_TABLE="variables('swarmInfoTable')"
export SWARM_INFO_STORAGE_ACCOUNT="variables('swarmInfoStorageAccount')"
export SWARM_LOGS_STORAGE_ACCOUNT="variables('swarmLogsStorageAccount')"


export MANAGER_IP=$(ifconfig eth0 | grep "inet addr:" | cut -d: -f2 | cut -d" " -f1)
# create daemon config with custom tag
echo "{\"log-driver\": \"syslog\",\"log-opts\": {\"syslog-address\": \"udp://localhost:514\", \"tag\": \"{{.Name}}/{{.ID}}\" }}" > /etc/docker/daemon.json
service docker restart
Expand Down
256 changes: 149 additions & 107 deletions azure/templates/editions.template.json
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,14 @@
"workerVMNamePrefix": "[concat(variables('basePrefix'), '-worker-')]",
"managerEndpointDNSNamePrefix": "manager",
"vmssName": "[concat(variables('workerVMNamePrefix'), 'vmss')]",
"lbSSHName": "externalSSHLoadBalancer",
"lbSSHID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbSSHName'))]",
"lbSSHBackendAddressPoolID": "[concat(variables('lbSSHID'),'/backendAddressPools/default')]",
"lbSSHFrontEndIPConfigID": "[concat(variables('lbSSHID'),'/frontendIPConfigurations/default')]",
"lbSSHNATPoolID": "[concat(variables('lbSSHID'),'/inboundNatPools/default')]",
"lbSSHPublicIPAddressName": "[concat(variables('basePrefix'), '-', variables('lbSSHName'), '-public-ip')]",
"natSSHStartPort": 50000,
"natSSHEndPort": 50100,
"lbName": "externalLoadBalancer",
"lbPublicIPAddressName": "[concat(variables('basePrefix'), '-', variables('lbName'), '-public-ip')]",
"lbID": "[resourceId('Microsoft.Network/loadBalancers',variables('lbName'))]",
Expand All @@ -214,10 +222,10 @@
"subnetRef": "[concat(variables('vnetID'),'/subnets/', variables('subnetName'))]",
"managerAddressPrefix": "172.16.0.0/24",
"subnetPrefix": "10.0.0.0/8",
"managerAvSet": "managerAvS",
"managerNSGName": "[concat(variables('basePrefix'), '-manager-nsg')]",
"managerNSGID": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('managerNSGName'))]",
"managerVMNamePrefix": "[concat(variables('basePrefix'), '-manager')]",
"vmssManagersName": "[concat(variables('managerVMNamePrefix'), 'vmss')]",
"managerFirstAddr": 5,
"storageAccountSuffix": "docker",
"vhdContainerName": "dockervhd",
Expand All @@ -229,7 +237,7 @@
"[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'), '4')))]"
],
"swarmInfoStorageAccount": "[concat(variables('uniqueStringArray')[0], variables('storageAccountSuffix'))]",
"swarmInfoTable": "[concat(resourceGroup().name, 'aztable')]",
"swarmInfoTable": "swarminfo",
"swarmLogsStorageAccount": "[concat(uniqueString(concat(resourceGroup().id, variables('storageAccountSuffix'))), 'logs')]",
"customDataManager": "",
"customDataWorker": ""
Expand Down Expand Up @@ -361,124 +369,99 @@
},
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat(variables('managerVMNamePrefix'), 'pip-', copyIndex())]",
"location": "[variables('storageLocation')]",
"copy": {
"name": "pipLoopNode",
"count": "[variables('managerCount')]"
},
"properties": {
"publicIPAllocationMethod": "Static"
}
},
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Network/networkInterfaces",
"name": "[concat(variables('managerVMNamePrefix'), 'nic-', copyIndex())]",
"location": "[variables('storageLocation')]",
"copy": {
"name": "nicLoopNode",
"count": "[variables('managerCount')]"
},
"dependsOn": [
"[variables('vnetID')]",
"[variables('managerNSGID')]",
"[concat('Microsoft.Network/publicIPAddresses/', variables('managerVMNamePrefix'), 'pip-', copyIndex())]"
"[variables('lbSSHID')]"
],
"properties": {
"networkSecurityGroup": {
"id": "[variables('managerNSGID')]"
},
"ipConfigurations": [
{
"name": "ipConfigNode",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnetRef')]"
},
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(variables('managerVMNamePrefix'), 'pip-', copyIndex()))]"
}
}
}
]
}
},
{
"type": "Microsoft.Compute/availabilitySets",
"name": "[variables('managerAvSet')]",
"apiVersion": "[variables('apiVersion')]",
"location": "[variables('storageLocation')]",
"properties": {}
},
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines",
"name": "[concat(variables('managerVMNamePrefix'), copyIndex())]",
"location": "[variables('storageLocation')]",
"name": "[variables('vmssManagersName')]",
"plan": {
"publisher": "[variables('imagePublisher')]",
"name": "[variables('imageSku')]",
"product": "[variables('imageOffer')]"
},
"copy": {
"name": "vmLoopNode",
"count": "[variables('managerCount')]"
"product": "[variables('imageOffer')]",
"publisher": "[variables('imagePublisher')]"
},
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('managerVMNamePrefix'), 'nic-', copyIndex())]",
"storageLoop"
],
"properties": {
"hardwareProfile": {
"vmSize": "[variables('managerVMSize')]"
},
"availabilitySet": {
"id": "[resourceId('Microsoft.Compute/availabilitySets',variables('managerAvSet'))]"
"overprovision": false,
"upgradePolicy": {
"mode": "Manual"
},
"osProfile": {
"computerName": "[concat(variables('managerVMNamePrefix'), copyIndex())]",
"adminUsername": "[variables('adminUsername')]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export MANAGER_IP=\"', reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('managerVMNamePrefix'), 'nic-', copyIndex()))).ipConfigurations[0].properties.privateIPAddress, '\"', '\n', variables('customDataManager')))]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[variables('sshKeyPath')]",
"keyData": "[variables('sshRSAPublicKey')]"
"virtualMachineProfile": {
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), '.blob.core.windows.net')]"
}
},
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "managerNodeNic",
"properties": {
"ipConfigurations": [
{
"name": "mgripconfig",
"privateIPAllocationMethod": "dynamic",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbSSHBackendAddressPoolID')]"
}
],
"loadBalancerInboundNatPools": [
{
"id": "[variables('lbSSHNATPoolID')]"
}
],
"subnet": {
"id": "[variables('subnetRef')]"
}
}
}
],
"networkSecurityGroup": {
"id": "[variables('managerNSGID')]"
},
"primary": true
}
]
}
]
},
"osProfile": {
"adminUsername": "[variables('adminUsername')]",
"computerNamePrefix": "[variables('managerVMNamePrefix')]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export LB_IP=\"', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress, '\"', '\n', variables('customDataManager')))]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"keyData": "[variables('sshRSAPublicKey')]",
"path": "[variables('sshKeyPath')]"
}
]
}
}
}
},
"storageProfile": {
"imageReference": "[variables('imageReference')]",
"osDisk": {
"name": "[concat(variables('managerVMNamePrefix'), copyIndex(),'-osdisk')]",
"vhd": {
"uri": "[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'), '/manager', copyIndex(), '.vhd')]"
},
"caching": "ReadWrite",
"createOption": "FromImage"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(variables('managerVMNamePrefix'), 'nic-', copyIndex()))]"
},
"storageProfile": {
"imageReference": "[variables('imageReference')]",
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"name": "[concat(variables('managerVMNamePrefix'), 'vmssosdisk')]",
"vhdContainers": [
"[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), '.blob.core.windows.net/', variables('vhdContainerName'))]"
]
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', variables('uniqueStringArray')[0], variables('storageAccountSuffix'), '.blob.core.windows.net')]"
}
}
}
},
"sku": {
"capacity": "[variables('managerCount')]",
"name": "[variables('managerVMSize')]",
"tier": "Standard"
},
"type": "Microsoft.Compute/virtualMachineScaleSets"
},
{
"apiVersion": "[variables('apiVersion')]",
Expand All @@ -488,7 +471,6 @@
"dependsOn": [
"[variables('vnetID')]",
"[variables('lbID')]",
"[resourceId('Microsoft.Compute/VirtualMachines',concat(variables('managerVMNamePrefix'), '0'))]",
"storageLoop"
],
"sku": {
Expand Down Expand Up @@ -525,7 +507,7 @@
"osProfile": {
"computerNamePrefix": "[variables('workerVMNamePrefix')]",
"adminUsername": "[variables('adminUsername')]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export MANAGER_IP=\"', reference(resourceId('Microsoft.Network/networkInterfaces', concat(variables('managerVMNamePrefix'), 'nic-0'))).ipConfigurations[0].properties.privateIPAddress, '\"', '\n', 'export LB_IP=\"', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress, '\"', '\n', variables('customDataWorker')))]",
"customData": "[base64(concat('#!/bin/bash', '\n', 'export LB_IP=\"', reference(resourceId('Microsoft.Network/publicIPAddresses', variables('lbPublicIPAddressName'))).ipAddress, '\"', '\n', variables('customDataWorker')))]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
Expand Down Expand Up @@ -618,6 +600,66 @@
}
]
}
},
{
"apiVersion": "[variables('apiVersion')]",
"location": "[variables('storageLocation')]",
"name": "[variables('lbSSHPublicIPAddressName')]",
"properties": {
"publicIPAllocationMethod": "Static"
},
"type": "Microsoft.Network/publicIPAddresses"
},
{
"apiVersion": "[variables('apiVersion')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', variables('lbSSHPublicIPAddressName'))]"
],
"location": "[resourceGroup().location]",
"name": "[variables('lbSSHName')]",
"properties": {
"backendAddressPools": [
{
"name": "default"
}
],
"frontendIPConfigurations": [
{
"name": "default",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbSSHPublicIPAddressName'))]"
}
}
}
],
"probes": [
{
"name": "default",
"properties": {
"intervalInSeconds": 10,
"numberOfProbes": 2,
"port": 22,
"protocol": "Tcp"
}
}
],
"inboundNatPools": [
{
"name": "default",
"properties": {
"frontendIPConfiguration": {
"id": "[variables('lbSSHFrontEndIPConfigID')]"
},
"protocol": "tcp",
"frontendPortRangeStart": "[variables('natSSHStartPort')]",
"frontendPortRangeEnd": "[variables('natSSHEndPort')]",
"backendPort": 22
}
}
]
},
"type": "Microsoft.Network/loadBalancers"
}
],
"outputs": {
Expand Down

0 comments on commit fdc95d7

Please sign in to comment.