From 617c8f2de47d53b11ebed60c6cdfe7d020a120a7 Mon Sep 17 00:00:00 2001 From: Roman Belyakovsky Date: Fri, 26 May 2017 17:54:46 +0200 Subject: [PATCH 1/4] Implemented rpm search on oracle site, fixes #34 --- README.md | 2 -- defaults/main.yml | 5 +++-- defaults/redhat.yml | 3 --- tasks/redhat/main.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 7 deletions(-) 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/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 }}" From 9b01a4a572e306503116a9b7741a8d83909194a0 Mon Sep 17 00:00:00 2001 From: Pedro Salgado Date: Fri, 2 Jun 2017 08:08:15 -0600 Subject: [PATCH 2/4] tox.ini: test using ansible 2.3.0. --- tox.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 From 578a15b542ea86e61a8c15568ffedc81a812121f Mon Sep 17 00:00:00 2001 From: Pedro Salgado Date: Fri, 2 Jun 2017 08:15:45 -0600 Subject: [PATCH 3/4] .travis.yml: test ansible 2.3 on travis-ci. --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 - From 723afed0045b6bafc4792e3f26dae873bd8c595d Mon Sep 17 00:00:00 2001 From: Jon Wolski Date: Mon, 19 Jun 2017 12:45:54 -0500 Subject: [PATCH 4/4] Resolve file path with `{{ role_path }}` I was getting errors with this playbook when executing "include OS family/distribution specific variables." Even though my `ansible_os_family` is `RedHat`, `with_first_found` was finding no results. (I am running Centos 7, but I confirmed the `RedHat` value in the ansible facts with `ansible all -m setup`.) When I prepended the `defaults/...` relative path with `{{ role_path }}`, this playbook ran successfully. --- tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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