diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.Parameters.json b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.Parameters.json new file mode 100644 index 0000000..c30c9e6 --- /dev/null +++ b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.Parameters.json @@ -0,0 +1,78 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterLocation": { + "value": "westus" + }, + "clusterName": { + "value": "GEN-UNIQUE" + }, + "adminUserName": { + "value": "GEN-UNIQUE" + }, + "adminPassword": { + "value": "GEN-PASSWORD" + }, + "vmImagePublisher": { + "value": "Canonical" + }, + "vmImageOffer": { + "value": "UbuntuServer" + }, + "vmImageSku": { + "value": "18.04-LTS" + }, + "vmImageVersion": { + "value": "latest" + }, + "loadBalancedAppPort1": { + "value": 80 + }, + "loadBalancedAppPort2": { + "value": 8081 + }, + "clusterProtectionLevel": { + "value": "EncryptAndSign" + }, + "certificateStoreValue": { + "value": "My" + }, + "certificateThumbprint": { + "value": "GEN-SF-CERT-THUMBPRINT" + }, + "sourceVaultValue": { + "value": "GEN-KEYVAULT-RESOURCE-ID" + }, + "certificateUrlValue": { + "value": "GEN-SF-CERT-URL" + }, + "storageAccountType": { + "value": "Standard_LRS" + }, + "supportLogStorageAccountType": { + "value": "Standard_LRS" + }, + "applicationDiagnosticsStorageAccountType": { + "value": "Standard_LRS" + }, + "nt0InstanceCount": { + "value": 5 + }, + "vmNodeType0Size": { + "value": "Standard_D2_v2" + }, + "nt1InstanceCount": { + "value": 1 + }, + "vmNodeType1Size": { + "value": "Standard_D2_v2" + }, + "nt2InstanceCount": { + "value": 1 + }, + "vmNodeType2Size": { + "value": "Standard_D2_v2" + } + } +} \ No newline at end of file diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.json b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.json new file mode 100644 index 0000000..263ad5f --- /dev/null +++ b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/AzureDeploy.json @@ -0,0 +1,1382 @@ +{ + "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json", + "contentVersion": "1.0.0.0", + "parameters": { + "clusterLocation": { + "type": "string", + "defaultValue": "westus", + "metadata": { + "description": "Location of the Cluster" + } + }, + "clusterName": { + "type": "string", + "defaultValue": "GEN-UNIQUE", + "metadata": { + "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only" + } + }, + "adminUserName": { + "type": "string", + "defaultValue": "GEN-UNIQUE", + "metadata": { + "description": "Remote desktop user Id" + } + }, + "adminPassword": { + "type": "securestring", + "defaultValue": "GEN-PASSWORD", + "metadata": { + "description": "Remote desktop user password. Must be a strong password" + } + }, + "vmImagePublisher": { + "type": "string", + "defaultValue": "Canonical", + "metadata": { + "description": "VM image Publisher" + } + }, + "vmImageOffer": { + "type": "string", + "defaultValue": "UbuntuServer", + "metadata": { + "description": "VM image offer" + } + }, + "vmImageSku": { + "type": "string", + "defaultValue": "18.04-LTS", + "metadata": { + "description": "VM image SKU" + } + }, + "vmImageVersion": { + "type": "string", + "defaultValue": "latest", + "metadata": { + "description": "VM image version" + } + }, + "loadBalancedAppPort1": { + "type": "int", + "defaultValue": 80, + "metadata": { + "description": "Input endpoint1 for the application to use. Replace it with what your application uses" + } + }, + "loadBalancedAppPort2": { + "type": "int", + "defaultValue": 8081, + "metadata": { + "description": "Input endpoint2 for the application to use. Replace it with what your application uses" + } + }, + "clusterProtectionLevel": { + "type": "string", + "allowedValues": [ + "None", + "Sign", + "EncryptAndSign" + ], + "defaultValue": "EncryptAndSign", + "metadata": { + "description": "Protection level.Three values are allowed - EncryptAndSign, Sign, None. It is best to keep the default of EncryptAndSign, unless you have a need not to" + } + }, + "certificateStoreValue": { + "type": "string", + "allowedValues": [ + "My" + ], + "defaultValue": "My", + "metadata": { + "description": "The store name where the cert will be deployed in the virtual machine" + } + }, + "certificateThumbprint": { + "type": "string", + "defaultValue": "GEN-CUSTOM-DOMAIN-SSLCERT-THUMBPRINT", + "metadata": { + "description": "Certificate Thumbprint" + } + }, + "sourceVaultValue": { + "type": "string", + "defaultValue": "GEN-KEYVAULT-RESOURCE-ID", + "metadata": { + "description": "Resource Id of the key vault, is should be in the format of /subscriptions//resourceGroups//providers/Microsoft.KeyVault/vaults/" + } + }, + "certificateUrlValue": { + "type": "string", + "defaultValue": "GEN-KEYVAULT-SSL-SECRET-URI", + "metadata": { + "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://.vault.azure.net:443/secrets/" + } + }, + "storageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the VM image storage account" + } + }, + "supportLogStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the support log storage account" + } + }, + "applicationDiagnosticsStorageAccountType": { + "type": "string", + "allowedValues": [ + "Standard_LRS", + "Standard_GRS" + ], + "defaultValue": "Standard_LRS", + "metadata": { + "description": "Replication option for the application diagnostics storage account" + } + }, + "nt0InstanceCount": { + "type": "int", + "defaultValue": 5, + "metadata": { + "description": "Instance count for node type" + } + }, + "vmNodeType0Size": { + "type": "string", + "defaultValue": "Standard_D2_v2" + }, + "nt1InstanceCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Instance count for node type" + } + }, + "vmNodeType1Size": { + "type": "string", + "defaultValue": "Standard_D2_v2" + }, + "nt2InstanceCount": { + "type": "int", + "defaultValue": 1, + "metadata": { + "description": "Instance count for node type" + } + }, + "vmNodeType2Size": { + "type": "string", + "defaultValue": "Standard_D2_v2" + } + }, + "variables": { + "computeLocation": "[parameters('clusterLocation')]", + "dnsName": "[parameters('clusterName')]", + "vmStorageAccountName": "[toLower(concat( 'sflogs', uniqueString(resourceGroup().id), '1' ))]", + "vmName": "vm", + "publicIPAddressName": "PublicIP-VM", + "publicIPAddressType": "Dynamic", + "vmStorageAccountContainerName": "vhds", + "virtualNetworkName": "VNet", + "addressPrefix": "10.0.0.0/16", + "nicName": "NIC", + "lbName": "LoadBalancer", + "lbIPName": "PublicIP-LB-FE", + "availSetName": "AvailabilitySet", + "maxPercentUpgradeDomainDeltaUnhealthyNodes": "100", + "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',variables('virtualNetworkName'))]", + "overProvision": "false", + "storageApiVersion": "2016-01-01", + "nt0applicationStartPort": "20000", + "nt0applicationEndPort": "30000", + "nt0ephemeralStartPort": "49152", + "nt0ephemeralEndPort": "65534", + "nt0fabricTcpGatewayPort": "19000", + "nt0fabricHttpGatewayPort": "19080", + "subnet0Name": "Subnet-0", + "subnet0Prefix": "10.0.0.0/24", + "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet0Name'))]", + "nt1applicationStartPort": "20000", + "nt1applicationEndPort": "30000", + "nt1ephemeralStartPort": "49152", + "nt1ephemeralEndPort": "65534", + "nt1fabricTcpGatewayPort": "19000", + "nt1fabricHttpGatewayPort": "19080", + "subnet1Name": "Subnet-1", + "subnet1Prefix": "10.0.1.0/24", + "subnet1Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet1Name'))]", + "nt2applicationStartPort": "20000", + "nt2applicationEndPort": "30000", + "nt2ephemeralStartPort": "49152", + "nt2ephemeralEndPort": "65534", + "nt2fabricTcpGatewayPort": "19000", + "nt2fabricHttpGatewayPort": "19080", + "subnet2Name": "Subnet-2", + "subnet2Prefix": "10.0.2.0/24", + "subnet2Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet2Name'))]", + "supportLogStorageAccountName": "[toLower( concat( uniqueString(resourceGroup().id),'2'))]", + "applicationDiagnosticsStorageAccountName": "[toLower(concat('wad',uniqueString(resourceGroup().id), '3' ))]", + "wadlogs": "", + "wadperfcounters1": "", + "wadperfcounters2": "", + "wadcfgxstart": "[concat(variables('wadlogs'),variables('wadperfcounters1'),variables('wadperfcounters2'),'')]", + "lbID0": "[resourceId('Microsoft.Network/loadBalancers',concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType0Name')))]", + "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": "[toLower(concat('NT1', variables('vmName')))]", + "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]", + "wadmetricsresourceid0": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', variables('vmNodeType0Name'))]", + "lbID1": "[resourceId('Microsoft.Network/loadBalancers',concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType1Name')))]", + "lbIPConfig1": "[concat(variables('lbID1'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", + "lbPoolID1": "[concat(variables('lbID1'),'/backendAddressPools/LoadBalancerBEAddressPool')]", + "lbProbeID1": "[concat(variables('lbID1'),'/probes/FabricGatewayProbe')]", + "lbHttpProbeID1": "[concat(variables('lbID1'),'/probes/FabricHttpGatewayProbe')]", + "lbNatPoolID1": "[concat(variables('lbID1'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", + "vmNodeType1Name": "[toLower(concat('NT2', variables('vmName')))]", + "vmStorageAccountName1": "[toLower(concat(uniqueString(resourceGroup().id), '1', '1' ))]", + "wadmetricsresourceid1": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', variables('vmNodeType1Name'))]", + "lbID2": "[resourceId('Microsoft.Network/loadBalancers',concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType2Name')))]", + "lbIPConfig2": "[concat(variables('lbID2'),'/frontendIPConfigurations/LoadBalancerIPConfig')]", + "lbPoolID2": "[concat(variables('lbID2'),'/backendAddressPools/LoadBalancerBEAddressPool')]", + "lbProbeID2": "[concat(variables('lbID2'),'/probes/FabricGatewayProbe')]", + "lbHttpProbeID2": "[concat(variables('lbID2'),'/probes/FabricHttpGatewayProbe')]", + "lbNatPoolID2": "[concat(variables('lbID2'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]", + "vmNodeType2Name": "[toLower(concat('NT3', variables('vmName')))]", + "vmStorageAccountName2": "[toLower(concat(uniqueString(resourceGroup().id), '1', '2' ))]", + "wadmetricsresourceid2": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',resourceGroup().name ,'/providers/','Microsoft.Compute/virtualMachineScaleSets/', variables('vmNodeType2Name'))]" + }, + "resources": [ + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('supportLogStorageAccountName')]", + "location": "[variables('computeLocation')]", + "dependsOn": [], + "properties": {}, + "kind": "Storage", + "sku": { + "name": "[parameters('supportLogStorageAccountType')]" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-07-01", + "type": "Microsoft.Storage/storageAccounts", + "name": "[variables('applicationDiagnosticsStorageAccountName')]", + "location": "[variables('computeLocation')]", + "dependsOn": [], + "properties": {}, + "kind": "Storage", + "sku": { + "name": "[parameters('applicationDiagnosticsStorageAccountType')]" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/virtualNetworks", + "name": "[variables('virtualNetworkName')]", + "location": "[variables('computeLocation')]", + "dependsOn": [], + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[variables('addressPrefix')]" + ] + }, + "subnets": [ + { + "name": "[variables('subnet0Name')]", + "properties": { + "addressPrefix": "[variables('subnet0Prefix')]" + } + }, + { + "name": "[variables('subnet1Name')]", + "properties": { + "addressPrefix": "[variables('subnet1Prefix')]" + } + }, + { + "name": "[variables('subnet2Name')]", + "properties": { + "addressPrefix": "[variables('subnet2Prefix')]" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType0Name'))]", + "location": "[variables('computeLocation')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[variables('dnsName')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType0Name'))]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType0Name')))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-',variables('vmNodeType0Name')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID0')]" + }, + "backendPort": "[variables('nt0fabricTcpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig0')]" + }, + "frontendPort": "[variables('nt0fabricTcpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbProbeID0')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID0')]" + }, + "backendPort": "[variables('nt0fabricHttpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig0')]" + }, + "frontendPort": "[variables('nt0fabricHttpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbHttpProbeID0')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID0')]" + }, + "backendPort": "[parameters('loadBalancedAppPort1')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig0')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort1')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID0'),'/probes/AppPortProbe1')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID0')]" + }, + "backendPort": "[parameters('loadBalancedAppPort2')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig0')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort2')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID0'),'/probes/AppPortProbe2')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt0fabricTcpGatewayPort')]", + "protocol": "tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt0fabricHttpGatewayPort')]", + "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" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": "22", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig0')]" + }, + "frontendPortRangeEnd": "4500", + "frontendPortRangeStart": "3389", + "protocol": "tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('vmNodeType0Name')]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType0Name')))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]" + ], + "properties": { + "overprovision": "[variables('overProvision')]", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]", + "properties": { + "type": "ServiceFabricLinuxNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "[variables('vmNodeType0Name')]", + "durabilityLevel": "Bronze", + "enableParallelJobs": true, + "nicPrefixOverride": "[variables('subnet0Prefix')]", + "certificate": { + "thumbprint": "[parameters('certificateThumbprint')]", + "x509StoreName": "[parameters('certificateStoreValue')]" + } + }, + "typeHandlerVersion": "1.0" + } + }, + { + "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]", + "properties": { + "type": "LinuxDiagnostic", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", + "storageAccountEndPoint": "https://core.windows.net/" + }, + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid0'),variables('wadcfgxend')))]", + "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" + }, + "typeHandlerVersion": "2.3" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[concat(variables('nicName'), '-0')]", + "properties": { + "ipConfigurations": [ + { + "name": "[concat(variables('nicName'),'-',0)]", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[variables('lbPoolID0')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[variables('lbNatPoolID0')]" + } + ], + "subnet": { + "id": "[variables('subnet0Ref')]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "[parameters('adminPassword')]", + "adminUsername": "[parameters('adminUsername')]", + "computernamePrefix": "[variables('vmNodeType0Name')]", + "secrets": [ + { + "sourceVault": { + "id": "[parameters('sourceVaultValue')]" + }, + "vaultCertificates": [ + { + "certificateUrl": "[parameters('certificateUrlValue')]" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "[parameters('vmImagePublisher')]", + "offer": "[parameters('vmImageOffer')]", + "sku": "[parameters('vmImageSku')]", + "version": "[parameters('vmImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "[parameters('storageAccountType')]" + } + } + } + } + }, + "sku": { + "name": "[parameters('vmNodeType0Size')]", + "capacity": "[parameters('nt0InstanceCount')]", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType1Name'))]", + "location": "[variables('computeLocation')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[concat(variables('dnsName'),'-','nt2')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType1Name'))]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType1Name')))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-',variables('vmNodeType1Name')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID1')]" + }, + "backendPort": "[variables('nt1fabricTcpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig1')]" + }, + "frontendPort": "[variables('nt1fabricTcpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbProbeID1')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID1')]" + }, + "backendPort": "[variables('nt1fabricHttpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig1')]" + }, + "frontendPort": "[variables('nt1fabricHttpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbHttpProbeID1')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID1')]" + }, + "backendPort": "[parameters('loadBalancedAppPort1')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig1')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort1')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID1'),'/probes/AppPortProbe1')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID1')]" + }, + "backendPort": "[parameters('loadBalancedAppPort2')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig1')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort2')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID1'),'/probes/AppPortProbe2')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt1fabricTcpGatewayPort')]", + "protocol": "tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt1fabricHttpGatewayPort')]", + "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" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": "22", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig1')]" + }, + "frontendPortRangeEnd": "4500", + "frontendPortRangeStart": "3389", + "protocol": "tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('vmNodeType1Name')]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType1Name')))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]" + ], + "properties": { + "overprovision": "[variables('overProvision')]", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType1Name')]", + "properties": { + "type": "ServiceFabricLinuxNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "[variables('vmNodeType1Name')]", + "durabilityLevel": "Bronze", + "enableParallelJobs": true, + "nicPrefixOverride": "[variables('subnet1Prefix')]", + "certificate": { + "thumbprint": "[parameters('certificateThumbprint')]", + "x509StoreName": "[parameters('certificateStoreValue')]" + } + }, + "typeHandlerVersion": "1.1" + } + }, + { + "name": "[concat('VMDiagnosticsVmExt','_vmNodeType1Name')]", + "properties": { + "type": "LinuxDiagnostic", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", + "storageAccountEndPoint": "https://core.windows.net/" + }, + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid1'),variables('wadcfgxend')))]", + "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" + }, + "typeHandlerVersion": "2.3" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[concat(variables('nicName'), '-1')]", + "properties": { + "ipConfigurations": [ + { + "name": "[concat(variables('nicName'),'-',1)]", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[variables('lbPoolID1')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[variables('lbNatPoolID1')]" + } + ], + "subnet": { + "id": "[variables('subnet1Ref')]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "[parameters('adminPassword')]", + "adminUsername": "[parameters('adminUsername')]", + "computernamePrefix": "[variables('vmNodeType1Name')]", + "secrets": [ + { + "sourceVault": { + "id": "[parameters('sourceVaultValue')]" + }, + "vaultCertificates": [ + { + "certificateUrl": "[parameters('certificateUrlValue')]" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "[parameters('vmImagePublisher')]", + "offer": "[parameters('vmImageOffer')]", + "sku": "[parameters('vmImageSku')]", + "version": "[parameters('vmImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "[parameters('storageAccountType')]" + } + } + } + } + }, + "sku": { + "name": "[parameters('vmNodeType1Size')]", + "capacity": "[parameters('nt1InstanceCount')]", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/publicIPAddresses", + "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType2Name'))]", + "location": "[variables('computeLocation')]", + "properties": { + "dnsSettings": { + "domainNameLabel": "[concat(variables('dnsName'),'-','nt3')]" + }, + "publicIPAllocationMethod": "Dynamic" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-08-01", + "type": "Microsoft.Network/loadBalancers", + "name": "[concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType2Name'))]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType2Name')))]" + ], + "properties": { + "frontendIPConfigurations": [ + { + "name": "LoadBalancerIPConfig", + "properties": { + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-',variables('vmNodeType2Name')))]" + } + } + } + ], + "backendAddressPools": [ + { + "name": "LoadBalancerBEAddressPool", + "properties": {} + } + ], + "loadBalancingRules": [ + { + "name": "LBRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID2')]" + }, + "backendPort": "[variables('nt2fabricTcpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig2')]" + }, + "frontendPort": "[variables('nt2fabricTcpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbProbeID2')]" + }, + "protocol": "tcp" + } + }, + { + "name": "LBHttpRule", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID2')]" + }, + "backendPort": "[variables('nt2fabricHttpGatewayPort')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig2')]" + }, + "frontendPort": "[variables('nt2fabricHttpGatewayPort')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[variables('lbHttpProbeID2')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule1", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID2')]" + }, + "backendPort": "[parameters('loadBalancedAppPort1')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig2')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort1')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID2'),'/probes/AppPortProbe1')]" + }, + "protocol": "tcp" + } + }, + { + "name": "AppPortLBRule2", + "properties": { + "backendAddressPool": { + "id": "[variables('lbPoolID2')]" + }, + "backendPort": "[parameters('loadBalancedAppPort2')]", + "enableFloatingIP": "false", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig2')]" + }, + "frontendPort": "[parameters('loadBalancedAppPort2')]", + "idleTimeoutInMinutes": "5", + "probe": { + "id": "[concat(variables('lbID2'),'/probes/AppPortProbe2')]" + }, + "protocol": "tcp" + } + } + ], + "probes": [ + { + "name": "FabricGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt2fabricTcpGatewayPort')]", + "protocol": "tcp" + } + }, + { + "name": "FabricHttpGatewayProbe", + "properties": { + "intervalInSeconds": 5, + "numberOfProbes": 2, + "port": "[variables('nt2fabricHttpGatewayPort')]", + "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" + } + } + ], + "inboundNatPools": [ + { + "name": "LoadBalancerBEAddressNatPool", + "properties": { + "backendPort": "22", + "frontendIPConfiguration": { + "id": "[variables('lbIPConfig2')]" + }, + "frontendPortRangeEnd": "4500", + "frontendPortRangeStart": "3389", + "protocol": "tcp" + } + } + ] + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-10-01", + "type": "Microsoft.Compute/virtualMachineScaleSets", + "name": "[variables('vmNodeType2Name')]", + "location": "[variables('computeLocation')]", + "dependsOn": [ + "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]", + "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType2Name')))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]", + "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]" + ], + "properties": { + "overprovision": "[variables('overProvision')]", + "upgradePolicy": { + "mode": "Automatic" + }, + "virtualMachineProfile": { + "extensionProfile": { + "extensions": [ + { + "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType2Name')]", + "properties": { + "type": "ServiceFabricLinuxNode", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]", + "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]" + }, + "publisher": "Microsoft.Azure.ServiceFabric", + "settings": { + "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]", + "nodeTypeRef": "[variables('vmNodeType2Name')]", + "durabilityLevel": "Bronze", + "enableParallelJobs": true, + "nicPrefixOverride": "[variables('subnet2Prefix')]", + "certificate": { + "thumbprint": "[parameters('certificateThumbprint')]", + "x509StoreName": "[parameters('certificateStoreValue')]" + } + }, + "typeHandlerVersion": "1.0" + } + }, + { + "name": "[concat('VMDiagnosticsVmExt','_vmNodeType2Name')]", + "properties": { + "type": "LinuxDiagnostic", + "autoUpgradeMinorVersion": true, + "protectedSettings": { + "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]", + "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]", + "storageAccountEndPoint": "https://core.windows.net/" + }, + "publisher": "Microsoft.OSTCExtensions", + "settings": { + "xmlCfg": "[base64(concat(variables('wadcfgxstart'),variables('wadmetricsresourceid2'),variables('wadcfgxend')))]", + "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]" + }, + "typeHandlerVersion": "2.3" + } + } + ] + }, + "networkProfile": { + "networkInterfaceConfigurations": [ + { + "name": "[concat(variables('nicName'), '-2')]", + "properties": { + "ipConfigurations": [ + { + "name": "[concat(variables('nicName'),'-',2)]", + "properties": { + "loadBalancerBackendAddressPools": [ + { + "id": "[variables('lbPoolID2')]" + } + ], + "loadBalancerInboundNatPools": [ + { + "id": "[variables('lbNatPoolID2')]" + } + ], + "subnet": { + "id": "[variables('subnet2Ref')]" + } + } + } + ], + "primary": true + } + } + ] + }, + "osProfile": { + "adminPassword": "[parameters('adminPassword')]", + "adminUsername": "[parameters('adminUsername')]", + "computernamePrefix": "[variables('vmNodeType2Name')]", + "secrets": [ + { + "sourceVault": { + "id": "[parameters('sourceVaultValue')]" + }, + "vaultCertificates": [ + { + "certificateUrl": "[parameters('certificateUrlValue')]" + } + ] + } + ] + }, + "storageProfile": { + "imageReference": { + "publisher": "[parameters('vmImagePublisher')]", + "offer": "[parameters('vmImageOffer')]", + "sku": "[parameters('vmImageSku')]", + "version": "[parameters('vmImageVersion')]" + }, + "osDisk": { + "caching": "ReadOnly", + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "[parameters('storageAccountType')]" + } + } + } + } + }, + "sku": { + "name": "[parameters('vmNodeType2Size')]", + "capacity": "[parameters('nt2InstanceCount')]", + "tier": "Standard" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + }, + { + "apiVersion": "2018-02-01", + "type": "Microsoft.ServiceFabric/clusters", + "name": "[parameters('clusterName')]", + "location": "[parameters('clusterLocation')]", + "dependsOn": [ + "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]" + ], + "properties": { + "addonFeatures": [ + "DnsService", + "RepairManager" + ], + "certificate": { + "thumbprint": "[parameters('certificateThumbprint')]", + "x509StoreName": "[parameters('certificateStoreValue')]" + }, + "clusterState": "Default", + "diagnosticsStorageAccountConfig": { + "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]", + "protectedAccountKeyName": "StorageAccountKey1", + "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]", + "storageAccountName": "[variables('supportLogStorageAccountName')]", + "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]" + }, + "fabricSettings": [ + { + "parameters": [ + { + "name": "ClusterProtectionLevel", + "value": "[parameters('clusterProtectionLevel')]" + } + ], + "name": "Security" + } + ], + "managementEndpoint": "[concat('https://',reference(concat(variables('lbIPName'),'-',variables('vmNodeType0Name'))).dnsSettings.fqdn,':',variables('nt0fabricHttpGatewayPort'))]", + "nodeTypes": [ + { + "name": "[variables('vmNodeType0Name')]", + "applicationPorts": { + "endPort": "[variables('nt0applicationEndPort')]", + "startPort": "[variables('nt0applicationStartPort')]" + }, + "clientConnectionEndpointPort": "[variables('nt0fabricTcpGatewayPort')]", + "durabilityLevel": "Bronze", + "ephemeralPorts": { + "endPort": "[variables('nt0ephemeralEndPort')]", + "startPort": "[variables('nt0ephemeralStartPort')]" + }, + "httpGatewayEndpointPort": "[variables('nt0fabricHttpGatewayPort')]", + "isPrimary": true, + "vmInstanceCount": "[parameters('nt0InstanceCount')]" + }, + { + "name": "[variables('vmNodeType1Name')]", + "applicationPorts": { + "endPort": "[variables('nt1applicationEndPort')]", + "startPort": "[variables('nt1applicationStartPort')]" + }, + "clientConnectionEndpointPort": "[variables('nt1fabricTcpGatewayPort')]", + "durabilityLevel": "Bronze", + "ephemeralPorts": { + "endPort": "[variables('nt1ephemeralEndPort')]", + "startPort": "[variables('nt1ephemeralStartPort')]" + }, + "httpGatewayEndpointPort": "[variables('nt1fabricHttpGatewayPort')]", + "isPrimary": false, + "vmInstanceCount": "[parameters('nt1InstanceCount')]" + }, + { + "name": "[variables('vmNodeType2Name')]", + "applicationPorts": { + "endPort": "[variables('nt2applicationEndPort')]", + "startPort": "[variables('nt2applicationStartPort')]" + }, + "clientConnectionEndpointPort": "[variables('nt2fabricTcpGatewayPort')]", + "durabilityLevel": "Bronze", + "ephemeralPorts": { + "endPort": "[variables('nt2ephemeralEndPort')]", + "startPort": "[variables('nt2ephemeralStartPort')]" + }, + "httpGatewayEndpointPort": "[variables('nt2fabricHttpGatewayPort')]", + "isPrimary": false, + "vmInstanceCount": "[parameters('nt2InstanceCount')]" + } + ], + "provisioningState": "Default", + "reliabilityLevel": "Silver", + "upgradeMode": "Automatic", + "vmImage": "Linux" + }, + "tags": { + "resourceType": "Service Fabric", + "clusterName": "[parameters('clusterName')]" + } + } + ], + "outputs": { + "clusterProperties": { + "value": "[reference(parameters('clusterName'))]", + "type": "object" + } + } +} \ No newline at end of file diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadCert.PNG b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadCert.PNG new file mode 100644 index 0000000..af1c0c2 Binary files /dev/null and b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadCert.PNG differ diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadTemplate.png b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadTemplate.png new file mode 100644 index 0000000..ffe620d Binary files /dev/null and b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/DownloadTemplate.png differ diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/README.md b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/README.md new file mode 100644 index 0000000..1671f4e --- /dev/null +++ b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/README.md @@ -0,0 +1,36 @@ +# 7 Node, 3 nodetype secure Ubuntu 18.04 Service Fabric Cluster with Azure Diagnostics enabled + + + + + + + + +This template allows you to deploy a secure 7 Node,three Node Type Service Fabric Cluster running Ubuntu Server on a Standard_D2_v2 Size Virtual Machine Scale set with Azure Diagnostics turned on. + +![DownloadCert] + +## Creating a custom ARM template + +If you are wanting to create a custom ARM template for your cluster, then you have two choices. + +1. You can acquire this sample template make changes to it. +2. Log into the azure portal and use the service fabric portal pages to generate the template for you to customize. + 1. Log on to the Azure Portal [http://aka.ms/servicefabricportal](http://aka.ms/servicefabricportal). + + 2. Go through the process of creating the cluster as described in [Creating Service Fabric Cluster via portal](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-creation-via-portal) , but do not click on ***create**, instead go to Summary and download the template and parameters. + + + ![DownloadTemplate][DownloadTemplate] + + +Unzip the downloaded .zip on your local machine, make any changes to template or the parameter file as you need. + + + +[DownloadTemplate]: ./DownloadTemplate.png +[DownloadCert]: ./DownloadCert.PNG + + + diff --git a/7-VM-Ubuntu-1804-3-NodeTypes-Secure/metadata.json b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/metadata.json new file mode 100644 index 0000000..ac28c1c --- /dev/null +++ b/7-VM-Ubuntu-1804-3-NodeTypes-Secure/metadata.json @@ -0,0 +1,7 @@ +{ + "itemDisplayName": "Deploy a 7 Node, 3 nodetype Ubuntu 18.04 Service Fabric Cluster", + "description": "This template allows you to deploy a secure 7 Node, 3 nodetype Service Fabric Cluster running Ubuntu 18.04 on a Standard_D2_V2 Size VMSS.", + "summary": "This template takes a minimum amount of parameters and deploys 7 Node, 3 nodetype Service Fabric Cluster running Ubuntu 18.04 ", + "githubUsername": "nickomang", + "dateUpdated": "2020-02-24" +}