forked from elastic/ansible-elasticsearch
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support for configuration per node and multiple nodes per server
- Loading branch information
Dale McDiarmid
committed
Oct 22, 2015
1 parent
0c6f326
commit d19297a
Showing
30 changed files
with
815 additions
and
85 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,3 +4,4 @@ | |
.vendor | ||
.bundle | ||
Converging | ||
TODO |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<module type="RUBY_MODULE" version="4"> | ||
<component name="NewModuleRootManager" inherit-compiler-output="true"> | ||
<exclude-output /> | ||
<content url="file://$MODULE_DIR$" /> | ||
<orderEntry type="inheritedJdk" /> | ||
<orderEntry type="sourceFolder" forTests="false" /> | ||
</component> | ||
</module> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
--- | ||
dependencies: [] | ||
|
||
allow_duplicates: yes | ||
|
||
galaxy_info: | ||
author: Robin Clarke | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Check for mandatory parameters | ||
|
||
- fail: msg="Parameter 'es_http_port' must be defined when multicast is disabled" | ||
when: es_multicast_enabled == false and es_http_port is not defined | ||
|
||
- fail: msg="Parameter 'es_transport_tcp_port' must be defined when multicast is disabled" | ||
when: es_multicast_enabled == false and es_transport_tcp_port is not defined | ||
|
||
- fail: msg="Parameter 'es_unicast_hosts' must be defined when multicast is disabled" | ||
when: es_multicast_enabled == false and es_unicast_hosts is not defined |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
--- | ||
|
||
# Configure Elasticsearch Node | ||
|
||
# Create an instance specific default file | ||
- name: Copy Default File for Instance | ||
command: creates={{instance_default_file}} cp "{{default_file}}" "{{instance_default_file}}" | ||
when: instance_default_file != default_file | ||
|
||
- debug: msg="DEBUG {{ hostvars[inventory_hostname] }}" | ||
|
||
# Create an instance specific init file | ||
- name: Copy Init File for Instance | ||
command: creates={{instance_init_script}} cp "{{init_script}}" "{{instance_init_script}}" | ||
when: instance_init_script != init_script | ||
|
||
|
||
#Create Config directory | ||
- name: Create Config Directory | ||
file: path={{ instance_config_directory }} state=directory owner={{ es_user }} group={{ es_group }} | ||
|
||
#Copy the config template | ||
- name: Copy configuration file | ||
template: src=elasticsearch.yml.j2 dest={{instance_config_directory}}/elasticsearch.yml owner={{ es_user }} group={{ es_group }} mode=0644 force=yes | ||
|
||
# Apply changes to the default file for this instance | ||
- name: Configure config directory | ||
lineinfile: dest={{instance_default_file}} regexp="^CONF_DIR" insertafter="^#CONF_DIR" line="CONF_DIR={{ instance_config_directory }}" | ||
register: elasticsearch_configure | ||
|
||
- name: Configure config file | ||
lineinfile: dest={{instance_default_file}} regexp="^CONF_FILE" insertafter="^#CONF_FILE" line="CONF_FILE={{ instance_config_directory }}/elasticsearch.yml" | ||
register: elasticsearch_configure | ||
|
||
- name: Configure memory in defaults | ||
lineinfile: dest={{instance_default_file}} regexp="^ES_HEAP_SIZE" insertafter="^#ES_HEAP_SIZE" line="ES_HEAP_SIZE={{ es_heap_size }}" | ||
when: es_heap_size is defined | ||
register: elasticsearch_configure | ||
|
||
#We only have to set these if they are specified. The start scripts will by default use the NAME set later on constructing directory names to avoid collisions. | ||
|
||
- name: Configure max open files | ||
lineinfile: dest={{instance_default_file}} regexp="^MAX_OPEN_FILES" insertafter="^#MAX_OPEN_FILES" line="MAX_OPEN_FILES={{ es_max_open_files }}" | ||
when: es_max_open_files is defined | ||
register: elasticsearch_configure | ||
|
||
#For directories we also use the {{ es_node_name_prefix }}{{inventory_hostname}} - this helps if we have a shared SAN. {{es_node_name_prefix}}{{default_file | basename} could potentially be used - | ||
#init script effectively means this is the default. | ||
|
||
#Create PID directory | ||
- name: Create PID Directory | ||
file: path={{pid_dir}}/{{ es_node_name_prefix }}{{inventory_hostname}} state=directory owner={{ es_user }} group={{ es_group }} | ||
|
||
- name: Configure PID directory | ||
lineinfile: dest={{instance_default_file}} regexp="^PID_DIR" insertafter="^#PID_DIR" line="PID_DIR={{pid_dir}}/{{ es_node_name_prefix }}{{inventory_hostname}}" | ||
register: elasticsearch_configure | ||
|
||
- set_fact: es_data_dir={{default_data_dir}} | ||
when: es_data_dir is undefined | ||
|
||
#include the host name as potentially shared SAN | ||
- name: Create data dir | ||
file: state=directory path={{ es_data_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}} owner={{ es_user }} group={{ es_group }} | ||
|
||
- name: Configure data store | ||
lineinfile: dest={{instance_default_file}} regexp="^DATA_DIR" insertafter="^#DATA_DIR" line="DATA_DIR={{ es_data_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}}" | ||
register: elasticsearch_configure | ||
|
||
- set_fact: es_work_dir={{default_work_dir}} | ||
when: es_work_dir is undefined | ||
|
||
- name: Create work dir | ||
file: state=directory path={{ es_work_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}} owner={{ es_user }} group={{ es_group }} | ||
|
||
- name: Configure work directory | ||
lineinfile: dest={{instance_default_file}} regexp="^WORK_DIR" insertafter="^#WORK_DIR" line="WORK_DIR={{ es_work_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}}" | ||
register: elasticsearch_configure | ||
|
||
- set_fact: es_log_dir={{default_log_dir}} | ||
when: es_log_dir is undefined | ||
|
||
- name: Create log dir | ||
file: state=directory path={{ es_log_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}} owner={{ es_user }} group={{ es_group }} | ||
|
||
- name: Configure log directory | ||
lineinfile: dest={{instance_default_file}} regexp="^LOG_DIR" insertafter="^#LOG_DIR" line="LOG_DIR={{ es_log_dir }}/{{ es_node_name_prefix }}{{inventory_hostname}}" | ||
register: elasticsearch_configure | ||
|
||
#required so that the ES_HOME does not change between instances | ||
|
||
- name: Configure elasticsearch home | ||
lineinfile: dest={{instance_default_file}} regexp="^ES_HOME" insertafter="^#ES_HOME" line="ES_HOME={{es_home}}" | ||
register: elasticsearch_configure | ||
|
||
- name: Configure elasticsearch user | ||
lineinfile: dest={{instance_default_file}} regexp="^ES_USER" insertafter="^#ES_USER" line="ES_USER={{ es_user }}" | ||
when: es_user is defined | ||
register: elasticsearch_configure | ||
|
||
- name: Configure elasticsearch group | ||
lineinfile: dest={{instance_default_file}} regexp="^ES_GROUP" insertafter="^#ES_GROUP" line="ES_GROUP={{ es_group }}" | ||
when: es_group is defined | ||
register: elasticsearch_configure | ||
|
||
#Apply changes to init script - NAME can be changed in Debian start script | ||
- name: Name Node in Init Script | ||
lineinfile: dest={{instance_init_script}} regexp="^NAME" line="NAME={{es_node_name_prefix}}{{default_file | basename}}" | ||
register: elasticsearch_configure | ||
when: ansible_os_family == 'Debian' | ||
|
||
- debug: msg="For {{ instance_init_script }} using default {{ instance_default_file }}" | ||
|
||
- name: Environment in Init Script | ||
lineinfile: dest={{instance_init_script}} regexp="^ES_ENV_FILE" line="ES_ENV_FILE={{instance_default_file}}" | ||
register: elasticsearch_configure | ||
when: ansible_os_family == 'RedHat' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,31 @@ | ||
--- | ||
# Trigger Debian section | ||
- name: Include Debian specific Elasticsearch | ||
- set_fact: instance_default_file={{default_file | dirname}}/{{es_node_name_prefix}}{{default_file | basename}} | ||
- set_fact: instance_init_script={{init_script | dirname }}/{{es_node_name_prefix}}{{init_script | basename}} | ||
- set_fact: instance_config_directory={{ es_conf_dir }}/{{es_node_name_prefix}}elasticsearch | ||
|
||
|
||
|
||
# Install OS specific elasticsearch - this can be abbreviated in version 2.0.0 | ||
- name: Include specific Elasticsearch | ||
include: elasticsearch-Debian.yml | ||
when: ansible_os_family == 'Debian' | ||
|
||
# Trigger Redhat section | ||
- name: Include RedHat specific Elasticsearch | ||
- name: Include specific Elasticsearch | ||
include: elasticsearch-RedHat.yml | ||
when: ansible_os_family == 'RedHat' | ||
|
||
#Configuration file for elasticsearch | ||
- name: Elasticsearch configuration | ||
include: elasticsearch-config.yml | ||
|
||
# Make sure the service is started, and restart if necessary | ||
- name: Start elasticsearch service | ||
service: name=elasticsearch state=started | ||
service: name={{instance_init_script | basename}} state=started | ||
when: es_start_service | ||
register: elasticsearch_started | ||
|
||
- name: Restart elasticsearch service if new version installed | ||
service: name=elasticsearch state=restarted | ||
service: name={{instance_init_script | basename}} state=restarted | ||
when: es_start_service and | ||
( elasticsearch_install.changed or elasticsearch_configure.changed ) | ||
and not elasticsearch_started.changed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
--- | ||
- name: RedHat - Ensure Java is installed | ||
yum: name={{ java_rhel }} state=latest | ||
yum: name={{ java }} state=latest | ||
when: ansible_os_family == 'RedHat' | ||
|
||
- name: Debian - Ensure Java is installed | ||
apt: name={{ java_debian }} state=present update_cache=yes | ||
apt: name={{ java }} state=present update_cache=yes force=yes | ||
when: ansible_os_family == 'Debian' |
Oops, something went wrong.