From 7b620eadf98cd71195ee2010c724683a84b0fbe5 Mon Sep 17 00:00:00 2001 From: Dale McDiarmid Date: Mon, 18 Jan 2016 14:37:15 +0000 Subject: [PATCH] Issue 40 + refactoring for better layout and more efficient restart process --- handlers/main.yml | 2 +- tasks/elasticsearch-config.yml | 19 +++++++++++++++---- tasks/elasticsearch-service.yml | 6 ++++++ tasks/elasticsearch.yml | 14 -------------- tasks/main.yml | 6 ++++-- .../helpers/serverspec/standard_spec.rb | 16 ++++++++++++++++ vars/Debian.yml | 1 - vars/RedHat.yml | 1 - vars/main.yml | 3 ++- 9 files changed, 44 insertions(+), 24 deletions(-) create mode 100644 tasks/elasticsearch-service.yml diff --git a/handlers/main.yml b/handlers/main.yml index 45f8a83..c64fb52 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,4 +1,4 @@ - name: restart elasticsearch service: name={{instance_init_script | basename}} state=restarted enabled=yes - when: es_start_service and (not elasticsearch_started.changed or (plugin_installed is defined and plugin_installed.changed)) \ No newline at end of file + when: es_start_service and (not elasticsearch_started.changed or (plugin_installed is defined and plugin_installed.changed) or elasticsearch_install.changed) diff --git a/tasks/elasticsearch-config.yml b/tasks/elasticsearch-config.yml index 8bc50e3..b247f63 100644 --- a/tasks/elasticsearch-config.yml +++ b/tasks/elasticsearch-config.yml @@ -10,10 +10,7 @@ #Relies on elasticsearch distribution installing a serviced script to determine whether one should be copied. -- stat: path={{sysd_script}} - register: systemd_service - -- set_fact: use_system_d={{systemd_service.stat.exists and ((ansible_distribution == 'Debian' and ansible_distribution_version | version_compare('8', '>=')) or (ansible_distribution == 'CentOS' and ansible_distribution_version | version_compare('7', '>=')) or (ansible_distribution == 'Ubuntu' and ansible_distribution_version | version_compare('15', '>='))) }} +- set_fact: use_system_d={{(ansible_distribution == 'Debian' and ansible_distribution_version | version_compare('8', '>=')) or (ansible_distribution == 'CentOS' and ansible_distribution_version | version_compare('7', '>=')) or (ansible_distribution == 'Ubuntu' and ansible_distribution_version | version_compare('15', '>=')) }} - set_fact: instance_sysd_script={{sysd_script | dirname }}/{{es_instance_name}}_{{sysd_script | basename}} when: use_system_d @@ -81,3 +78,17 @@ notify: restart elasticsearch #Clean up un-wanted package scripts to avoid confusion + +- name: Delete Default Init + file: dest=/etc/init.d/elasticsearch state=absent + +- name: Delete Default Environment File + file: dest=/etc/default/elasticsearch state=absent + when: ansible_os_family == 'Debian' + +- name: Delete Default Environment File + file: dest=/etc/sysconfig/elasticsearch state=absent + when: ansible_os_family == 'RedHat' + +- name: Delete Default Sysconfig File + file: dest=/usr/lib/systemd/system/elasticsearch.service state=absent diff --git a/tasks/elasticsearch-service.yml b/tasks/elasticsearch-service.yml new file mode 100644 index 0000000..57a79af --- /dev/null +++ b/tasks/elasticsearch-service.yml @@ -0,0 +1,6 @@ +# Make sure the service is started, and restart if necessary +- name: Start elasticsearch service + service: name={{instance_init_script | basename}} state=started enabled=yes + when: es_start_service + register: elasticsearch_started + diff --git a/tasks/elasticsearch.yml b/tasks/elasticsearch.yml index fce9a04..da6b64c 100644 --- a/tasks/elasticsearch.yml +++ b/tasks/elasticsearch.yml @@ -16,17 +16,3 @@ - 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={{instance_init_script | basename}} state=started enabled=yes - when: es_start_service - register: elasticsearch_started - -- name: Restart elasticsearch service if new version installed - service: name={{instance_init_script | basename}} state=restarted enabled=yes - when: es_start_service and elasticsearch_install.changed and not elasticsearch_started.changed \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index e835795..e021b5d 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -5,10 +5,12 @@ include_vars: "{{ansible_os_family}}.yml" - include: java.yml - include: elasticsearch.yml -- include: elasticsearch-plugins.yml - when: es_plugins is defined +- include: elasticsearch-config.yml - include: elasticsearch-scripts.yml when: es_scripts +- include: elasticsearch-plugins.yml + when: es_plugins is defined +- include: elasticsearch-service.yml - include: elasticsearch-templates.yml when: es_templates - meta: flush_handlers \ No newline at end of file diff --git a/test/integration/helpers/serverspec/standard_spec.rb b/test/integration/helpers/serverspec/standard_spec.rb index 07e944d..a79fde0 100644 --- a/test/integration/helpers/serverspec/standard_spec.rb +++ b/test/integration/helpers/serverspec/standard_spec.rb @@ -47,5 +47,21 @@ shared_examples 'standard::init' do |es_version| end end + describe file('/etc/init.d/elasticsearch') do + it { should_not exist } + end + + describe file('/etc/default/elasticsearch') do + it { should_not exist } + end + + describe file('/etc/sysconfig/elasticsearch') do + it { should_not exist } + end + + describe file('/usr/lib/systemd/system/elasticsearch.service') do + it { should_not exist } + end + end diff --git a/vars/Debian.yml b/vars/Debian.yml index d0d3da3..6e58b35 100644 --- a/vars/Debian.yml +++ b/vars/Debian.yml @@ -1,5 +1,4 @@ --- java: "openjdk-7-jre-headless" default_file: "/etc/default/elasticsearch" -init_script: "/etc/init.d/elasticsearch" es_home: "/usr/share/elasticsearch" \ No newline at end of file diff --git a/vars/RedHat.yml b/vars/RedHat.yml index 0d8dbbe..faeec01 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -1,5 +1,4 @@ --- java: "java-1.8.0-openjdk.x86_64" default_file: "/etc/sysconfig/elasticsearch" -init_script: "/etc/init.d/elasticsearch" es_home: "/usr/share/elasticsearch" \ No newline at end of file diff --git a/vars/main.yml b/vars/main.yml index b2f74d9..e22b2cc 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,4 +1,5 @@ --- es_package_url: "https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch" es_conf_dir: "/etc/elasticsearch" -sysd_script: "/usr/lib/systemd/system/elasticsearch.service" \ No newline at end of file +sysd_script: "/usr/lib/systemd/system/elasticsearch.service" +init_script: "/etc/init.d/elasticsearch" \ No newline at end of file