From 4d661e3f0071a9a20fd6c53181d881e188952f15 Mon Sep 17 00:00:00 2001 From: Roman Belyakovsky Date: Wed, 22 Mar 2017 00:10:21 +0100 Subject: [PATCH 1/2] Replaced shell with modules, replaced fail-based checks with changing-based ones --- tasks/check_environment.yml | 15 ++++++--------- tasks/debian/main.yml | 14 ++++++++++---- tasks/main.yml | 1 + tasks/redhat/main.yml | 8 ++++---- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/tasks/check_environment.yml b/tasks/check_environment.yml index 8793621..2ec91d7 100644 --- a/tasks/check_environment.yml +++ b/tasks/check_environment.yml @@ -9,27 +9,24 @@ - name: determine if Java is already installed shell: which java register: oracle_java_task_installed - ignore_errors: yes - changed_when: False + changed_when: "{{ oracle_java_task_installed.rc != 0 }}" + failed_when: no # oracle_java_installed.rc == 0 : installed # oracle_java_installed.rc == 1 : not installed - - name: set fact oracle_java_installed set_fact: - oracle_java_installed={{ oracle_java_task_installed.rc == 0 }} - when: oracle_java_task_installed is defined and oracle_java_task_installed.rc is defined - changed_when: False + oracle_java_installed={{ not oracle_java_task_installed.changed }} - name: determine which Java version is installed - shell: java -version 2>&1 | head -n 1 | awk '{ print $3 }' | awk -F '"' '{ print $2 }' - when: oracle_java_installed is defined + shell: java -version + when: oracle_java_installed register: oracle_java_task_version changed_when: False - name: set fact oracle_java_installed_version set_fact: - oracle_java_version_installed={{ oracle_java_task_version.stdout }} + oracle_java_version_installed="{{ oracle_java_task_version.stderr.split('\n')[0]|regex_replace('.*\"(.*)\"','\\1') }}" when: oracle_java_task_version is defined and oracle_java_task_version.stdout is defined changed_when: False diff --git a/tasks/debian/main.yml b/tasks/debian/main.yml index cfb8248..e75dced 100644 --- a/tasks/debian/main.yml +++ b/tasks/debian/main.yml @@ -4,10 +4,16 @@ # Task file to install Oracle Java Development Kit in a system with a Debian based Linux distribution. # -- name: accept Oracle license - shell: "echo oracle-java{{ oracle_java_version }}-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections" - changed_when: no - become: yes + +- name: Check if oracle license is already accepted + shell: debconf-get-selections |grep "oracle-java{{ oracle_java_version }}-installer\sshared/accepted-oracle-license-v1-1\sboolean\strue" + register: licence_not_accepted + failed_when: false + changed_when: licence_not_accepted.rc != 0 + +- name: Set license as accepted + debconf: name='oracle-java{{ oracle_java_version }}-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select' + when: "{{ licence_not_accepted.changed }}" - name: ensure Java is installed apt: diff --git a/tasks/main.yml b/tasks/main.yml index 17a1a7e..65ad18b 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -15,6 +15,7 @@ - "../defaults/{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" - "../defaults/{{ ansible_distribution | lower }}.yml" - "../defaults/{{ ansible_os_family | lower }}.yml" + tags: installation - include: debug.yml when: debug | default(false) diff --git a/tasks/redhat/main.yml b/tasks/redhat/main.yml index 98ff8a8..8193f05 100644 --- a/tasks/redhat/main.yml +++ b/tasks/redhat/main.yml @@ -5,10 +5,10 @@ # - name: download Java RPM - shell: - "curl -L -H 'Cookie:oraclelicense=accept-securebackup-cookie' -o {{ oracle_java_dir_source }}/{{ oracle_java_rpm_filename }} {{ oracle_java_rpm_url }}" - args: - creates: "{{ oracle_java_dir_source }}/{{ oracle_java_rpm_filename }}" + get_url: + headers: 'Cookie:oraclelicense=accept-securebackup-cookie' + dest: "{{ oracle_java_dir_source }}/{{ oracle_java_rpm_filename }}" + url: "{{ oracle_java_rpm_url }}" register: oracle_java_task_rpm_download become: yes tags: From a57fa8b82618ae9ddda8236b235e8b5b9e195cb7 Mon Sep 17 00:00:00 2001 From: Roman Belyakovsky Date: Wed, 22 Mar 2017 00:31:43 +0100 Subject: [PATCH 2/2] Removed launchpad-ppa-webupd8 dependency, cleaned up README, changed defaults to set java as default --- README.md | 12 ++---------- defaults/main.yml | 2 +- tasks/debian/main.yml | 23 ++++++++++++++++++++++- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c9ec99f..bcaefc0 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,6 @@ DISCLAIMER: usage of any version of this role implies you have accepted the | variable | default | description | |--:|:-:|:--| -| launchpad_ppa_webupd8_cache_valid_time | 3600 | the amount of time in seconds the apt cache is valid. | | oracle_java_cache_valid_time | 3600 | the amount of time in seconds the apt cache is valid. | | oracle_java_state | latest | the package state (see Ansible apt module for more information). | | oracle_java_home | /usr/lib/jvm/java-{{ oracle_java_version }}-oracle | the location of the Java home directory. | @@ -75,18 +74,11 @@ DISCLAIMER: usage of any version of this role implies you have accepted the | oracle_java_rpm_url | http://download.oracle.com/otn-pub/java/jdk/{{ oracle_java_version }}u{{ oracle_java_version_update }}-b{{ oracle_java_version_build }}/{{ oracle_java_rpm_filename }} | the URL where the RPM can be downloaded from. | -## Dependencies - -For Debian and Ubuntu this role depends on: - -- ansiblebit.launchpad-ppa-webupd8 - - ## Playbooks - hosts: servers roles: - - { role: ansiblebit.oracle-java, - oracle_java_set_as_default: yes } + - role: ansiblebit.oracle-java, + oracle_java_set_as_default: yes Use `--skip-tags=debug` if you want to suppress debug information. diff --git a/defaults/main.yml b/defaults/main.yml index 83f6c09..81625ed 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -6,7 +6,7 @@ oracle_java_dir_source: '/usr/local/src' -oracle_java_set_as_default: no +oracle_java_set_as_default: yes oracle_java_version: 8 oracle_java_version_update: 74 diff --git a/tasks/debian/main.yml b/tasks/debian/main.yml index e75dced..10b29f1 100644 --- a/tasks/debian/main.yml +++ b/tasks/debian/main.yml @@ -4,16 +4,37 @@ # Task file to install Oracle Java Development Kit in a system with a Debian based Linux distribution. # +- name: add java ppa repo + apt_repository: repo=ppa:webupd8team/java state=present update_cache=yes + when: "{{ ansible_distribution == 'Ubuntu' }}" + +- block: + - name: ensure the webupd8 launchpad apt repository key is present + apt_key: + id=0xC2518248EEA14886 + keyserver=keyserver.ubuntu.com + state=present + - name: ensure the webupd8 launchpad apt repository is present + apt_repository: + repo='{{ item }} http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main' + update_cache=yes + state=present + with_items: + - deb + - deb-src + when: "{{ ansible_distribution == 'Debian' }}" + - name: Check if oracle license is already accepted shell: debconf-get-selections |grep "oracle-java{{ oracle_java_version }}-installer\sshared/accepted-oracle-license-v1-1\sboolean\strue" register: licence_not_accepted failed_when: false changed_when: licence_not_accepted.rc != 0 + when: "{{ ansible_distribution == 'Ubuntu' }}" - name: Set license as accepted debconf: name='oracle-java{{ oracle_java_version }}-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select' - when: "{{ licence_not_accepted.changed }}" + when: "{{ licence_not_accepted|changed or licence_not_accepted|skipped }}" - name: ensure Java is installed apt: