{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "_artifactsLocation": { "type": "string", "defaultValue": "https://raw.githubusercontent.com/elastic/azure-marketplace/master/src/", "metadata": { "description": "The base URI where artifacts required by this template are located, including a trailing '/'" } }, "_artifactsLocationSasToken": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated. Use the defaultValue if the staging location is not secured." } }, "elasticTags": { "type": "object", "defaultValue": { "provider": "648D2193-0CE0-4EFB-8A82-AF9792184FD9", "tracking": "pid-B2C934E3-29F3-4194-BFD2-4F1370B78E0C" }, "metadata": { "description": "Unique identifiers to allow the Azure Infrastructure to understand the origin of resources deployed to Azure. You do not need to supply a value for this." } }, "esVersion": { "type": "string", "defaultValue": "7.11.1", "allowedValues": [ "6.8.14", "7.4.2", "7.5.2", "7.6.2", "7.7.1", "7.8.1", "7.9.3", "7.10.2", "7.11.1" ], "metadata": { "description": "Elastic Stack version to install" } }, "esClusterName": { "type": "string", "defaultValue": "elasticsearch", "metadata": { "description": "The name of the Elasticsearch cluster" } }, "loadBalancerType": { "type": "string", "defaultValue": "internal", "allowedValues": [ "internal", "external", "gateway" ], "metadata": { "description": "Set up an internal or external load balancer, or use Application Gateway (gateway) for load balancing and SSL offload. If you are setting up Elasticsearch on a publicly available endpoint, it is *strongly recommended* to secure your nodes with a product like the Elastic Stack's Security features" } }, "loadBalancerInternalSku": { "type": "string", "defaultValue": "Basic", "allowedValues": [ "Basic", "Standard" ], "metadata": { "description": "The internal load balancer SKU type." } }, "loadBalancerExternalSku": { "type": "string", "defaultValue": "Basic", "allowedValues": [ "Basic", "Standard" ], "metadata": { "description": "The external load balancer SKU type. Only valid when loadBalancerType is 'external'" } }, "azureCloudPlugin": { "type": "string", "allowedValues": [ "Yes", "No" ], "defaultValue": "No", "metadata": { "description": "Choose whether to install Azure Repository plugin. The plugin allows a Azure storage account to be used for snapshot and restore. If azureCloudStorageAccountName and azureCloudStorageAccountKey are not supplied, will use the shared storage account deployed." } }, "azureCloudStorageAccountName": { "type": "string", "defaultValue": "", "maxLength": 24, "metadata": { "description": "The name of an existing storage account to use for snapshots with Azure Repository plugin. Must be between 3 and 24 alphanumeric lowercase or characters or numbers." } }, "azureCloudStorageAccountResourceGroup": { "type": "string", "defaultValue": "", "maxLength": 90, "metadata": { "description": "The name of an existing resource group in which the storage account to use for snapshots with Azure Repository plugin is located. Must be 90 character or less" } }, "xpackPlugins": { "type": "string", "allowedValues": [ "Yes", "No" ], "defaultValue": "Yes", "metadata": { "description": "Install a trial license to enable access to the Elastic Stack platinum features for 30 days. For Elastisearch less than version 6.3.0, a value of 'Yes' enables these features by installing the X-Pack plugin into each deployed Elastic Stack product. For Elastisearch less than version 6.3.0, a value of 'No' does not install the X-Pack plugin and the Elastic Stack is deployed with features available under OSS. For Elasticsearch 6.3.0+, a value of 'No' deploys the Elastic Stack with the basic license level features available." } }, "esAdditionalPlugins": { "type": "string", "defaultValue": "", "metadata": { "description": "Additional Elasticsearch plugins to install. Each plugin must be separated by a semicolon. e.g. analysis-icu;ingest-geoip" } }, "esAdditionalYaml": { "type": "string", "defaultValue": "", "metadata": { "description": "Additional configuration for Elasticsearch yaml configuration file. Each line must be separated by a newline character e.g. action.auto_create_index: .security\nindices.queries.cache.size:5%" } }, "esHeapSize": { "type": "int", "defaultValue": 0, "metadata": { "description": "The size, in megabytes, of memory to allocate on each Elasticsearch node for the JVM heap. If unspecified, 50% of the available memory will be allocated to Elasticsearch heap, up to a maximum of 31744MB (~32GB)." } }, "esHttpCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PKCS#12 archive (.p12/.pfx) containing the key and certificate used to secure HTTP layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esHttpCertPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The password for the PKCS#12 archive (.p12/.pfx) containing the key and certificate used to secure HTTP layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esHttpCaCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PKCS#12 archive (.p12/.pfx) containing the CA key and certificate used to secure HTTP layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esHttpCaCertPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The password for the PKCS#12 archive (.p12/.pfx) containing the CA key and certificate used to secure HTTP layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esTransportCaCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PKCS#12 archive (.p12/.pfx) containing the CA key and certificate used to secure Transport layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esTransportCaCertPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The password for the PKCS#12 archive (.p12/.pfx) containing the CA key and certificate used to secure Transport layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "esTransportCertPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The password for the generated certificate used to secure Transport layer of Elasticsearch. Requires xpackPlugins be set to 'Yes' or esVersion to be >= 6.8.0 and < 7.0.0, or >= 7.1.0" } }, "samlMetadataUri": { "type": "string", "defaultValue": "", "metadata": { "description": "The URI from which the metadata file for the Identity Provider can be retrieved to configure SAML Single-Sign-On" } }, "samlServiceProviderUri": { "type": "string", "defaultValue": "", "metadata": { "description": "The public URI for the Service Provider to configure SAML Single-Sign-On. If samlMetadataUri is provided but a value is not provided for samlServiceProviderUri, the public domain name for the Kibana instance will be used" } }, "kibana": { "type": "string", "defaultValue": "Yes", "allowedValues": [ "Yes", "No" ], "metadata": { "description": "Provision a machine with Kibana on it" } }, "vmSizeKibana": { "type": "string", "defaultValue": "Standard_A2_v2", "allowedValues": [ "Standard_A2_v2", "Standard_A4_v2", "Standard_A8_v2", "Standard_A2m_v2", "Standard_A4m_v2", "Standard_A8m_v2", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2as_v4", "Standard_D4as_v4", "Standard_D8as_v4", "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v3", "Standard_D4_v3", "Standard_D8_v3", "Standard_D16_v3", "Standard_D32_v3", "Standard_D48_v3", "Standard_D64_v3", "Standard_DS1_v2", "Standard_DS2_v2", "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_DS11_v2", "Standard_DS12_v2", "Standard_DS13_v2", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_D2s_v3", "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", "Standard_D48s_v3", "Standard_D64s_v3", "Standard_E2_v3", "Standard_E4_v3", "Standard_E8_v3", "Standard_E16_v3", "Standard_E32_v3", "Standard_E64_v3", "Standard_E64i_v3", "Standard_E2s_v3", "Standard_E4s_v3", "Standard_E8s_v3", "Standard_E16s_v3", "Standard_E32s_v3", "Standard_E64s_v3", "Standard_E64is_v3", "Standard_E2as_v4", "Standard_E4as_v4", "Standard_E8as_v4", "Standard_E16as_v4", "Standard_E20as_v4", "Standard_E32as_v4", "Standard_F1", "Standard_F2", "Standard_F4", "Standard_F8", "Standard_F16", "Standard_F1s", "Standard_F2s", "Standard_F4s", "Standard_F8s", "Standard_F16s", "Standard_F2s_v2", "Standard_F4s_v2", "Standard_F8s_v2", "Standard_F16s_v2", "Standard_F32s_v2", "Standard_F64s_v2", "Standard_F72s_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5", "Standard_L4s", "Standard_L8s", "Standard_L16s", "Standard_L32s", "Standard_L8s_v2", "Standard_L16s_v2", "Standard_L32s_v2", "Standard_L48s_v2", "Standard_L64s_v2", "Standard_L80s_v2", "Standard_M8ms", "Standard_M16ms", "Standard_M32ts", "Standard_M32ls", "Standard_M32ms", "Standard_M64s", "Standard_M64ls", "Standard_M64ms", "Standard_M128s", "Standard_M128ms", "Standard_M64", "Standard_M64m", "Standard_M128", "Standard_M128m" ], "metadata": { "description": "Size of the Kibana node" } }, "vmKibanaAcceleratedNetworking": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Yes", "No" ], "metadata": { "description": "Whether to enable accelerated networking for Kibana, which enables single root I/O virtualization (SR-IOV) to a VM, greatly improving its networking performance. Valid only for specific VM SKUs" } }, "kibanaCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PEM certificate (.crt) to secure HTTP communication between the browser and Kibana." } }, "kibanaKeyBlob": { "type": "securestring", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PEM private key (.key) to secure HTTP communication between the browser and Kibana." } }, "kibanaKeyPassphrase": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The passphrase to decrypt the private key. Optional as the key may not be encrypted." } }, "kibanaAdditionalYaml": { "type": "string", "defaultValue": "", "metadata": { "description": "Additional configuration for Kibana yaml configuration file. Each line must be separated by a newline character e.g. server.ssl.enabled: true\nkibana.defaultAppId: \"home\"" } }, "logstash": { "type": "string", "defaultValue": "No", "allowedValues": [ "Yes", "No" ], "metadata": { "description": "Provision machines with Logstash" } }, "vmSizeLogstash": { "type": "string", "defaultValue": "Standard_DS1_v2", "allowedValues": [ "Standard_A1_v2", "Standard_A2_v2", "Standard_A4_v2", "Standard_A8_v2", "Standard_A2m_v2", "Standard_A4m_v2", "Standard_A8m_v2", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2as_v4", "Standard_D4as_v4", "Standard_D8as_v4", "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v3", "Standard_D4_v3", "Standard_D8_v3", "Standard_D16_v3", "Standard_D32_v3", "Standard_D48_v3", "Standard_D64_v3", "Standard_DS1_v2", "Standard_DS2_v2", "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_DS11_v2", "Standard_DS12_v2", "Standard_DS13_v2", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_D2s_v3", "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", "Standard_D48s_v3", "Standard_D64s_v3", "Standard_E2_v3", "Standard_E4_v3", "Standard_E8_v3", "Standard_E16_v3", "Standard_E32_v3", "Standard_E64_v3", "Standard_E64i_v3", "Standard_E2s_v3", "Standard_E4s_v3", "Standard_E8s_v3", "Standard_E16s_v3", "Standard_E32s_v3", "Standard_E64s_v3", "Standard_E64is_v3", "Standard_E2as_v4", "Standard_E4as_v4", "Standard_E8as_v4", "Standard_E16as_v4", "Standard_E20as_v4", "Standard_E32as_v4", "Standard_F1", "Standard_F2", "Standard_F4", "Standard_F8", "Standard_F16", "Standard_F1s", "Standard_F2s", "Standard_F4s", "Standard_F8s", "Standard_F16s", "Standard_F2s_v2", "Standard_F4s_v2", "Standard_F8s_v2", "Standard_F16s_v2", "Standard_F32s_v2", "Standard_F64s_v2", "Standard_F72s_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5", "Standard_L4s", "Standard_L8s", "Standard_L16s", "Standard_L32s", "Standard_L8s_v2", "Standard_L16s_v2", "Standard_L32s_v2", "Standard_L48s_v2", "Standard_L64s_v2", "Standard_L80s_v2", "Standard_M8ms", "Standard_M16ms", "Standard_M32ts", "Standard_M32ls", "Standard_M32ms", "Standard_M64s", "Standard_M64ls", "Standard_M64ms", "Standard_M128s", "Standard_M128ms", "Standard_M64", "Standard_M64m", "Standard_M128", "Standard_M128m" ], "metadata": { "description": "Size of the Logstash nodes" } }, "vmLogstashCount": { "type": "int", "defaultValue": 1, "minValue": 1, "metadata": { "description": "The number of Logstash VMs to deploy" } }, "vmLogstashAcceleratedNetworking": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Yes", "No" ], "metadata": { "description": "Whether to enable accelerated networking for Logstash, which enables single root I/O virtualization (SR-IOV) to a VM, greatly improving its networking performance. Valid only for specific VM SKUs" } }, "logstashHeapSize": { "type": "int", "defaultValue": 0, "metadata": { "description": "The size, in megabytes, of memory to allocate to Logstash for the JVM heap. If unspecified, will default to 1GB" } }, "logstashConf": { "type": "securestring", "defaultValue": "", "metadata": { "description": "base 64 encoded form of a Logstash conf file to deploy." } }, "logstashKeystorePassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "Password for the Logstash keystore." } }, "logstashAdditionalPlugins": { "type": "string", "defaultValue": "", "metadata": { "description": "Additional Logstash plugins to install. Each plugin must be separated by a semicolon. e.g. logstash-input-azure_event_hubs;logstash-input-http_poller" } }, "logstashAdditionalYaml": { "type": "string", "defaultValue": "", "metadata": { "description": "Additional configuration for Logstash yaml configuration file. Each line must be separated by a newline character e.g. pipeline.batch.size: 125\npipeline.batch.delay: 50" } }, "jumpbox": { "type": "string", "defaultValue": "No", "allowedValues": [ "Yes", "No" ], "metadata": { "description": "Optionally add a virtual machine to the deployment which can be used to connect and manage virtual machines within the cluster. Not required if installing Kibana, as Kibana can be used as a jumpbox" } }, "vmHostNamePrefix": { "type": "string", "defaultValue": "", "maxLength": 5, "metadata": { "description": "The prefix to use for resources and hostnames when naming virtual machines in the cluster. Can be up to 5 characters in length, must begin with an alphanumeric character and can contain alphanumeric and hyphen characters. Hostnames are used for resolution of master nodes so if you are deploying a cluster into an existing virtual network containing an existing Elasticsearch cluster, be sure to set this to a unique prefix to differentiate the hostnames of this cluster from an existing cluster" } }, "vmSizeDataNodes": { "type": "string", "defaultValue": "Standard_DS1_v2", "allowedValues": [ "Standard_A1_v2", "Standard_A2_v2", "Standard_A4_v2", "Standard_A8_v2", "Standard_A2m_v2", "Standard_A4m_v2", "Standard_A8m_v2", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2as_v4", "Standard_D4as_v4", "Standard_D8as_v4", "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v3", "Standard_D4_v3", "Standard_D8_v3", "Standard_D16_v3", "Standard_D32_v3", "Standard_D48_v3", "Standard_D64_v3", "Standard_DS1_v2", "Standard_DS2_v2", "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_DS11_v2", "Standard_DS12_v2", "Standard_DS13_v2", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_D2s_v3", "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", "Standard_D48s_v3", "Standard_D64s_v3", "Standard_E2_v3", "Standard_E4_v3", "Standard_E8_v3", "Standard_E16_v3", "Standard_E32_v3", "Standard_E64_v3", "Standard_E64i_v3", "Standard_E2s_v3", "Standard_E4s_v3", "Standard_E8s_v3", "Standard_E16s_v3", "Standard_E32s_v3", "Standard_E64s_v3", "Standard_E64is_v3", "Standard_E2as_v4", "Standard_E4as_v4", "Standard_E8as_v4", "Standard_E16as_v4", "Standard_E20as_v4", "Standard_E32as_v4", "Standard_F1", "Standard_F2", "Standard_F4", "Standard_F8", "Standard_F16", "Standard_F1s", "Standard_F2s", "Standard_F4s", "Standard_F8s", "Standard_F16s", "Standard_F2s_v2", "Standard_F4s_v2", "Standard_F8s_v2", "Standard_F16s_v2", "Standard_F32s_v2", "Standard_F64s_v2", "Standard_F72s_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5", "Standard_L4s", "Standard_L8s", "Standard_L16s", "Standard_L32s", "Standard_L8s_v2", "Standard_L16s_v2", "Standard_L32s_v2", "Standard_L48s_v2", "Standard_L64s_v2", "Standard_L80s_v2", "Standard_M8ms", "Standard_M16ms", "Standard_M32ts", "Standard_M32ls", "Standard_M32ms", "Standard_M64s", "Standard_M64ls", "Standard_M64ms", "Standard_M128s", "Standard_M128ms", "Standard_M64", "Standard_M64m", "Standard_M128", "Standard_M128m" ], "metadata": { "description": "Size of the Elasticsearch data nodes" } }, "vmDataNodeAcceleratedNetworking": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Yes", "No" ], "metadata": { "description": "Whether to enable accelerated networking for data nodes, which enables single root I/O virtualization (SR-IOV) to a VM, greatly improving its networking performance. Valid only for specific VM SKUs" } }, "vmDataDiskCount": { "type": "int", "defaultValue": 64, "minValue": 0, "metadata": { "description": "Number of disks to attach to each data node in RAID 0 setup. If the number of disks selected is more than can be attached to the data node VM size, the maximum number of disks that can be attached will be used. If 1 disk is selected, it is not RAIDed. If 0 disks are selected, the temporary disk will be used to store Elasticsearch data. IMPORTANT: The temporary disk is ephemeral in nature so be sure you know the trade-offs when choosing 0 disks." } }, "vmDataDiskSize": { "type": "string", "defaultValue": "1TiB", "allowedValues": [ "32GiB", "64GiB", "128GiB", "256GiB", "512GiB", "1TiB", "2TiB", "4TiB", "8TiB", "16TiB", "32TiB" ], "metadata": { "description": "The disk size of each attached managed disk, 32GiB, 64GiB, 128GiB, 256 GiB, 512GiB, 1TiB, 2TiB, 4TiB, 8TiB, 16TiB and 32TiB. Default is 1TiB. For Premium Storage, this equates to P6, P10, P15, P20, P30, P40, P50, P60, P70 and P80, respectively." } }, "vmDataNodeCount": { "type": "int", "defaultValue": 3, "minValue": 1, "metadata": { "description": "Number of Elasticsearch data nodes" } }, "storageAccountType": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Standard" ], "metadata": { "description": "The storage account type of the attached managed disks and OS disks (Default or Standard). The Default storage account type will be Premium Storage for VMs that support Premium Storage and Standard HDD Storage for those that do not." } }, "dataNodesAreMasterEligible": { "type": "string", "defaultValue": "No", "allowedValues": [ "Yes", "No" ], "metadata": { "description": "Make all data nodes master-eligible. This can be useful for small Elasticsearch cluster deployments, but for larger deployments it is recommended to use dedicated master nodes" } }, "vmSizeMasterNodes": { "type": "string", "defaultValue": "Standard_DS1_v2", "allowedValues": [ "Standard_A1_v2", "Standard_A2_v2", "Standard_A4_v2", "Standard_A8_v2", "Standard_A2m_v2", "Standard_A4m_v2", "Standard_A8m_v2", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2as_v4", "Standard_D4as_v4", "Standard_D8as_v4", "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v3", "Standard_D4_v3", "Standard_D8_v3", "Standard_D16_v3", "Standard_D32_v3", "Standard_D48_v3", "Standard_D64_v3", "Standard_DS1_v2", "Standard_DS2_v2", "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_DS11_v2", "Standard_DS12_v2", "Standard_DS13_v2", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_D2s_v3", "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", "Standard_D48s_v3", "Standard_D64s_v3", "Standard_E2_v3", "Standard_E4_v3", "Standard_E8_v3", "Standard_E16_v3", "Standard_E32_v3", "Standard_E64_v3", "Standard_E64i_v3", "Standard_E2s_v3", "Standard_E4s_v3", "Standard_E8s_v3", "Standard_E16s_v3", "Standard_E32s_v3", "Standard_E64s_v3", "Standard_E64is_v3", "Standard_E2as_v4", "Standard_E4as_v4", "Standard_E8as_v4", "Standard_E16as_v4", "Standard_E20as_v4", "Standard_E32as_v4", "Standard_F1", "Standard_F2", "Standard_F4", "Standard_F8", "Standard_F16", "Standard_F1s", "Standard_F2s", "Standard_F4s", "Standard_F8s", "Standard_F16s", "Standard_F2s_v2", "Standard_F4s_v2", "Standard_F8s_v2", "Standard_F16s_v2", "Standard_F32s_v2", "Standard_F64s_v2", "Standard_F72s_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5", "Standard_L4s", "Standard_L8s", "Standard_L16s", "Standard_L32s", "Standard_L8s_v2", "Standard_L16s_v2", "Standard_L32s_v2", "Standard_L48s_v2", "Standard_L64s_v2", "Standard_L80s_v2", "Standard_M8ms", "Standard_M16ms", "Standard_M32ts", "Standard_M32ls", "Standard_M32ms", "Standard_M64s", "Standard_M64ls", "Standard_M64ms", "Standard_M128s", "Standard_M128ms", "Standard_M64", "Standard_M64m", "Standard_M128", "Standard_M128m" ], "metadata": { "description": "Size of the Elasticsearch master nodes, if data nodes are not master eligible, 3 master nodes of this size will be provisioned" } }, "vmMasterNodeAcceleratedNetworking": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Yes", "No" ], "metadata": { "description": "Whether to enable accelerated networking for master nodes, which enables single root I/O virtualization (SR-IOV) to a VM, greatly improving its networking performance. Valid only for specific VM SKUs" } }, "vmClientNodeCount": { "type": "int", "defaultValue": 0, "minValue": 0, "metadata": { "description": "Number of Elasticsearch coordinating nodes to provision. A value of 0 puts the data nodes in the load balancer backend pool" } }, "vmSizeClientNodes": { "type": "string", "defaultValue": "Standard_DS1_v2", "allowedValues": [ "Standard_A1_v2", "Standard_A2_v2", "Standard_A4_v2", "Standard_A8_v2", "Standard_A2m_v2", "Standard_A4m_v2", "Standard_A8m_v2", "Standard_D1_v2", "Standard_D2_v2", "Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2", "Standard_D11_v2", "Standard_D12_v2", "Standard_D13_v2", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2as_v4", "Standard_D4as_v4", "Standard_D8as_v4", "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v3", "Standard_D4_v3", "Standard_D8_v3", "Standard_D16_v3", "Standard_D32_v3", "Standard_D48_v3", "Standard_D64_v3", "Standard_DS1_v2", "Standard_DS2_v2", "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_DS11_v2", "Standard_DS12_v2", "Standard_DS13_v2", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_D2s_v3", "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", "Standard_D48s_v3", "Standard_D64s_v3", "Standard_E2_v3", "Standard_E4_v3", "Standard_E8_v3", "Standard_E16_v3", "Standard_E32_v3", "Standard_E64_v3", "Standard_E64i_v3", "Standard_E2s_v3", "Standard_E4s_v3", "Standard_E8s_v3", "Standard_E16s_v3", "Standard_E32s_v3", "Standard_E64s_v3", "Standard_E64is_v3", "Standard_E2as_v4", "Standard_E4as_v4", "Standard_E8as_v4", "Standard_E16as_v4", "Standard_E20as_v4", "Standard_E32as_v4", "Standard_F1", "Standard_F2", "Standard_F4", "Standard_F8", "Standard_F16", "Standard_F1s", "Standard_F2s", "Standard_F4s", "Standard_F8s", "Standard_F16s", "Standard_F2s_v2", "Standard_F4s_v2", "Standard_F8s_v2", "Standard_F16s_v2", "Standard_F32s_v2", "Standard_F64s_v2", "Standard_F72s_v2", "Standard_G1", "Standard_G2", "Standard_G3", "Standard_G4", "Standard_G5", "Standard_GS1", "Standard_GS2", "Standard_GS3", "Standard_GS4", "Standard_GS5", "Standard_L4s", "Standard_L8s", "Standard_L16s", "Standard_L32s", "Standard_L8s_v2", "Standard_L16s_v2", "Standard_L32s_v2", "Standard_L48s_v2", "Standard_L64s_v2", "Standard_L80s_v2", "Standard_M8ms", "Standard_M16ms", "Standard_M32ts", "Standard_M32ls", "Standard_M32ms", "Standard_M64s", "Standard_M64ls", "Standard_M64ms", "Standard_M128s", "Standard_M128ms", "Standard_M64", "Standard_M64m", "Standard_M128", "Standard_M128m" ], "metadata": { "description": "Size of the Elasticsearch coordinating nodes" } }, "vmClientNodeAcceleratedNetworking": { "type": "string", "defaultValue": "Default", "allowedValues": [ "Default", "Yes", "No" ], "metadata": { "description": "Whether to enable accelerated networking for coordinating nodes, which enables single root I/O virtualization (SR-IOV) to a VM, greatly improving its networking performance. Valid only for specific VM SKUs" } }, "adminUsername": { "type": "string", "metadata": { "description": "Admin username used when provisioning virtual machines" } }, "authenticationType": { "type": "string", "defaultValue": "password", "allowedValues": [ "password", "sshPublicKey" ], "metadata": { "description": "Choose a password or ssh public key for the Admin username used to access virtual machines" } }, "adminPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "Admin password" } }, "sshPublicKey": { "type": "securestring", "defaultValue": "", "metadata": { "description": "Admin ssh public key" } }, "securityBootstrapPassword": { "type": "securestring", "metadata": { "description": "Password for the bootstrap.password to add to the keystore in 6.x. If no value is supplied, a 13 character password will be generated using the uniqueString() function" } }, "securityAdminPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'elastic' user. Should be 12 characters or more, with a minimum of 6 characters" } }, "securityKibanaPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'kibana' user. Should be 12 characters or more, with a minimum of 6 characters" } }, "securityLogstashPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'logstash_system' user. Should be 12 characters or more, with a minimum of 6 characters" } }, "securityBeatsPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'beats_system' user. Should be 12 characters or more, with a minimum of 6 characters. Required for Elasticsearch 6.3.0+ when xpackPlugins is 'Yes'" } }, "securityApmPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'apm_system' user. Should be 12 characters or more, with a minimum of 6 characters. Required for Elasticsearch 6.5.0+ when xpackPlugins is 'Yes'" } }, "securityRemoteMonitoringPassword": { "type": "securestring", "metadata": { "description": "Password for the built-in 'remote_monitoring_user' user. Should be 12 characters or more, with a minimum of 6 characters. Required for Elasticsearch 6.5.0+ when xpackPlugins is 'Yes'" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location where resources will be provisioned. By default, the template deploys the resources to the same location as the resource group. If specified, must be a valid Azure location e.g. 'australiasoutheast'" } }, "vNetNewOrExisting": { "type": "string", "defaultValue": "new", "allowedValues": [ "new", "existing" ], "metadata": { "description": "Choose to create a new Virtual Network or use an existing one. If choosing an existing network, the subnet also needs to exist." } }, "vNetName": { "type": "string", "defaultValue": "es-net", "metadata": { "description": "Virtual Network Name" } }, "vNetExistingResourceGroup": { "type": "string", "defaultValue": "", "metadata": { "description": "The name of the resource group for the existing Virtual Network. Required when using an existing Virtual Network" } }, "vNetNewAddressPrefix": { "type": "string", "defaultValue": "10.0.0.0/24", "metadata": { "description": "The address prefix size to use for a New Virtual Network. Required when creating a new Virtual Network" } }, "vNetLoadBalancerIp": { "type": "string", "defaultValue": "10.0.0.4", "metadata": { "description": "The static IP address for the internal load balancer. This must be an available IP address in the specified subnet" } }, "vNetClusterSubnetName": { "type": "string", "defaultValue": "es-subnet", "metadata": { "description": "Subnet name to use for Elasticsearch nodes" } }, "vNetNewClusterSubnetAddressPrefix": { "type": "string", "defaultValue": "10.0.0.0/25", "metadata": { "description": "The address space of the subnet. Required when creating a new Virtual Network" } }, "vNetAppGatewaySubnetName": { "type": "string", "defaultValue": "es-gateway-subnet", "metadata": { "description": "Subnet name to use for the Application Gateway. Required when selecting Application Gateway for load balancing" } }, "vNetNewAppGatewaySubnetAddressPrefix": { "type": "string", "defaultValue": "10.0.0.128/28", "metadata": { "description": "The address space of the Application Gateway subnet. Required when creating a new Virtual Network and selecting Application Gateway for load balancing" } }, "appGatewayTier": { "type": "string", "defaultValue": "Standard", "allowedValues": [ "Standard", "WAF" ], "metadata": { "description": "The tier of the Application Gateway. Required when selecting Application Gateway for load balancing" } }, "appGatewaySku": { "type": "string", "defaultValue": "Medium", "allowedValues": [ "Small", "Medium", "Large" ], "metadata": { "description": "The size of the Application Gateway. Medium or above is recommended for Production clusters, and required when using WAF tier" } }, "appGatewayCount": { "type": "int", "defaultValue": 2, "minValue": 1, "maxValue": 10, "metadata": { "description": "The number of instances of the Application Gateway. A minimum of 2 is recommended for Production clusters. Required when selecting Application Gateway for load balancing" } }, "appGatewayCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "A Base-64 encoded form of the PKCS#12 archive (.p12/.pfx) containing the key and certificate for the Application Gateway. This certificate is used to secure HTTPS connections to the Application Gateway" } }, "appGatewayCertPassword": { "type": "securestring", "defaultValue": "", "metadata": { "description": "The password for the PKCS#12 archive (.p12/.pfx) containing the key and certificate for the Application Gateway." } }, "appGatewayWafStatus": { "type": "string", "defaultValue": "Enabled", "allowedValues": [ "Enabled", "Disabled" ], "metadata": { "description": "The firewall status of the Application Gateway. Required when selecting Application Gateway for load balancing and using WAF tier." } }, "appGatewayWafMode": { "type": "string", "defaultValue": "Detection", "allowedValues": [ "Detection", "Prevention" ], "metadata": { "description": "The firewall mode of the Application Gateway. Required when selecting Application Gateway for load balancing and using WAF tier." } }, "appGatewayEsHttpCertBlob": { "type": "string", "defaultValue": "", "metadata": { "description": "The Base-64 encoded certificate (.cer) used to secure the HTTP layer of Elasticsearch. Used by the Application Gateway to whitelist certificates used by the backend pool. Must be set if using esHttpCertBlob to secure the HTTP layer of Elasticsearch" } } }, "variables": { "esVersionMajor": "[int(split(parameters('esVersion'), '.')[0])]", "esVersionMinor": "[int(split(parameters('esVersion'), '.')[1])]", "sharedTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('partials/shared-resources.json', parameters('_artifactsLocationSasToken')))]", "networkTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('networks/virtual-network-resources.json', parameters('_artifactsLocationSasToken')))]", "loadBalancerOptions": { "internal": "internal-lb-resources", "external": "external-lb-resources", "gateway": "[concat(toLower(parameters('appGatewayTier')),'-application-gateway-resources')]" }, "loadBalancerTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('loadbalancers/', variables('loadBalancerOptions')[parameters('loadBalancerType')],'.json', parameters('_artifactsLocationSasToken')))]", "osSettingsTemplateUrl": "[uri(parameters('_artifactsLocation'), concat('settings/ubuntuSettings.json', parameters('_artifactsLocationSasToken')))]", "location": "[parameters('location')]", "azureCloudStorageAccount": { "name": "[parameters('azureCloudStorageAccountName')]", "resourceGroup": "[parameters('azureCloudStorageAccountResourceGroup')]", "install": "[parameters('azureCloudPlugin')]" }, "esSettings": { "clusterName": "[parameters('esClusterName')]", "version": "[parameters('esVersion')]", "installPlugins": "[parameters('xpackPlugins')]", "installAdditionalPlugins": "[parameters('esAdditionalPlugins')]", "yamlConfiguration": "[parameters('esAdditionalYaml')]", "heapSize": "[parameters('esHeapSize')]", "httpCertBlob": "[parameters('esHttpCertBlob')]", "httpCertPassword": "[parameters('esHttpCertPassword')]", "httpCaCertBlob": "[parameters('esHttpCaCertBlob')]", "httpCaCertPassword": "[parameters('esHttpCaCertPassword')]", "transportCaCertBlob": "[parameters('esTransportCaCertBlob')]", "transportCaCertPassword": "[parameters('esTransportCaCertPassword')]", "transportCertPassword": "[parameters('esTransportCertPassword')]", "securityAdminPwd": "[parameters('securityAdminPassword')]", "securityKibanaPwd": "[parameters('securityKibanaPassword')]", "securityLogstashPwd": "[parameters('securityLogstashPassword')]", "securityBeatsPwd": "[parameters('securityBeatsPassword')]", "securityApmPwd": "[parameters('securityApmPassword')]", "securityRemoteMonitoringPwd": "[parameters('securityRemoteMonitoringPassword')]", "securityBootstrapPwd": "[if(not(empty(parameters('securityBootstrapPassword'))),parameters('securityBootstrapPassword'),uniqueString(resourceGroup().id, deployment().name, parameters('securityAdminPassword')))]", "samlMetadataUri": "[parameters('samlMetadataUri')]", "samlServiceProviderUri": "[parameters('samlServiceProviderUri')]" }, "networkResourceGroupMap": { "new": "[resourceGroup().name]", "existing": "[parameters('vNetExistingResourceGroup')]" }, "dataSkuSettings": { "Standard_A1_v2": { "dataDisks": 2, "storageAccountType": "Standard_LRS" }, "Standard_A2_v2": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_A4_v2": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_A8_v2": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_A2m_v2": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_A4m_v2": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_A8m_v2": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_D1_v2": { "dataDisks": 2, "storageAccountType": "Standard_LRS" }, "Standard_D2_v2": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_D3_v2": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_D4_v2": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_D5_v2": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_D11_v2": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_D12_v2": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_D13_v2": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_D14_v2": { "dataDisks": 64, "storageAccountType": "Standard_LRS" }, "Standard_D15_v2": { "dataDisks": 64, "storageAccountType": "Standard_LRS" }, "Standard_D2as_v4": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_D4as_v4": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_D8as_v4": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_D16as_v4": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_D32as_v4": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_D2_v3": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_D4_v3": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_D8_v3": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_D16_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_D32_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_D48_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_D64_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_DS1_v2": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_DS2_v2": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_DS3_v2": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_DS4_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_DS5_v2": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_DS11_v2": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_DS12_v2": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_DS13_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_DS14_v2": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_DS15_v2": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_D2s_v3": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_D4s_v3": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_D8s_v3": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_D16s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_D32s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_D48s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_D64s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E2_v3": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_E4_v3": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_E8_v3": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_E16_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_E32_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_E64_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_E64i_v3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_E2s_v3": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_E4s_v3": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_E8s_v3": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_E16s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E32s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E64s_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E64is_v3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E2as_v4": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_E4as_v4": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_E8as_v4": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_E16as_v4": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E20as_v4": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_E32as_v4": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_F1": { "dataDisks": 2, "storageAccountType": "Standard_LRS" }, "Standard_F2": { "dataDisks": 4, "storageAccountType": "Standard_LRS" }, "Standard_F4": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_F8": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_F16": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_F1s": { "dataDisks": 2, "storageAccountType": "Premium_LRS" }, "Standard_F2s": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_F4s": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_F8s": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_F16s": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_F2s_v2": { "dataDisks": 4, "storageAccountType": "Premium_LRS" }, "Standard_F4s_v2": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_F8s_v2": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_F16s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_F32s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_F64s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_F72s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_G1": { "dataDisks": 8, "storageAccountType": "Standard_LRS" }, "Standard_G2": { "dataDisks": 16, "storageAccountType": "Standard_LRS" }, "Standard_G3": { "dataDisks": 32, "storageAccountType": "Standard_LRS" }, "Standard_G4": { "dataDisks": 64, "storageAccountType": "Standard_LRS" }, "Standard_G5": { "dataDisks": 64, "storageAccountType": "Standard_LRS" }, "Standard_GS1": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_GS2": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_GS3": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_GS4": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_GS5": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_L4s": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_L8s": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_L16s": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_L32s": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_L8s_v2": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_L16s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_L32s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_L48s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_L64s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_L80s_v2": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_M8ms": { "dataDisks": 8, "storageAccountType": "Premium_LRS" }, "Standard_M16ms": { "dataDisks": 16, "storageAccountType": "Premium_LRS" }, "Standard_M32ts": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_M32ls": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_M32ms": { "dataDisks": 32, "storageAccountType": "Premium_LRS" }, "Standard_M64s": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M64ls": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M64ms": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M128s": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M128ms": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M64": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M64m": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M128": { "dataDisks": 64, "storageAccountType": "Premium_LRS" }, "Standard_M128m": { "dataDisks": 64, "storageAccountType": "Premium_LRS" } }, "dataDiskSizes": { "32GiB": 32, "64GiB": 64, "128GiB": 128, "256GiB": 256, "512GiB": 512, "1TiB": 1024, "2TiB": 2048, "4TiB": 4096, "8TiB": 8192, "16TiB": 16384, "32TiB": 32767 }, "backendPoolConfigurations": { "internal": [ { "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(parameters('vmHostNamePrefix'), 'internal-lb'), 'LBBE')]" } ], "external": [ { "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(parameters('vmHostNamePrefix'), 'internal-lb'), 'LBBE')]" }, { "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(parameters('vmHostNamePrefix'), 'external-lb'), 'LBBE')]" } ], "gateway": [ { "id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', concat(parameters('vmHostNamePrefix'), 'internal-lb'), 'LBBE')]" } ] }, "lbBackEndPoolsAdded": { "backendPools": "[variables('backendPoolConfigurations')[parameters('loadBalancerType')]]" }, "lbBackendPoolsRemoved": { "backendPools": [] }, "dataLoadBalancerOptions": [ "[variables('lbBackEndPoolsAdded')]", "[variables('lbBackEndPoolsRemoved')]" ], "clientResourceIndex": "[mod(add(parameters('vmClientNodeCount'),2),add(parameters('vmClientNodeCount'),1))]", "storageAccountOverrides": { "Default": "[variables('dataSkuSettings')[parameters('vmSizeDataNodes')].storageAccountType]", "Standard": "Standard_LRS" }, "resolvedStorageAccountType": "[variables('storageAccountOverrides')[parameters('storageAccountType')]]", "tmpVmSizeDataDisks": "[variables('dataSkuSettings')[parameters('vmSizeDataNodes')].dataDisks]", "dataDiskOptions": [ "[parameters('vmDataDiskCount')]", "[variables('tmpVmSizeDataDisks')]" ], "resolvedDataDiskCount": "[min(variables('dataDiskOptions'))]", "kibanaHttps": "[if(and(greater(length(parameters('kibanaKeyBlob')), 0), greater(length(parameters('kibanaCertBlob')), 0)), 'Yes', 'No')]", "newSubNetStartAddress": "[if(equals('new', parameters('vNetNewOrExisting')), first(split(parameters('vNetNewClusterSubnetAddressPrefix'), '/')), '')]", "newSubNetStartAddressLastOctet": "[if(equals('new', parameters('vNetNewOrExisting')), int(last(split(variables('newSubNetStartAddress'), '.'))), 0)]", "newSubNetStartAddressFirstOctets": "[if(equals('new', parameters('vNetNewOrExisting')), substring(variables('newSubNetStartAddress'), 0, lastIndexOf(variables('newSubNetStartAddress'), '.')), '')]", "newSubNetReservedStartAddresses": [ "[variables('newSubNetStartAddress')]", "[concat(variables('newSubNetStartAddressFirstOctets'), '.', string(add(variables('newSubNetStartAddressLastOctet'), 1)))]", "[concat(variables('newSubNetStartAddressFirstOctets'), '.', string(add(variables('newSubNetStartAddressLastOctet'), 2)))]", "[concat(variables('newSubNetStartAddressFirstOctets'), '.', string(add(variables('newSubNetStartAddressLastOctet'), 3)))]" ], "newSubNetFirstAvailableAddress": "[concat(variables('newSubNetStartAddressFirstOctets'), '.', string(add(variables('newSubNetStartAddressLastOctet'), 4)))]", "vNetLoadBalancerIp": "[if(equals('existing', parameters('vNetNewOrExisting')), parameters('vNetLoadBalancerIp'), if(contains(variables('newSubNetReservedStartAddresses'), parameters('vNetLoadBalancerIp')), variables('newSubNetFirstAvailableAddress'), parameters('vNetLoadBalancerIp')))]", "topologySettings": { "dataNodesAreMasterEligible": "[parameters('dataNodesAreMasterEligible')]", "vmDataNodeCount": "[parameters('vmDataNodeCount')]", "vmSizeDataNodes": "[parameters('vmSizeDataNodes')]", "vmDataNodeStorageAccountType": "[variables('dataSkuSettings')[parameters('vmSizeDataNodes')].storageAccountType]", "vmDataNodeAcceleratedNetworking": "[parameters('vmDataNodeAcceleratedNetworking')]", "vmHostNamePrefix": "[parameters('vmHostNamePrefix')]", "vmClientNodeCount": "[parameters('vmClientNodeCount')]", "vmSizeClientNodes": "[parameters('vmSizeClientNodes')]", "vmClientNodeAcceleratedNetworking": "[parameters('vmClientNodeAcceleratedNetworking')]", "vNetLoadBalancerIp": "[variables('vNetLoadBalancerIp')]", "vmSizeMasterNodes": "[parameters('vmSizeMasterNodes')]", "vmMasterNodeAcceleratedNetworking": "[parameters('vmMasterNodeAcceleratedNetworking')]", "vmSizeKibana": "[parameters('vmSizeKibana')]", "vmKibanaAcceleratedNetworking": "[parameters('vmKibanaAcceleratedNetworking')]", "kibana": "[parameters('kibana')]", "kibanaKeyBlob": "[parameters('kibanaKeyBlob')]", "kibanaKeyPassphrase": "[parameters('kibanaKeyPassphrase')]", "kibanaCertBlob": "[parameters('kibanaCertBlob')]", "kibanaHttps": "[variables('kibanaHttps')]", "kibanaYaml": "[parameters('kibanaAdditionalYaml')]", "vmSizeLogstash": "[parameters('vmSizeLogstash')]", "vmLogstashCount": "[parameters('vmLogstashCount')]", "vmLogstashAcceleratedNetworking": "[parameters('vmLogstashAcceleratedNetworking')]", "logstash": "[parameters('logstash')]", "logstashHeapSize": "[parameters('logstashHeapSize')]", "logstashConf": "[parameters('logstashConf')]", "logstashPlugins": "[parameters('logstashAdditionalPlugins')]", "logstashYaml": "[parameters('logstashAdditionalYaml')]", "logstashKeystorePwd": "[if(not(empty(parameters('logstashKeystorePassword'))),parameters('logstashKeystorePassword'),uniqueString(resourceGroup().id, deployment().name, parameters('securityLogstashPassword')))]", "jumpbox": "[parameters('jumpbox')]", "dataNodeStorageSettings": { "accountType": "[variables('resolvedStorageAccountType')]", "diskSize": "[variables('dataDiskSizes')[parameters('vmDataDiskSize')]]", "dataDisks": "[variables('resolvedDataDiskCount')]" }, "dataLoadBalancerBackEndPools": "[variables('dataLoadBalancerOptions')[variables('clientResourceIndex')].backendPools]", "loadBalancerBackEndPools": "[variables('lbBackEndPoolsAdded').backendPools]" }, "networkSettings": { "name": "[parameters('vNetName')]", "namespacePrefix": "[parameters('vmHostNamePrefix')]", "resourceGroup": "[variables('networkResourceGroupMap')[parameters('vNetNewOrExisting')]]", "location": "[variables('location')]", "addressPrefix": "[parameters('vNetNewAddressPrefix')]", "https": "[if(and(or(greater(length(parameters('esHttpCertBlob')), 0), greater(length(parameters('esHttpCaCertBlob')), 0)), or(equals(parameters('xpackPlugins'), 'Yes'), and(greaterOrEquals(variables('esVersionMajor'), 7), greaterOrEquals(variables('esVersionMinor'), 1)), and(equals(variables('esVersionMajor'), 6), greaterOrEquals(variables('esVersionMinor'), 8)))), 'Yes', 'No')]", "subnet": { "name": "[parameters('vNetClusterSubnetName')]", "addressPrefix": "[parameters('vNetNewClusterSubnetAddressPrefix')]", "loadbalancerIp": "[variables('vNetLoadBalancerIp')]" }, "applicationGatewaySubnet": { "name": "[parameters('vNetAppGatewaySubnetName')]", "addressPrefix": "[parameters('vNetNewAppGatewaySubnetAddressPrefix')]" }, "internalSku": "[parameters('loadBalancerInternalSku')]", "externalSku": "[parameters('loadBalancerExternalSku')]" }, "commonVmSettings": { "namespacePrefix": "[parameters('vmHostNamePrefix')]", "storageAccountName": "[concat('elastic', uniqueString(resourceGroup().id, deployment().name))]", "location": "[variables('location')]", "subnet": "[variables('networkSettings').subnet]", "subnetId": "[resourceId(variables('networkSettings').resourceGroup, 'Microsoft.Network/virtualNetworks/subnets', variables('networkSettings').name, variables('networkSettings').subnet.name)]", "credentials": { "adminUsername": "[parameters('adminUsername')]", "password": "[parameters('adminPassword')]", "authenticationType": "[parameters('authenticationType')]", "sshPublicKey": "[parameters('sshPublicKey')]" } }, "applicationGatewaySettings": { "skuName": "[concat(parameters('appGatewayTier'), '_', parameters('appGatewaySku'))]", "tier": "[parameters('appGatewayTier')]", "instanceCount": "[parameters('appGatewayCount')]", "certBlob": "[parameters('appGatewayCertBlob')]", "certPassword": "[parameters('appGatewayCertPassword')]", "firewallStatus": "[parameters('appGatewayWafStatus')]", "firewallMode": "[parameters('appGatewayWafMode')]", "backendCert": "[parameters('appGatewayEsHttpCertBlob')]", "backendProtocol": "[if(or(greater(length(parameters('esHttpCertBlob')), 0), greater(length(parameters('esHttpCaCertBlob')), 0)), 'Https', 'Http')]" }, "kibanaIpTemplates": { "No": "empty/empty-kibana-ip-resources.json", "Yes": "ips/kibana-ip-resources.json" }, "kibanaIpTemplateUrl": "[uri(parameters('_artifactsLocation'), concat(variables('kibanaIpTemplates')[variables('topologySettings').kibana], parameters('_artifactsLocationSasToken')))]" }, "resources": [ { "name": "[parameters('elasticTags').tracking]", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [] } } }, { "name": "shared", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('sharedTemplateUrl')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[variables('location')]" }, "storageAccountName": { "value": "[variables('commonVmSettings').storageAccountName]" }, "azureCloudStorageAccount": { "value": "[variables('azureCloudStorageAccount')]" }, "elasticTags": { "value": "[parameters('elasticTags')]" } } } }, { "condition": "[equals(parameters('vNetNewOrExisting'), 'new')]", "name": "network", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('networkTemplateUrl')]", "contentVersion": "1.0.0.0" }, "parameters": { "networkSettings": { "value": "[variables('networkSettings')]" }, "loadBalancerType": { "value": "[parameters('loadBalancerType')]" }, "elasticTags": { "value": "[parameters('elasticTags')]" } } } }, { "name": "kibana-ip", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('kibanaIpTemplateUrl')]", "contentVersion": "1.0.0.0" }, "parameters": { "location": { "value": "[variables('commonVmSettings').location]" }, "namespace": { "value": "[concat(variables('commonVmSettings').namespacePrefix, 'kibana')]" }, "https": { "value": "[variables('topologySettings').kibanaHttps]" }, "elasticTags": { "value": "[parameters('elasticTags')]" } } } }, { "name": "loadbalancer", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments', 'shared')]", "[resourceId('Microsoft.Resources/deployments', 'network')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('loadBalancerTemplateUrl')]", "contentVersion": "1.0.0.0" }, "parameters": { "networkSettings": { "value": "[variables('networkSettings')]" }, "applicationGatewaySettings": { "value": "[variables('applicationGatewaySettings')]" }, "elasticTags": { "value": "[parameters('elasticTags')]" } } } }, { "name": "virtual-machines", "type": "Microsoft.Resources/deployments", "apiVersion": "2019-05-01", "dependsOn": [ "[resourceId('Microsoft.Resources/deployments', 'loadbalancer')]", "[resourceId('Microsoft.Resources/deployments', 'kibana-ip')]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[variables('osSettingsTemplateUrl')]", "contentVersion": "1.0.0.0" }, "parameters": { "_artifactsLocation": { "value": "[parameters('_artifactsLocation')]" }, "_artifactsLocationSasToken": { "value": "[parameters('_artifactsLocationSasToken')]" }, "esSettings": { "value": "[variables('esSettings')]" }, "commonVmSettings": { "value": "[variables('commonVmSettings')]" }, "topologySettings": { "value": "[variables('topologySettings')]" }, "networkSettings": { "value": "[variables('networkSettings')]" }, "azureCloudStorageAccount": { "value": { "name": "[variables('azureCloudStorageAccount').name]", "resourceGroup": "[variables('azureCloudStorageAccount').resourceGroup]", "install": "[variables('azureCloudStorageAccount').install]", "key": "[reference('shared').outputs.existingStorageAccountKey.value]", "suffix": "[reference('shared').outputs.existingStorageAccountSuffix.value]" } }, "kibanaIp": { "value": "[reference('kibana-ip').outputs.fqdn.value]" }, "sharedStorageAccount": { "value": { "name": "[variables('commonVmSettings').storageAccountName]", "key": "[reference('shared').outputs.sharedStorageAccountKey.value]", "suffix": "[reference('shared').outputs.sharedStorageAccountSuffix.value]" } }, "elasticTags": { "value": "[parameters('elasticTags')]" } } } } ], "outputs": { "loadbalancer": { "value": "[reference('loadbalancer').outputs.fqdn.value]", "type": "string" }, "kibana": { "value": "[reference('kibana-ip').outputs.fqdn.value]", "type": "string" }, "jumpboxssh": { "value": "[reference('virtual-machines').outputs.jumpboxssh.value]", "type": "string" } } }