From 87e32dc2417a4cfb929c8c8baead4202fa980d05 Mon Sep 17 00:00:00 2001 From: Dale McDiarmid Date: Wed, 16 Aug 2017 12:41:10 +0100 Subject: [PATCH] Reworking of templates --- defaults/main.yml | 1 + handlers/main.yml | 19 +++++++++++-------- meta/main.yml | 3 +-- ...es.yml => elasticsearch-template-copy.yml} | 7 +------ .../elasticsearch-template-insert.yml | 10 ++++++---- tasks/main.yml | 19 ++++++------------- test/integration/package.yml | 4 ++-- 7 files changed, 28 insertions(+), 35 deletions(-) rename tasks/{elasticsearch-templates.yml => elasticsearch-template-copy.yml} (57%) rename handlers/elasticsearch-templates.yml => tasks/elasticsearch-template-insert.yml (62%) diff --git a/defaults/main.yml b/defaults/main.yml index 112f841..48f85c3 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -3,6 +3,7 @@ es_major_version: "5.x" es_version: "5.5.1" es_version_lock: false es_use_repository: true +es_templates_fileglob: "./files/templates/*" es_apt_key: "https://artifacts.elastic.co/GPG-KEY-elasticsearch" es_apt_url: "deb https://artifacts.elastic.co/packages/{{ es_major_version }}/apt stable main" es_apt_url_old: "deb http://packages.elastic.co/elasticsearch/{{ es_major_version }}/debian stable main" diff --git a/handlers/main.yml b/handlers/main.yml index 1db4471..a7faa52 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,10 +1,13 @@ -#Templates are a handler as they need to come after a restart e.g. suppose user removes security on a running node and doesn't -#specify es_api_basic_auth_username and es_api_basic_auth_password. The templates will subsequently not be removed if we don't wait for the node to restart. -#Templates done after restart therefore - as a handler. +- name: reload systemd configuration + command: systemctl daemon-reload -- name: load-templates - include: ./handlers/elasticsearch-templates.yml - #only do templates if we're starting - when: es_templates and es_start_service - when: es_templates \ No newline at end of file +# Restart service and ensure it is enabled + +- name: restart elasticsearch + service: name={{instance_init_script | basename}} state=restarted enabled=yes + when: + - es_restart_on_change + - es_start_service + - ((plugin_installed is defined and plugin_installed.changed) or (config_updated is defined and config_updated.changed) or (xpack_state.changed) or (debian_elasticsearch_install_from_repo.changed or redhat_elasticsearch_install_from_repo.changed or elasticsearch_install_from_package.changed)) + register: es_restarted \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml index edd7295..aeecec7 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -7,8 +7,7 @@ galaxy_info: description: Elasticsearch for Linux company: "Elastic.co" license: "license (Apache)" - # Require 1.6 for apt deb install - min_ansible_version: 2.2.0 + min_ansible_version: 2.3.2 platforms: - name: EL versions: diff --git a/tasks/elasticsearch-templates.yml b/tasks/elasticsearch-template-copy.yml similarity index 57% rename from tasks/elasticsearch-templates.yml rename to tasks/elasticsearch-template-copy.yml index 27c0c42..98a3e06 100644 --- a/tasks/elasticsearch-templates.yml +++ b/tasks/elasticsearch-template-copy.yml @@ -2,13 +2,8 @@ - file: path=/etc/elasticsearch/templates state=directory owner={{ es_user }} group={{ es_group }} -- name: Copy default templates to elasticsearch - copy: src=templates dest=/etc/elasticsearch/ owner={{ es_user }} group={{ es_group }} - notify: load-templates - when: es_templates_fileglob is not defined - - name: Copy templates to elasticsearch copy: src={{ item }} dest=/etc/elasticsearch/templates owner={{ es_user }} group={{ es_group }} - notify: load-templates + register: load_templates with_fileglob: - "{{ es_templates_fileglob | default('') }}" \ No newline at end of file diff --git a/handlers/elasticsearch-templates.yml b/tasks/elasticsearch-template-insert.yml similarity index 62% rename from handlers/elasticsearch-templates.yml rename to tasks/elasticsearch-template-insert.yml index 09bee24..de1d770 100644 --- a/handlers/elasticsearch-templates.yml +++ b/tasks/elasticsearch-template-insert.yml @@ -1,10 +1,12 @@ ---- +#Templates done after restart therefore. e.g. suppose user removes security on a running node and doesn't specify es_api_basic_auth_username and es_api_basic_auth_password. The templates will subsequently not be removed if we don't wait for the node to restart. - name: Ensure elasticsearch is started service: name={{instance_init_script | basename}} state=started enabled=yes + when: es_start_service - name: Wait for elasticsearch to startup wait_for: host={{es_api_host}} port={{es_api_port}} delay=10 + when: es_start_service - name: Install templates without auth uri: @@ -13,7 +15,7 @@ status_code: 200 body_format: json body: "{{ lookup('file', item) }}" - when: not es_enable_xpack or not es_xpack_features is defined or "security" not in es_xpack_features + when: es_start_service and not es_enable_xpack or not es_xpack_features is defined or "security" not in es_xpack_features with_fileglob: - "{{ es_templates_fileglob | default('') }}" run_once: True @@ -28,7 +30,7 @@ force_basic_auth: yes body_format: json body: "{{ lookup('file', item) }}" - when: es_enable_xpack and es_xpack_features is defined and "security" in es_xpack_features + when: es_start_service and es_enable_xpack and es_xpack_features is defined and "security" in es_xpack_features with_fileglob: - "{{ es_templates_fileglob | default('') }}" - run_once: True + run_once: True \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 220a136..7f13202 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -37,25 +37,18 @@ tags: - xpack -- include: elasticsearch-templates.yml +- include: elasticsearch-template-copy.yml when: es_templates tags: - templates -- name: reload systemd configuration - command: systemctl daemon-reload - -# Restart service and ensure it is enabled -- name: restart elasticsearch - service: name={{instance_init_script | basename}} state=restarted enabled=yes - when: - - es_restart_on_change - - es_start_service - - ((plugin_installed is defined and plugin_installed.changed) or (config_updated is defined and config_updated.changed) or (xpack_state.changed) or (debian_elasticsearch_install_from_repo.changed or redhat_elasticsearch_install_from_repo.changed or elasticsearch_install_from_package.changed)) - register: es_restarted - - meta: flush_handlers +- include: elasticsearch-template-insert.yml + when: load_templates + tags: + - templates + - name: Make sure elasticsearch is started service: name={{instance_init_script | basename}} state=started enabled=yes when: es_start_service diff --git a/test/integration/package.yml b/test/integration/package.yml index 4cfd73c..77168c4 100644 --- a/test/integration/package.yml +++ b/test/integration/package.yml @@ -8,7 +8,7 @@ es_templates: true es_heap_size: "1g" es_api_port: 9200 - es_version: "5.1.2" + es_version: "5.5.1" es_plugins: - plugin: ingest-geoip @@ -21,7 +21,7 @@ vars: es_scripts: true es_templates: true - es_version: "5.2.2" + es_version: "5.5.1" es_heap_size: "1g" es_api_port: 9200 es_plugins: