Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
929 lines (926 sloc) 29.7 KB
{
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterLocation": {
"type": "string"
},
"clusterName": {
"type": "string",
"defaultValue": "Cluster"
},
"applicationStartPort": {
"type": "int",
"defaultValue": 20000
},
"applicationEndPort": {
"type": "int",
"defaultValue": 30000
},
"ephemeralStartPort": {
"type": "int",
"defaultValue": 49152
},
"ephemeralEndPort": {
"type": "int",
"defaultValue": 65534
},
"fabricTcpGatewayPort": {
"type": "int",
"defaultValue": 19000
},
"fabricHttpGatewayPort": {
"type": "int",
"defaultValue": 19080
},
"maxPercentageUnhealthyApplications": {
"type": "int",
"defaultValue": 0
},
"maxPercentageUnhealthyNodes": {
"type": "int",
"defaultValue": 0
},
"maxPercentDeltaUnhealthyNodes": {
"type": "int",
"defaultValue": 100
},
"maxPercentUpgradeDomainDeltaUnhealthyNodes": {
"type": "int",
"defaultValue": 100
},
"clusterLocation": {
"type": "string"
},
"vmStorageAccountName": {
"type": "string"
},
"publicIPAddressName": {
"type": "string",
"defaultValue": "PublicIP-VM"
},
"publicIPAddressType": {
"type": "string",
"allowedValues": [
"Dynamic"
],
"defaultValue": "Dynamic"
},
"vmStorageAccountContainerName": {
"type": "string",
"defaultValue": "vhds"
},
"vmName": {
"type": "string",
"defaultValue": "VM"
},
"availSetName": {
"type": "string",
"defaultValue": "AvailabilitySet"
},
"adminUserName": {
"type": "string",
"defaultValue": "testadm"
},
"adminPassword": {
"type": "securestring"
},
"numberOfNodes": {
"type": "int",
"defaultValue": "5"
},
"vmSize": {
"type": "string",
"allowedValues": [
"Standard_A0",
"Standard_A1",
"Standard_A2",
"Standard_A3",
"Standard_A4",
"Standard_A5",
"Standard_A6",
"Standard_A7",
"Standard_A8",
"Standard_A9",
"Standard_A10",
"Standard_A11",
"Standard_D1",
"Standard_D2",
"Standard_D3",
"Standard_D4",
"Standard_D11",
"Standard_D12",
"Standard_D13",
"Standard_D14",
"Standard_DS1",
"Standard_DS2",
"Standard_DS3",
"Standard_DS4",
"Standard_DS11",
"Standard_DS12",
"Standard_DS13",
"Standard_DS14"
],
"defaultValue": "Standard_A2"
},
"certificateStoreValue": {
"type": "string",
"allowedValues": [
"My"
],
"defaultValue": "My"
},
"certificateThumbprint": {
"type": "string"
},
"sourceVaultValue": {
"type": "string"
},
"certificateUrlValue": {
"type": "string"
},
"clusterProtectionLevel": {
"type": "string",
"allowedValues": [
"None",
"Sign",
"EncryptAndSign"
],
"defaultValue": "EncryptAndSign"
},
"storageAccountType": {
"type": "string",
"allowedValues": [
"Standard_LRS",
"Standard_GRS"
],
"defaultValue": "Standard_LRS"
},
"vmImagePublisher": {
"type": "string",
"defaultValue": "MicrosoftWindowsServer"
},
"vmImageOffer": {
"type": "string",
"defaultValue": "WindowsServer"
},
"vmImageSku": {
"type": "string",
"defaultValue": "2012-R2-Datacenter"
},
"vmImageVersion": {
"type": "string",
"defaultValue": "latest"
},
"virtualNetworkName": {
"type": "string",
"defaultValue": "VNet"
},
"addressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16"
},
"subnet1Name": {
"type": "string",
"defaultValue": "Subnet-1"
},
"subnet2Name": {
"type": "string",
"defaultValue": "Subnet-2"
},
"subnet1Prefix": {
"type": "string",
"defaultValue": "10.0.0.0/24"
},
"subnet2Prefix": {
"type": "string",
"defaultValue": "10.0.1.0/24"
},
"dnsName": {
"type": "string"
},
"nicName": {
"type": "string",
"defaultValue": "NIC"
},
"lbName": {
"type": "string",
"defaultValue": "LoadBalancer"
},
"lbIPName": {
"type": "string",
"defaultValue": "PublicIP-LB-FE"
},
"loadBalancedAppPort1": {
"type": "int",
"defaultValue": 80
},
"loadBalancedAppPort2": {
"type": "int",
"defaultValue": 8505
},
"loadBalancedAppPort3": {
"type": "int",
"defaultValue": 8506
},
"loadBalancedAppPort4": {
"type": "int",
"defaultValue": 8507
},
"loadBalancedAppPort5": {
"type": "int",
"defaultValue": 12345
},
"loadBalancedAppPort6": {
"type": "int",
"defaultValue": 31000
},
},
"variables": {
"vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",
"subnet1Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet1Name'))]",
"lbID": "[resourceId('Microsoft.Network/loadBalancers',parameters('lbName'))]",
"lbIPConfig": "[concat(variables('lbID'),'/frontendIPConfigurations/LoadBalancerIPConfig')]",
"lbPoolID": "[concat(variables('lbID'),'/backendAddressPools/LoadBalancerBEAddressPool')]",
"lbProbeID": "[concat(variables('lbID'),'/probes/FabricGatewayProbe')]",
"lbHttpProbeID": "[concat(variables('lbID'),'/probes/FabricHttpGatewayProbe')]",
"diagnosticStorageAccountName": "[concat(parameters('vmStorageAccountName'),'diag')]"
},
"resources": [
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('vmStorageAccountName')]",
"location": "[parameters('clusterLocation')]",
"properties": {
"accountType": "[parameters('storageAccountType')]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('diagnosticStorageAccountName')]",
"location": "[parameters('clusterLocation')]",
"properties": {
"accountType": "[parameters('storageAccountType')]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Compute/availabilitySets",
"name": "[parameters('availSetName')]",
"location": "[parameters('clusterLocation')]"
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[parameters('lbIPName')]",
"location": "[parameters('clusterLocation')]",
"properties": {
"dnsSettings": {
"domainNameLabel": "[parameters('dnsName')]"
},
"publicIPAllocationMethod": "Dynamic"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('virtualNetworkName')]",
"location": "[parameters('clusterLocation')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet1Name')]",
"properties": {
"addressPrefix": "[parameters('subnet1Prefix')]"
}
},
{
"name": "[parameters('subnet2Name')]",
"properties": {
"addressPrefix": "[parameters('subnet2Prefix')]"
}
}
]
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/networkInterfaces",
"name": "[concat(parameters('nicName'),'-0')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Network/loadBalancers/', parameters('lbName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "IPConfig",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbPoolID')]"
}
],
"loadBalancerInboundNatRules": [
{
"id": "[concat(variables('lbID'),'/inboundNatRules/RDP-VM-0')]"
}
],
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}
]
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/networkInterfaces",
"name": "[concat(parameters('nicName'),'-',copyIndex(1))]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('nicName'),'-0')]",
"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
"[concat('Microsoft.Network/loadBalancers/', parameters('lbName'))]"
],
"properties": {
"ipConfigurations": [
{
"name": "IPConfig",
"properties": {
"loadBalancerBackendAddressPools": [
{
"id": "[variables('lbPoolID')]"
}
],
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnet1Ref')]"
}
}
}
]
},
"copy": {
"name": "nicLoop",
"count": "[sub(parameters('numberOfNodes'),1)]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "[concat(parameters('vmName'),copyIndex())]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Compute/availabilitySets/', parameters('availSetName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('vmStorageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', concat(parameters('nicName'),'-',copyIndex()))]"
],
"properties": {
"availabilitySet": {
"id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availSetName'))]"
},
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces',concat(parameters('nicName'),'-',copyIndex()))]"
}
]
},
"osProfile": {
"adminPassword": "[parameters('adminPassword')]",
"adminUsername": "[parameters('adminUsername')]",
"computername": "[concat(parameters('vmName'),copyIndex())]",
"secrets": [
{
"sourceVault": {
"id": "[parameters('sourceVaultValue')]"
},
"vaultCertificates": [
{
"certificateStore": "[parameters('certificateStoreValue')]",
"certificateUrl": "[parameters('certificateUrlValue')]"
}
]
}
],
"windowsConfiguration": {
"enableAutomaticUpdates": false,
"provisionVMAgent": true
}
},
"storageProfile": {
"imageReference": {
"publisher": "[parameters('vmImagePublisher')]",
"offer": "[parameters('vmImageOffer')]",
"sku": "[parameters('vmImageSku')]",
"version": "[parameters('vmImageVersion')]"
},
"osDisk": {
"name": "osdisk",
"vhd": {
"uri": "[concat('http://',parameters('vmStorageAccountName'),'.blob.core.windows.net/',parameters('vmStorageAccountContainerName'),'/',resourcegroup().name,'-',parameters('vmName'),copyIndex(),'.vhd')]"
},
"caching": "ReadWrite",
"createOption": "FromImage"
}
}
},
"copy": {
"name": "vmLoop",
"count": "[parameters('numberOfNodes')]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('vmName'),copyIndex(0),'/ServiceFabricNode')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'), copyIndex(0))]"
],
"properties": {
"type": "ServiceFabricNode",
"publisher": "Microsoft.Azure.ServiceFabric",
"protectedSettings": {
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName')),'2015-05-01-preview').key1]",
"StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName')),'2015-05-01-preview').key2]"
},
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "NodeType1",
"dataPath": "D:\\SvcFab",
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
}
},
"typeHandlerVersion": "1.0"
},
"copy": {
"name": "vmServiceFabExtensionLoop",
"count": "[parameters('numberOfNodes')]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('vmName'),copyIndex(),'/Microsoft.Insights.VMDiagnosticsSettings')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', variables('diagnosticStorageAccountName'))]",
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'), copyIndex(0))]",
"[concat('Microsoft.Compute/virtualMachines/',parameters('vmName'),copyIndex(0),'/extensions/ServiceFabricNode')]"
],
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[variables('diagnosticStorageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName')),'2015-05-01-preview').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('diagnosticStorageAccountName')]"
},
"typeHandlerVersion": "1.5"
},
"copy": {
"name": "vmExtensionLoop",
"count": "[parameters('numberOfNodes')]"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Network/loadBalancers",
"name": "[parameters('lbName')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/',parameters('lbIPName'))]"
],
"properties": {
"frontendIPConfigurations": [
{
"name": "LoadBalancerIPConfig",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('lbIPName'))]"
}
}
}
],
"backendAddressPools": [
{
"name": "LoadBalancerBEAddressPool",
"properties": { }
}
],
"inboundNatRules": [
{
"name": "RDP-VM-0",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "33000",
"protocol": "tcp"
}
}
],
"loadBalancingRules": [
{
"name": "LBRule",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('fabricTcpGatewayPort')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('fabricTcpGatewayPort')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[variables('lbProbeID')]"
},
"protocol": "tcp"
}
},
{
"name": "LBHttpRule",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('fabricHttpGatewayPort')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('fabricHttpGatewayPort')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[variables('lbHttpProbeID')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule1",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort1')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort1')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe1')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule2",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort2')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort2')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe2')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule3",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort3')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort3')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe3')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule4",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort4')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort4')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe4')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule5",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort5')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort5')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe5')]"
},
"protocol": "tcp"
}
},
{
"name": "AppPortLBRule6",
"properties": {
"backendAddressPool": {
"id": "[variables('lbPoolID')]"
},
"backendPort": "[parameters('loadBalancedAppPort6')]",
"enableFloatingIP": "false",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig')]"
},
"frontendPort": "[parameters('loadBalancedAppPort6')]",
"idleTimeoutInMinutes": "5",
"probe": {
"id": "[concat(variables('lbID'),'/probes/AppPortProbe6')]"
},
"protocol": "tcp"
}
}
],
"probes": [
{
"name": "FabricGatewayProbe",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('fabricTcpGatewayPort')]",
"protocol": "tcp"
}
},
{
"name": "FabricHttpGatewayProbe",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('fabricHttpGatewayPort')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe1",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort1')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe2",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort2')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe3",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort3')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe4",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort4')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe5",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort5')]",
"protocol": "tcp"
}
},
{
"name": "AppPortProbe6",
"properties": {
"intervalInSeconds": 5,
"numberOfProbes": 2,
"port": "[parameters('loadBalancedAppPort6')]",
"protocol": "tcp"
}
}
]
}
},
{
"apiVersion": "2015-01-01-alpha",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', variables('diagnosticStorageAccountName'))]"
],
"properties": {
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
"clientCertificateCommonNames": [
{
"certificateCommonName": "[parameters('dnsName')]",
"certificateIssuerThumbprint": "[parameters('certificateThumbprint')]",
"isAdmin": true
}
],
"clientCertificateThumbprints": [
{
"certificateThumbprint": "[parameters('certificateThumbprint')]",
"isAdmin": true
}
],
"diagnosticsStorageAccountConfig": {
"blobEndpoint": "[concat('https://',variables('diagnosticStorageAccountName'),'.blob.core.windows.net/')]",
"primaryAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName')),'2015-05-01-preview').key1]",
"queueEndpoint": "[concat('https://',variables('diagnosticStorageAccountName'),'.queue.core.windows.net/')]",
"secondaryAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('diagnosticStorageAccountName')),'2015-05-01-preview').key2]",
"storageAccountName": "[variables('diagnosticStorageAccountName')]",
"tableEndpoint": "[concat('https://',variables('diagnosticStorageAccountName'),'.table.core.windows.net/')]"
},
"expectedVMResources": [
{
"name": "VM1",
"nodeTypeRef": "NodeType1",
"vmInstanceCount": "[parameters('numberOfNodes')]"
}
],
"fabricSettings": [
{
"parameters": [
{
"name": "ClusterProtectionLevel",
"value": "[parameters('clusterProtectionLevel')]"
}
],
"name": "Security"
},
{
"parameters": [
{
"name": "OptimizeForLocalSSD",
"value": "true"
}
],
"name": "TransactionalReplicator"
}
],
"managementEndpoint": "[concat('https://',reference(parameters('lbIPName')).dnsSettings.fqdn,':',parameters('fabricHttpGatewayPort'))]",
"nodeTypes": [
{
"name": "NodeType1",
"applicationPorts": {
"endPort": "[parameters('applicationEndPort')]",
"startPort": "[parameters('applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('fabricTcpGatewayPort')]",
"ephemeralPorts": {
"endPort": "[parameters('ephemeralEndPort')]",
"startPort": "[parameters('ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('fabricHttpGatewayPort')]"
}
],
"upgradeDescription": {
"deltaHealthPolicy": {
"maxPercentDeltaUnhealthyNodes": "[parameters('maxPercentDeltaUnhealthyNodes')]",
"maxPercentUpgradeDomainDeltaUnhealthyNodes": "[parameters('maxPercentUpgradeDomainDeltaUnhealthyNodes')]"
},
"forceRestart": false,
"healthCheckRetryTimeout": "00:05:00",
"healthCheckStableDuration": "00:00:30",
"healthCheckWaitDuration": "00:00:30",
"healthPolicy": {
"maxPercentUnhealthyApplications": "[parameters('maxPercentageUnhealthyApplications')]",
"maxPercentUnhealthyNodes": "[parameters('maxPercentageUnhealthyNodes')]"
},
"overrideUserUpgradePolicy": false,
"upgradeDomainTimeout": "00:15:00",
"upgradeReplicaSetCheckTimeout": "00:10:00",
"upgradeTimeout": "00:15:00"
}
}
}
],
"outputs": {
"clusterManagementEndpoint": {
"value": "[reference(parameters('clusterName')).clusterEndpoint]",
"type": "string"
},
"certificateThumbprint": {
"value": "[parameters('certificateThumbprint')]",
"type": "string"
},
"certificateCommonName": {
"value": "[parameters('dnsName')]",
"type": "string"
}
}
}