elasticsearch

Ansible-Test

Ansible Role for Elasticsearch

This is an Ansible role for Elasticsearch.

Note: Only supports Elasticsearch 2.0 and newer.

Features

  • Support for installing plugins
  • Support for installing and configuring EC2/S3 plugin
  • Support for installing custom JARs in the Elasticsearch classpath (e.g. custom Lucene Similarity JAR)

Enabling Added Features

Configuring AWS EC2 / S3 plugin

The following variables need to be defined in your playbook or inventory:

  • elasticsearch_aws_discovery: true For just installing the s3 plugin in ES >= 5.x, for snapshot repo use:
  • elasticsearch_aws_s3: true

The following variables provide a for now limited configuration for the plugin. More options may be available in the future

  • elasticsearch_plugin_aws_ec2_groups
  • elasticsearch_plugin_aws_ec2_ping_timeout
  • elasticsearch_plugin_aws_access_key
  • elasticsearch_plugin_aws_secret_key
  • elasticsearch_plugin_aws_region

Installing plugins

You will need to define an array called elasticsearch_plugins in your playbook or inventory, such that:

elasticsearch_plugins:
 - { name: '<plugin name>', url: '<[optional] plugin url>' }
 - ...

where if you were to install the plugin via bin/plugin, you would type: bin/plugin -install <plugin name> or bin/plugin -install <plugin name> -url <plugin url>

Example for https://github.com/elasticsearch/elasticsearch-mapper-attachments (bin/plugin install elasticsearch/elasticsearch-mapper-attachments/1.9.0):

elasticsearch_plugins:
 - { name: 'elasticsearch/elasticsearch-mapper-attachments/1.9.0' }

Example for https://github.com/imotov/elasticsearch-facet-script (bin/plugin install http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip):

elasticsearch_plugins:
 - { name: 'facet-script', url: 'http://dl.bintray.com/content/imotov/elasticsearch-plugins/elasticsearch-facet-script-1.1.2.zip' }

Installing Custom JARs

Custom jars are made available to the Elasticsearch classpath by being downloaded into the elasticsearch_home_dir/lib folder. An example of a custom jar can include a custom Lucene Similarity Provider. You will need to define an array called elasticsearch_custom_jars in your playbook or inventory, such that:

elasticsearch_custom_jars:
 - { uri: '<URL where JAR can be downloaded from: required>', filename: '<alternative name for final JAR if different from file downladed: leave blank to use same filename>', user: '<BASIC auth username: leave blank of not needed>', passwd: '<BASIC auth password: leave blank of not needed>' }
 - ...

Configuring Thread Pools

Elasticsearch thread pools can be configured using the elasticsearch_thread_pools list variable:

elasticsearch_thread_pools:
  - "threadpool.bulk.type: fixed"
  - "threadpool.bulk.size: 50"
  - "threadpool.bulk.queue_size: 1000"

Disable Java installation

If you prefer to skip the built-in installation of the Oracle JRE, use the elasticsearch_install_java flag:

elasticsearch_install_java: false

Include role in a playbook / your project

Install with ansible-galaxy

Just install with ansible-galaxy mediafellows.elasticsearch

Add this role as a git submodule

Checkout this project as a submodule under roles/:

$ git submodule add [email protected]:mediafellows/ansible-role-elasticsearch.git roles/mediafellows.elasticsearch

Include this role in your playbook

Example playbook, with minimal set of variables defined:

---
- name: My Playbook for Elasticsearch hosts
  hosts: all_es_nodes
  become: true
  vars:
    elasticsearch_version: 2.4
    elasticsearch_heap_size: 2g
  elasticsearch_cluster_name: my-personal-es-cluster
  roles:
    - mediafellows.elasticsearch
  tasks:
   # Your tasks

Dependencies

No other Ansible roles.

License

MIT

Author Information

Stefan Horning stefan.horning@mediafellows.com

Based on the works of George Stathis - gstathis [at] traackr.com

About

Role to install and setup ElasticSearch server

Install
ansible-galaxy install mediafellows/ansible-role-elasticsearch
GitHub repository
License
Unknown
Downloads
58
Owner
MediaStore - a studio-grade cloud solutions to streamline content sales and distribution - allows you to manage, market, license and deliver your content