Created
October 14, 2016 14:20
-
-
Save valeryjacobs/d0f61ea2b06e4212b850392d87ae8304 to your computer and use it in GitHub Desktop.
FollowMe Service Fabric Cluster ARM template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "adminUserName": { "type": "string", "metadata": { "description": "Remote desktop user Id" } }, "adminPassword": { "type": "securestring", "metadata": { "description": "Remote desktop user password" } }, "certificateThumbprint": { "type": "string" }, "sourceVaultResourceId": { "type": "string", "metadata": { "description": "Resource ID of the key vault where cluster certificate is stored. The format is /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.KeyVault/vaults/<vault name>" } }, "certificateUrlValue": { "type": "string", "metadata": { "description": "Refers to the location URL in your key vault where the cluster certificate was uploaded. The format is https://<name of the vault>.vault.azure.net:443/secrets/<exact location>" } } }, "variables": { "clusterName": "[concat('cluster', uniqueString(resourceGroup().id))]", "vmStorageAccountName": "[concat('vms', uniqueString(resourceGroup().id))]", "virtualNetworkName": "VNet", "addressPrefix": "10.0.0.0/16", "subnet1Name": "Subnet-1", "subnet2Name": "Subnet-2", "subnet1Prefix": "10.0.0.0/24", "subnet2Prefix": "10.0.1.0/24", "lbName": "[concat('LoadBalancer-', variables('clusterName'), '-', variables('vmNodeType0Name'))]", "lbIPName": "PublicIP-LB-FE-0", "vnetID": "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", "subnet1Ref": "[concat(variables('vnetID'), '/subnets/', variables('subnet1Name'))]", "supportLogStorageAccountName": "[concat('logs', uniqueString(resourceGroup().id))]", "applicationDiagnosticsStorageAccountName": "[concat('diags', uniqueString(resourceGroup().id))]", "lbID0": "[resourceId('Microsoft.Network/loadBalancers', variables('lbName'))]", "lbIPConfig0": "[concat(variables('lbID0'), '/frontendIPConfigurations/LoadBalancerIPConfig')]", "lbPoolID0": "[concat(variables('lbID0'), '/backendAddressPools/LoadBalancerBEAddressPool')]", "lbProbeID0": "[concat(variables('lbID0'), '/probes/FabricGatewayProbe')]", "lbHttpProbeID0": "[concat(variables('lbID0'), '/probes/FabricHttpGatewayProbe')]", "lbNatPoolID0": "[concat(variables('lbID0'), '/inboundNatPools/LoadBalancerBEAddressNatPool')]", "vmNodeType0Name": "nt1vm", "fabricTcpGatewayPort": "19000", "fabricHttpGatewayPort": "19080", "loadBalancedAppPort1": "80", "loadBalancedAppPort2": "8081", "certificateStoreValue": "My" }, "resources": [ { "apiVersion": "2015-06-15", "type": "Microsoft.Storage/storageAccounts", "name": "[variables('vmStorageAccountName')]", "location": "[resourceGroup().location]", "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "VMStorageAccount" }, "properties": { "accountType": "Standard_LRS" } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Storage/storageAccounts", "name": "[variables('supportLogStorageAccountName')]", "location": "[resourceGroup().location]", "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "SupportLogStorageAccount" }, "properties": { "accountType": "Standard_LRS" } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Storage/storageAccounts", "name": "[variables('applicationDiagnosticsStorageAccountName')]", "location": "[resourceGroup().location]", "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "DiagnosticsStorageAccount" }, "properties": { "accountType": "Standard_LRS" } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Network/virtualNetworks", "name": "[variables('virtualNetworkName')]", "location": "[resourceGroup().location]", "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "VirtualNetwork" }, "properties": { "addressSpace": { "addressPrefixes": [ "[variables('addressPrefix')]" ] }, "subnets": [ { "name": "[variables('subnet1Name')]", "properties": { "addressPrefix": "[variables('subnet1Prefix')]" } }, { "name": "[variables('subnet2Name')]", "properties": { "addressPrefix": "[variables('subnet2Prefix')]" } } ] } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('lbIPName')]", "location": "[resourceGroup().location]", "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "PublicIPAddress" }, "properties": { "dnsSettings": { "domainNameLabel": "[variables('clusterName')]" }, "publicIPAllocationMethod": "Dynamic" } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Network/loadBalancers", "name": "[variables('lbName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[variables('lbIPName')]" ], "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "LoadBalancer" }, "properties": { "frontendIPConfigurations": [ { "name": "LoadBalancerIPConfig", "properties": { "publicIPAddress": { "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('lbIPName'))]" } } } ], "backendAddressPools": [ { "name": "LoadBalancerBEAddressPool" } ], "loadBalancingRules": [ { "name": "LBRule", "properties": { "backendAddressPool": { "id": "[variables('lbPoolID0')]" }, "backendPort": "[variables('fabricTcpGatewayPort')]", "enableFloatingIP": false, "frontendIPConfiguration": { "id": "[variables('lbIPConfig0')]" }, "frontendPort": "[variables('fabricTcpGatewayPort')]", "idleTimeoutInMinutes": 5, "probe": { "id": "[variables('lbProbeID0')]" }, "protocol": "Tcp" } }, { "name": "LBHttpRule", "properties": { "backendAddressPool": { "id": "[variables('lbPoolID0')]" }, "backendPort": "[variables('fabricHttpGatewayPort')]", "enableFloatingIP": false, "frontendIPConfiguration": { "id": "[variables('lbIPConfig0')]" }, "frontendPort": "[variables('fabricHttpGatewayPort')]", "idleTimeoutInMinutes": 5, "probe": { "id": "[variables('lbHttpProbeID0')]" }, "protocol": "Tcp" } }, { "name": "AppPortLBRule1", "properties": { "backendAddressPool": { "id": "[variables('lbPoolID0')]" }, "backendPort": "[variables('loadBalancedAppPort1')]", "enableFloatingIP": false, "frontendIPConfiguration": { "id": "[variables('lbIPConfig0')]" }, "frontendPort": "[variables('loadBalancedAppPort1')]", "idleTimeoutInMinutes": 5, "probe": { "id": "[concat(variables('lbID0'), '/probes/AppPortProbe1')]" }, "protocol": "Tcp" } }, { "name": "AppPortLBRule2", "properties": { "backendAddressPool": { "id": "[variables('lbPoolID0')]" }, "backendPort": "[variables('loadBalancedAppPort2')]", "enableFloatingIP": false, "frontendIPConfiguration": { "id": "[variables('lbIPConfig0')]" }, "frontendPort": "[variables('loadBalancedAppPort2')]", "idleTimeoutInMinutes": 5, "probe": { "id": "[concat(variables('lbID0'), '/probes/AppPortProbe2')]" }, "protocol": "Tcp" } } ], "probes": [ { "name": "FabricGatewayProbe", "properties": { "intervalInSeconds": 5, "numberOfProbes": 2, "port": "[variables('fabricTcpGatewayPort')]", "protocol": "Tcp" } }, { "name": "FabricHttpGatewayProbe", "properties": { "intervalInSeconds": 5, "numberOfProbes": 2, "port": "[variables('fabricHttpGatewayPort')]", "protocol": "Tcp" } }, { "name": "AppPortProbe1", "properties": { "intervalInSeconds": 5, "numberOfProbes": 2, "port": "[variables('loadBalancedAppPort1')]", "protocol": "Tcp" } }, { "name": "AppPortProbe2", "properties": { "intervalInSeconds": 5, "numberOfProbes": 2, "port": "[variables('loadBalancedAppPort2')]", "protocol": "Tcp" } } ], "inboundNatPools": [ { "name": "LoadBalancerBEAddressNatPool", "properties": { "backendPort": 3389, "frontendIPConfiguration": { "id": "[variables('lbIPConfig0')]" }, "frontendPortRangeEnd": 4500, "frontendPortRangeStart": 3389, "protocol": "Tcp" } } ] } }, { "apiVersion": "2015-06-15", "type": "Microsoft.Compute/virtualMachineScaleSets", "name": "[variables('vmNodeType0Name')]", "location": "[resourceGroup().location]", "dependsOn": [ "[variables('vmStorageAccountName')]", "[variables('virtualNetworkName')]", "[variables('supportLogStorageAccountName')]", "[variables('applicationDiagnosticsStorageAccountName')]" ], "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "Cluster scale set" }, "properties": { "upgradePolicy": { "mode": "Automatic" }, "virtualMachineProfile": { "extensionProfile": { "extensions": [ { "name": "[concat('ServiceFabricNodeVmExt', '_', variables('vmNodeType0Name'))]", "properties": { "type": "ServiceFabricNode", "autoUpgradeMinorVersion": false, "protectedSettings": { "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-06-15').key1]", "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-06-15').key2]" }, "publisher": "Microsoft.Azure.ServiceFabric", "settings": { "clusterEndpoint": "[reference(variables('clusterName')).clusterEndpoint]", "nodeTypeRef": "[variables('vmNodeType0Name')]", "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[variables('certificateStoreValue')]" } }, "typeHandlerVersion": "1.0" } }, { "name": "[concat('VMDiagnosticsVmExt', '_', variables('vmNodeType0Name'))]", "properties": { "type": "IaaSDiagnostics", "autoUpgradeMinorVersion": true, "protectedSettings": { "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]", "storageAccountEndPoint": "https://core.windows.net/" }, "publisher": "Microsoft.Azure.Diagnostics", "settings": { "WadCfg": { "DiagnosticMonitorConfiguration": { "overallQuotaInMB": "50000", "EtwProviders": { "EtwEventSourceProviderConfiguration": [ { "provider": "Microsoft-ServiceFabric-Actors", "scheduledTransferKeywordFilter": "1", "scheduledTransferPeriod": "PT5M", "DefaultEvents": { "eventDestination": "ServiceFabricReliableActorEventTable" } }, { "provider": "Microsoft-ServiceFabric-Services", "scheduledTransferPeriod": "PT5M", "DefaultEvents": { "eventDestination": "ServiceFabricReliableServiceEventTable" } } ], "EtwManifestProviderConfiguration": [ { "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8", "scheduledTransferLogLevelFilter": "Information", "scheduledTransferKeywordFilter": "4611686018427387904", "scheduledTransferPeriod": "PT5M", "DefaultEvents": { "eventDestination": "ServiceFabricSystemEventTable" } } ] } } }, "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" }, "typeHandlerVersion": "1.5" } } ] }, "networkProfile": { "networkInterfaceConfigurations": [ { "name": "NIC-0", "properties": { "ipConfigurations": [ { "name": "NIC-0-config", "properties": { "loadBalancerBackendAddressPools": [ { "id": "[variables('lbPoolID0')]" } ], "loadBalancerInboundNatPools": [ { "id": "[variables('lbNatPoolID0')]" } ], "subnet": { "id": "[variables('subnet1Ref')]" } } } ], "primary": true } } ] }, "osProfile": { "adminPassword": "[parameters('adminPassword')]", "adminUsername": "[parameters('adminUsername')]", "computerNamePrefix": "[variables('vmNodeType0Name')]", "secrets": [ { "sourceVault": { "id": "[parameters('sourceVaultResourceId')]" }, "vaultCertificates": [ { "certificateStore": "[variables('certificateStoreValue')]", "certificateUrl": "[parameters('certificateUrlValue')]" } ] } ] }, "storageProfile": { "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2012-R2-Datacenter", "version": "latest" }, "osDisk": { "vhdContainers": [ "[concat('https://',variables('vmStorageAccountName'),'.blob.core.windows.net/vhds')]" ], "name": "vmssosdisk", "caching": "ReadOnly", "createOption": "FromImage" } } } }, "sku": { "name": "Standard_D1", "capacity": 5, "tier": "Standard" } }, { "apiVersion": "2016-03-01", "type": "Microsoft.ServiceFabric/clusters", "name": "[variables('clusterName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[variables('supportLogStorageAccountName')]" ], "tags": { "resourceType": "Service Fabric", "clusterName": "[variables('clusterName')]", "displayName": "Cluster" }, "properties": { "certificate": { "thumbprint": "[parameters('certificateThumbprint')]", "x509StoreName": "[variables('certificateStoreValue')]" }, "clientCertificateCommonNames": [ ], "clientCertificateThumbprints": [ ], "clusterState": "Default", "diagnosticsStorageAccountConfig": { "blobEndpoint": "[concat('https://', variables('supportLogStorageAccountName'), '.blob.core.windows.net/')]", "protectedAccountKeyName": "StorageAccountKey1", "queueEndpoint": "[concat('https://', variables('supportLogStorageAccountName'), '.queue.core.windows.net/')]", "storageAccountName": "[variables('supportLogStorageAccountName')]", "tableEndpoint": "[concat('https://', variables('supportLogStorageAccountName'), '.table.core.windows.net/')]" }, "fabricSettings": [ { "parameters": [ { "name": "ClusterProtectionLevel", "value": "EncryptAndSign" } ], "name": "Security" } ], "managementEndpoint": "[concat('https://', reference(variables('lbIPName')).dnsSettings.fqdn, ':', variables('fabricHttpGatewayPort'))]", "nodeTypes": [ { "name": "[variables('vmNodeType0Name')]", "applicationPorts": { "endPort": "30000", "startPort": "20000" }, "clientConnectionEndpointPort": "[variables('fabricTcpGatewayPort')]", "ephemeralPorts": { "endPort": "65534", "startPort": "49152" }, "httpGatewayEndpointPort": "[variables('fabricHttpGatewayPort')]", "isPrimary": true, "vmInstanceCount": 5 } ], "provisioningState": "Default" } } ], "outputs": { "clusterProperties": { "value": "[reference(variables('clusterName'))]", "type": "object" } }} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment