Install Elasticsearch cluster on Virtual Machines

Last updated: 09/06/2016

This template deploys an Elasticsearch cluster on Virtual Machines using linked templates. The template provisions 3 dedicated master nodes, with an optional number of client and data nodes, which are placed in separate availability sets and storage accounts. The template also provides the option of deploying a standalone Marvel cluster.

This Azure Resource Manager (ARM) template was created by a member of the community and not by Microsoft. Each ARM template is licensed to you under a licence agreement by its owner, not Microsoft. Microsoft is not responsible for ARM templates provided and licensed by community members and does not screen for security, compatibility or performance. Community ARM templates are not supported under any Microsoft support programme or service, and are made available AS IS without warranty of any kind.


Parameter Name Description
adminUsername Admin username used when provisioning virtual machines
adminPassword Admin password used when provisioning virtual machines
virtualNetworkName Virtual Network
OS The operating system to deploy Elasticsearch cluster on
authenticationType Whether to use a password or ssh key (Linux only) as authentication
sshPublicKey The public ssh key to use for authentication (Linux only)
loadBalancerType Setup the load balancer internal or external. If you are setting up Elasticsearch on an external endpoint you will need to secure your nodes with a product like Elasticsearch Shield
jumpbox Optionally add a virtual machine to the deployment which you can use to connect and manage virtual machines on the internal network
vmClientNodeCount Number of Elasticsearch client nodes to provision (Setting this to zero puts the data nodes on the load balancer)
vmSizeClientNodes Size of the Elasticsearch cluster client nodes
vmSizeMasterNodes Size of the Elasticsearch master nodes
vmSizeDataNodes Size of the Elasticsearch data nodes
vmDataNodeCount Number of Elasticsearch data nodes
esClusterName The name of the Elasticsearch cluster
esVersion Elasticsearch version to install
afs Setup an Azure File Service share to store the Elasticsearch data (ubuntu, elasticsearch 2.x only)
marvel Install the Marvel agent in the cluster
marvelCluster Build a standalone 3 node cluster for Marvel data
vmSizeMarvelNodes Size of the Elasticsearch Marvel cluster nodes, if selected
kibana Provision a machine with Kibana on it
sense Install the Sense plugin (2.x only, requires Kibana)
jmeterAgent Install the JMeter Server Agent on each node (Ubuntu only)
cloudAzure Install the cloud-azure plugin, which enables Azure backups
cloudAzureStorageAccount The name of the storage account to use for the cloud-azure plugin
cloudAzureStorageKey The storage account key used to access the storage account listed above
_artifactsLocation Change this value to your repo name if deploying from a fork
_artifactsLocationSasToken Auto-generated token to access _artifactsLocation

Use the template

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateUri
Installing and configuring Azure PowerShell
Command line
azure config mode arm
azure group deployment create <my-resource-group> <my-deployment-name> --template-uri
Installing and configuring the Azure cross-platform command-line interface