From 3aecd58b59437070a2ed942f08a6f43669d8f777 Mon Sep 17 00:00:00 2001 From: Robin Clarke Date: Wed, 13 May 2015 09:45:55 +0200 Subject: [PATCH] RedHat and Debian complete --- defaults/main.yml | 5 +++- tasks/elasticsearch-Debian.yml | 8 +++++ tasks/elasticsearch-RedHat.yml | 8 +++++ tasks/elasticsearch.yml | 54 +++++++++++----------------------- tasks/java-Debian.yml | 19 ++++++++++++ tasks/java-RedHat.yml | 6 ++++ tasks/java.yml | 27 ++++------------- tasks/main.yml | 2 -- templates/elasticsearch.repo | 6 ++++ vars/RedHat.yml | 2 ++ vars/main.yml | 2 -- 11 files changed, 76 insertions(+), 63 deletions(-) create mode 100644 tasks/elasticsearch-Debian.yml create mode 100644 tasks/elasticsearch-RedHat.yml create mode 100644 tasks/java-Debian.yml create mode 100644 tasks/java-RedHat.yml create mode 100644 templates/elasticsearch.repo diff --git a/defaults/main.yml b/defaults/main.yml index de56457..c6f63b1 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,2 +1,5 @@ --- -elasticsearch_version: "1.5.2" +elasticsearch: + major_version: "1.5" + version: "1.5.2" + start_service: true diff --git a/tasks/elasticsearch-Debian.yml b/tasks/elasticsearch-Debian.yml new file mode 100644 index 0000000..dad14f9 --- /dev/null +++ b/tasks/elasticsearch-Debian.yml @@ -0,0 +1,8 @@ +--- +- name: Add Elasticsearch repository key + apt_key: url="http://packages.elasticsearch.org/GPG-KEY-elasticsearch" state=present +- name: add elasticsearch repository + apt_repository: repo="deb http://packages.elastic.co/elasticsearch/{{ elasticsearch.major_version }}/debian stable main" state=present +- name: Ensure elasticsearch is installed. + apt: name=elasticsearch={{ elasticsearch.version }} state=present cache_valid_time=86400 + register: elasticsearch_install diff --git a/tasks/elasticsearch-RedHat.yml b/tasks/elasticsearch-RedHat.yml new file mode 100644 index 0000000..24cc880 --- /dev/null +++ b/tasks/elasticsearch-RedHat.yml @@ -0,0 +1,8 @@ +--- +- name: RedHat - add Elasticsearch repo + template: src=elasticsearch.repo dest=/etc/yum.repos.d/elasticsearch-{{ elasticsearch.major_version }}.repo +- name: RedHat - Install Elasticsearch + yum: name=elasticsearch-{{ elasticsearch.version }} state=present update_cache=yes + register: elasticsearch_install + + diff --git a/tasks/elasticsearch.yml b/tasks/elasticsearch.yml index e246696..6d9eb95 100644 --- a/tasks/elasticsearch.yml +++ b/tasks/elasticsearch.yml @@ -1,40 +1,20 @@ --- -# Packages -- name: Define elasticsearch_package (Debian) - set_fact: - elasticsearch_package: "elasticsearch-{{ elasticsearch_version}}.deb" - when: elasticsearch_package is not defined and ansible_os_family == 'Debian' -- name: Define elasticsearch_package (Redhat) - set_fact: - elasticsearch_package: "elasticsearch-{{ elasticsearch_version}}.noarch.rpm" - when: elasticsearch_package is not defined and ansible_os_family == 'RedHat' -- name: Define elasticsearch_package (Linux) - set_fact: - elasticsearch_package: "elasticsearch-{{ elasticsearch_version}}.tar.gz" - when: elasticsearch_package is not defined - -- name: Define elasticsearch_url - set_fact: - elasticsearch_url: "https://download.elastic.co/elasticsearch/elasticsearch/{{ elasticsearch_package}}" - when: elasticsearch_url is not defined - -- debug: var=elasticsearch_url - -# TODO Is /opt always a good destination? -# It is good to always have one location to avoid downloading again -# It is bad to have a location hard-coded because we don't know if it -# will always exist and have space... better to use mktemp, but then -# have to ensure that desired version is already installde with -# dpkg-query -W elasticsearch and parse the output... -- name: Download elasticsearch package - get_url: url={{ elasticsearch_url }} dest=/opt/{{ elasticsearch_package}} - -# Debian section -- name: Ensure elasticsearch is installed. - apt: deb=/opt/{{ elasticsearch_package }} state=installed +# Trigger Debian section +- name: Include Debian specific Elasticsearch + include: elasticsearch-Debian.yml when: ansible_os_family == 'Debian' -# Linux section -- name: Ensure elasticsearch is installed. - apt: deb=/opt/{{ elasticsearch_package }} state=installed - when: ansible_os_family == 'Linux' +# Trigger Redhat section +- name: Include RedHat specific Elasticsearch + include: elasticsearch-RedHat.yml + when: ansible_os_family == 'RedHat' + +# Make sure the service is started, and restart if necessary +- name: Start elasticsearch service + service: name=elasticsearch state=started + when: elasticsearch.start_service + register: elasticsearch_started +- name: Restart elasticsearch service if new version installed + service: name=elasticsearch state=restarted + when: elasticsearch.start_service and elasticsearch_install.changed and not elasticsearch_started.changed + diff --git a/tasks/java-Debian.yml b/tasks/java-Debian.yml new file mode 100644 index 0000000..e28e4fe --- /dev/null +++ b/tasks/java-Debian.yml @@ -0,0 +1,19 @@ +--- +# Debian specific Java +- name: Debian - Define java_repos. + set_fact: + java_repos: "{{ __java_repos | list }}" + when: java_repos is not defined + +- name: Debian - Automatically select the Oracle License + tags: java + shell: echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections + changed_when: false + +- name: Debian - Add java repos + apt_repository: repo={{ item }} update_cache=yes state=present + with_items: java_repos + +- name: Debian - Ensure Java is installed. + apt: name={{ item }} state=present cache_valid_time=86400 + with_items: java_packages diff --git a/tasks/java-RedHat.yml b/tasks/java-RedHat.yml new file mode 100644 index 0000000..b3c8297 --- /dev/null +++ b/tasks/java-RedHat.yml @@ -0,0 +1,6 @@ +--- +# RedHat specific Java +- name: RedHat - Ensure Java is installed. + yum: name={{ item }} state=latest + with_items: java_packages + diff --git a/tasks/java.yml b/tasks/java.yml index ddc6e55..a84dcf5 100644 --- a/tasks/java.yml +++ b/tasks/java.yml @@ -1,30 +1,15 @@ --- -- name: Define java_packages. +- name: Java - Define java_packages. set_fact: java_packages: "{{ __java_packages | list }}" when: java_packages is not defined -- name: Define java_repos. - set_fact: - java_repos: "{{ __java_repos | list }}" - when: java_repos is not defined -# Debian section -- name: Automatically select the Oracle License - tags: java - shell: echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections - changed_when: false +- name: Include Debian specific Java stuff + include: java-Debian.yml when: ansible_os_family == 'Debian' -- name: Add java repos - apt_repository: repo={{ item }} update_cache=yes state=present - with_items: java_repos - when: ansible_os_family == 'Debian' +- name: Include RedHat specific Java stuff + include: java-RedHat.yml + when: ansible_os_family == 'RedHat' -- name: Update apt cache. - apt: update_cache=yes cache_valid_time=86400 - when: ansible_os_family == 'Debian' -- name: Ensure Java is installed. - apt: name={{ item }} state=installed - with_items: java_packages - when: ansible_os_family == 'Debian' diff --git a/tasks/main.yml b/tasks/main.yml index 0990f99..9d74063 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,6 +1,4 @@ --- -#- name: Include default varsiables. -# include_vars: "main.yml" - name: Include OS-specific variables. include_vars: "{{ ansible_os_family }}.yml" - include: java.yml diff --git a/templates/elasticsearch.repo b/templates/elasticsearch.repo new file mode 100644 index 0000000..6b29517 --- /dev/null +++ b/templates/elasticsearch.repo @@ -0,0 +1,6 @@ +[elasticsearch-{{ elasticsearch.major_version }}] +name=Elasticsearch repository for {{ elasticsearch.major_version }}.x packages +baseurl=http://packages.elastic.co/elasticsearch/{{ elasticsearch.major_version }}/centos +gpgcheck=1 +gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch +enabled=1 diff --git a/vars/RedHat.yml b/vars/RedHat.yml index ed97d53..b4f6c25 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -1 +1,3 @@ --- +__java_packages: + - "java-1.8.0-openjdk.x86_64" diff --git a/vars/main.yml b/vars/main.yml index 50a7bba..ed97d53 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,3 +1 @@ --- -__elasticsearch_version: "1.5.2" -