diff --git a/.travis.yml b/.travis.yml index 1456518..4988eb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,8 @@ sudo: yes matrix: include: + - python: 2.7 + env: TOXENV=py27-ansible23 - python: 2.7 env: TOXENV=py27-ansible22 - python: 2.7 @@ -25,4 +27,3 @@ before_cache: cache: directories: - ${HOME}/.cache/pip - diff --git a/README.md b/README.md index 94093c3..2c8ce41 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,6 @@ DISCLAIMER: usage of any version of this role implies you have accepted the | oracle_java_set_as_default | yes | make the newly installed Java the default runtime environment. | | oracle_java_state | latest | the package state (see Ansible apt module for more information). | | oracle_java_version | 8 | the Oracle JDK version to be installed. | -| oracle_java_version_update | 112 | the Oracle JDK version update. | -| oracle_java_version_build | 15 | the Oracle JDK version update build number. | | oracle_java_version_string | 1.{{ oracle_java_version }}.0_u{{ oracle_java_version_update }} | the Java version string to verify installation against. | | oracle_java_os_supported | - | role internal variable to check if a OS family is supported or not. | diff --git a/defaults/main.yml b/defaults/main.yml index a0f421e..b022c43 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -9,6 +9,7 @@ oracle_java_dir_source: '/usr/local/src' oracle_java_set_as_default: yes oracle_java_version: 8 -oracle_java_version_update: 112 -oracle_java_version_build: 15 oracle_java_version_string: "1.{{ oracle_java_version }}.0_{{ oracle_java_version_update }}" +oracle_java_ansible_arch_mappings: + x86_64: x64 + i386: i586 diff --git a/defaults/redhat.yml b/defaults/redhat.yml index 9dddd88..30ede94 100644 --- a/defaults/redhat.yml +++ b/defaults/redhat.yml @@ -7,7 +7,4 @@ oracle_java_home: "/usr/java/jdk1.{{ oracle_java_version }}.0_{{ oracle_java_version_update }}" oracle_java_os_supported: yes - -oracle_java_rpm_filename: "jdk-{{ oracle_java_version }}u{{ oracle_java_version_update }}-linux-x64.rpm" -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 }}" oracle_java_rpm_validate_certs: yes diff --git a/tasks/main.yml b/tasks/main.yml index 6aba5d7..d6b8da1 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -12,8 +12,8 @@ - name: include OS family/distribution specific variables include_vars: "{{ item }}" with_first_found: - - "defaults/{{ ansible_os_family | lower }}-{{ ansible_distribution | lower }}.yml" - - "defaults/{{ ansible_os_family | lower }}.yml" + - "{{ role_path }}/defaults/{{ ansible_os_family | lower }}-{{ ansible_distribution | lower }}.yml" + - "{{ role_path }}/defaults/{{ ansible_os_family | lower }}.yml" tags: installation - include: debug.yml diff --git a/tasks/redhat/main.yml b/tasks/redhat/main.yml index a0ee455..a5b1218 100644 --- a/tasks/redhat/main.yml +++ b/tasks/redhat/main.yml @@ -4,6 +4,49 @@ # Task file to install Oracle Java Development Kit in a system with a Redhat based Linux distribution. # +- name: get latest JDK download page + uri: + url: http://www.oracle.com/technetwork/java/javase/downloads/index.html + return_content: yes + register: result + +- name: determine latest java download page and version + set_fact: latest_java_page_and_version="{{ (result.content.replace('\n','')|regex_replace('.*(/technetwork/java/javase/downloads/jdk(\d+)-downloads.*?.html).*', 'http://www.oracle.com/\1\n\2')).split('\n') }}" + +- name: define download page URL based on latest version + set_fact: download_page_url="{{ latest_java_page_and_version[0] }}" + when: "{{ latest_java_page_and_version[1]|version_compare(oracle_java_version,'=') }}" + +- block: + + - name: get lastest JDK rpm url + uri: url="{{ result.content.replace('\n','')|regex_replace('.*(/technetwork/java/javase/archive-.*?.html).*','http://www.oracle.com/\1') }}" + return_content=yes + register: result + + - name: define download page URL for "{{ oracle_java_version }}" + set_fact: download_page_url="{{ result.content|regex_search('href=\"[^\"]+\">Java SE\s+' + (oracle_java_version|string) + '\s?<')|regex_replace('.*href=\"([^\"]+)\".*','http://www.oracle.com/\1') }}" + + when: "{{ latest_java_page_and_version[1]|version_compare(oracle_java_version,'!=') and oracle_java_version }}" + +- name: show download page URL + debug: msg="{{ download_page_url }}" + +- name: get lastest JDK rpm url + uri: url="{{ download_page_url }}" + return_content=yes + register: result + +- name: set oracle_java_rpm_url + set_fact: oracle_java_rpm_url="{{ result.content|regex_search('https?://download.oracle.com/.*?/jdk-\w+-linux-' + oracle_java_ansible_arch_mappings[ansible_architecture] + '.rpm') }}" + +- name: set some variables + set_fact: oracle_java_rpm_filename="{{ oracle_java_rpm_url | basename }}" + oracle_java_version="{{ oracle_java_rpm_url | basename|regex_replace('jdk-(\d+)u(\d+)-linux.*','\1') }}" + oracle_java_version_update="{{ oracle_java_rpm_url | basename|regex_replace('jdk-(\d+)u(\d+)-linux.*','\2') }}" + +- debug: msg="Downloading java {{ oracle_java_version }}u{{ oracle_java_version_update }} to {{ oracle_java_rpm_filename }} from {{ oracle_java_rpm_url }}" + - name: download Java RPM get_url: headers='Cookie:gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie' dest="{{ oracle_java_dir_source }}/{{ oracle_java_rpm_filename }}" diff --git a/tox.ini b/tox.ini index 61875b2..d06ea92 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{27}-ansible{22,21,20} + py{27}-ansible{23,22,21,20} skipsdist = True @@ -8,6 +8,7 @@ skipsdist = True [testenv] changedir = tests deps = + ansible23: ansible>=2.3,<2.4 ansible22: ansible>=2.2,<2.3 ansible21: ansible>=2.1,<2.2 ansible20: ansible>=2.0.0,<2.1