|
|
||
|---|---|---|
| defaults | ||
| meta | ||
| tasks | ||
| templates | ||
| test/integration | ||
| vars | ||
| .gitignore | ||
| .kitchen.yml | ||
| ansible.cfg | ||
| Gemfile | ||
| README.md | ||
ansible-elasticsearch
Ansible playbook / roles / tasks for Elasticsearch. Currently it will work on Debian and RedHat based linux systems.
Usage
Create your ansible playbook with your own tasks, and include the role elasticsearch. You will have to have this repository accessible within the context of playbook, e.g.
e.g.
cd /my/repos/
git clone git@github.com:elastic/ansible-elasticsearch.git
cd /my/ansible/playbook
mkdir -p roles
ln -s /my/repos/ansible-elasticsearch ./roles/elasticsearch
Then create your playbook yaml adding the role elasticsearch and overriding any variables you wish. It can be as simple as this to take all the defaults:
---
hosts: my_host
roles:
- elasticsearch
tasks:
- .... your tasks ...
or more complex..
---
hosts: my_host
roles:
- elasticsearch
vars:
java_debian:
- "openjdk-7-jre-headless"
es_major_version: 1.7
es_version: 1.7.0
es_start_service: false
es_plugins_reinstall: false
es_plugins:
- plugin: elasticsearch/elasticsearch-cloud-aws
version: 2.5.0
- plugin: elasticsearch/marvel
version: latest
- plugin: elasticsearch/license
version: latest
- plugin: elasticsearch/shield
version: latest
- plugin: elasticsearch/elasticsearch-support-diagnostics
version: latest
- plugin: lmenezes/elasticsearch-kopf
version: master
tasks:
- .... your tasks ...
Make sure your hosts are defined in your hosts file with the appropriate ansible_ssh_host, ansible_ssh_user and ansible_ssh_private_key_file values.
Then run it:
ansible-playbook -i hosts ./your-playbook.yml
Configuration
You can add the role without any customisation and it will by default install Java and Elasticsearch, without any plugins.
Description of the variables available.
es_major_version (e.g. 1.7 )
Which major version to use. This is also used to define which the repository is used.
es_version (e.g. 1.7.0)
Which minor version to use.
es_start_service (true (default) or false)
Should elasticsearch be started after installation?
es_use_repository (true (default) or false )
Should elasticsearch be installed from a repository or from a url download. If false package will be downloaded from https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch.... You can also specify es_custom_package_url with a url to a custom package.
es_version_lock (true or false (default))
This will lock the elasticsearch version using yum versionlock. Only available on RHEL/CentOS. For Debian/Ubuntu see apt pinning below.
es_scripts (true or false (default))
If true you need to supply a files/scripts/ folder with your scripts, inside the role directory. The folder and all files will be copied to /etc/elasticsearch/scripts. You can also provide a scripts/ folder at toplevel of your playbook.
es_plugins_reinstall (true or false (default) )
Schould plugins be reinstalled?
es_plugins (an array of plugin definitons e.g.:)
es_plugins:
- plugin: elasticsearch-cloud-aws
version: 2.5.0
java_debian
name of the java debian package to use (e.g. openjdk-7-jre-headless)
java_rhel
name of the java rhel package to use (e.g. java-1.8.0-openjdk.x86_64)
apt pinning
apt pinning is possible using an external role like https://github.com/debops/ansible-apt_preferences.
To use this, add it as another role e.g.
cd /my/repos/
git clone git@github.com:debops/ansible-apt_preferences.git
cd /my/ansible/playbook
mkdir -p roles
ln -s /my/repos/ansible-apt_preferences ./roles/apt_preferences
then add something like this to your playook:
roles:
- apt_preferences
- elasticsearch
vars:
...
apt_preferences_list:
- package: elasticsearch
version: 1.7.0
...