diff --git a/.gitignore b/.gitignore index 4ac77ae..16e5fb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +*.retry +**/dependencies/* + # Created by https://www.gitignore.io ### Vagrant ### diff --git a/.travis.yml b/.travis.yml index 642fc20..c6d0f94 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,28 @@ language: python -python: 2.7 sudo: yes -cache: apt - -before_install: - - sudo apt-get update +matrix: + include: + - python: 2.7 + env: TOXENV=py27-ansible21 + - python: 2.7 + env: TOXENV=py27-ansible20 + - python: 2.7 + env: TOXENV=py27-ansible19 install: - pip install tox script: - - tox -e travis + - tox + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ + +before_cache: + - rm -f ${HOME}/.cache/pip/log/debug.log + +cache: + directories: + - ${HOME}/.cache/pip diff --git a/README.md b/README.md index bbbb66f..d0c3aa9 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ DISCLAIMER: usage of any version of this role implies you have accepted the | variable | default | description | |:--------:|:-------:|:------------| +| debug | undefined | flag to make role more verbose. | | oracle_java_set_as_default | no | 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. | diff --git a/meta/main.yml b/meta/main.yml index 37c3bed..b4e99aa 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -3,6 +3,7 @@ # # meta file # + galaxy_info: author: Pedro Salgado description: Role to install Oracle Java. @@ -35,6 +36,7 @@ galaxy_info: - development - java - system + dependencies: - role: ansiblebit.launchpad-ppa-webupd8 - when: (ansible_distribution | lower == 'debian') or (ansible_distribution | lower == 'ubuntu') + when: ansible_distribution | lower == 'debian' or ansible_distribution | lower == 'ubuntu' diff --git a/tasks/check_environment.yml b/tasks/check_environment.yml index 4c5bafb..8793621 100644 --- a/tasks/check_environment.yml +++ b/tasks/check_environment.yml @@ -6,21 +6,14 @@ # - which Java version is installed? # -# determine if Java is already installed - -- name: register oracle_java_installed - shell: "which java" +- name: determine if Java is already installed + shell: which java register: oracle_java_task_installed ignore_errors: yes changed_when: False # oracle_java_installed.rc == 0 : installed # oracle_java_installed.rc == 1 : not installed -- debug: - var=oracle_java_task_installed - when: oracle_java_task_installed is defined - tags: - - debug - name: set fact oracle_java_installed set_fact: @@ -28,27 +21,12 @@ when: oracle_java_task_installed is defined and oracle_java_task_installed.rc is defined changed_when: False -- debug: - var=oracle_java_installed - when: oracle_java_installed is defined - tags: - - debug - - -# determine which Java version is installed - -- name: if Java is installed, check version +- 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 register: oracle_java_task_version changed_when: False -- debug: - var=oracle_java_task_version - when: oracle_java_task_version is defined - tags: - - debug - - name: set fact oracle_java_installed_version set_fact: oracle_java_version_installed={{ oracle_java_task_version.stdout }} @@ -56,13 +34,11 @@ changed_when: False - debug: - var=oracle_java_version_installed - when: oracle_java_version_installed is defined - tags: - - debug - -- debug: - var=oracle_java_version_string - when: oracle_java_version_string is defined - tags: - - debug + var="{{ item }}" + when: "{{ item }} is defined and debug | default(false)" + with_items: + - oracle_java_installed + - oracle_java_task_installed + - oracle_java_task_version + - oracle_java_version_installed + - oracle_java_version_string diff --git a/tasks/debug.yml b/tasks/debug.yml index 4831bf0..26654cf 100644 --- a/tasks/debug.yml +++ b/tasks/debug.yml @@ -4,57 +4,18 @@ # Task that prints variable debug information. # -- name: echo oracle_java_cache_valid_time - debug: - var=oracle_java_cache_valid_time - when: oracle_java_cache_valid_time is defined - -- name: echo oracle_java_home - debug: - var=oracle_java_home - when: oracle_java_home is defined - -- name: echo oracle_java_installed - debug: - var=oracle_java_installed - when: oracle_java_installed is defined - -- name: echo oracle_java_os_supported - debug: - var=oracle_java_os_supported - when: oracle_java_os_supported is defined - -- name: echo oracle_java_rpm_filename - debug: - var=oracle_java_rpm_filename - when: oracle_java_rpm_filename is defined - -- name: echo oracle_java_set_as_default - debug: - var=oracle_java_set_as_default - when: oracle_java_set_as_default is defined - -- name: echo oracle_java_rpm_url - debug: - var=oracle_java_rpm_url - when: oracle_java_rpm_url is defined - -- name: echo oracle_java_state - debug: - var=oracle_java_state - when: oracle_java_state is defined - -- name: echo oracle_java_version_build - debug: - var=oracle_java_version_build - when: oracle_java_version_build is defined - -- name: echo oracle_java_version_installed - debug: - var=oracle_java_version_installed - when: oracle_java_version_installed is defined - -- name: echo oracle_java_version_string - debug: - var=oracle_java_version_string - when: oracle_java_version_string is defined +- debug: + var="{{ item }}" + when: "{{ item }} is defined" + with_items: + - oracle_java_cache_valid_time + - oracle_java_home + - oracle_java_installed + - oracle_java_os_supported + - oracle_java_rpm_filename + - oracle_java_set_as_default + - oracle_java_rpm_url + - oracle_java_state + - oracle_java_version_build + - oracle_java_version_installed + - oracle_java_version_string diff --git a/tasks/main.yml b/tasks/main.yml index 17c1788..17a1a7e 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -16,10 +16,9 @@ - "../defaults/{{ ansible_distribution | lower }}.yml" - "../defaults/{{ ansible_os_family | lower }}.yml" -- name: debug variables - include: debug.yml - tags: - - debug +- include: debug.yml + when: debug | default(false) + tags: debug ## include OS family specific task file diff --git a/tests/ansible.cfg b/tests/ansible.cfg index 98d5928..992355f 100644 --- a/tests/ansible.cfg +++ b/tests/ansible.cfg @@ -1,8 +1,10 @@ [defaults] +ansible_managed = Ansible managed file, do not edit directly callback_plugins = plugins/callback host_key_checking = False private_key_file = ~/.vagrant.d/insecure_private_key -roles_path = ../../:../ +roles_path = ../../:../:dependencies + diff --git a/tests/dependencies/.gitkeep b/tests/dependencies/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/plugins/callback/idempotence.py b/tests/plugins/callback/idempotence.py index f583e1b..e7f00ef 100644 --- a/tests/plugins/callback/idempotence.py +++ b/tests/plugins/callback/idempotence.py @@ -47,3 +47,4 @@ def playbook_on_stats(self, stats): def v2_playbook_on_stats(self, stats): """Verify that playbook ran without any changes or failures.""" self.playbook_on_stats(stats) + diff --git a/tests/setup.sh b/tests/setup.sh new file mode 100644 index 0000000..47fa6eb --- /dev/null +++ b/tests/setup.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# ################# +# +# Bash script to setup the test environment. +# +# version: 1.0 +# +# usage: +# +# setup.sh +# +# example: +# +# bash setup.sh +# +# changelog: +# +# v1.0 : 10 June 2016 +# - initial version +# +# author(s): +# - Pedro Salgado +# +# ################# + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +test -s ${DIR}/../requirements.yml \ + && ansible-galaxy install \ + --force \ + -r ${DIR}/../requirements.yml \ + --roles-path=${DIR}/dependencies \ + || true diff --git a/tests/test.yml b/tests/test.yml index 0597b58..f46ffcf 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -6,17 +6,18 @@ gather_facts: yes vars: + debug: yes test_java_version: 8 - test_java_version_update: 74 - test_java_version_build: 15 + test_java_version_update: 91 + test_java_version_build: 14 roles: - - { role: oracle-java, - oracle_java_version: "{{ test_java_version }}", - oracle_java_version_update: "{{ test_java_version_update }}", - oracle_java_version_build: "{{ test_java_version_build }}", - oracle_java_set_as_default: yes } + - role: oracle-java + oracle_java_version: "{{ test_java_version }}" + oracle_java_version_update: "{{ test_java_version_update }}" + oracle_java_version_build: "{{ test_java_version_build }}" + oracle_java_set_as_default: yes - - { role: tests, - expected_java_version: "1.{{ test_java_version }}.0_{{ test_java_version_update }}", - tags: test } + - role: tests + expected_java_version: "1.{{ test_java_version }}.0_{{ test_java_version_update }}" + tags: test diff --git a/tests/test_checkmode.sh b/tests/test_checkmode.sh index 5985891..809cb6f 100644 --- a/tests/test_checkmode.sh +++ b/tests/test_checkmode.sh @@ -115,3 +115,4 @@ ansible-playbook -vvvv --check --diff -i ${INVENTORY} --limit ${BOX}, ${EXTRA_AR cat ${LOGFILE} && echo -ne "[TEST] ${BOX} ${VIRTUALENV_NAME} checkmode : ${RED}FAILED${NC} ${PASS_CRITERIA}\n" && \ exit 1) + diff --git a/tests/test_idempotence.sh b/tests/test_idempotence.sh index 6d2acc2..17e71c6 100644 --- a/tests/test_idempotence.sh +++ b/tests/test_idempotence.sh @@ -116,3 +116,4 @@ IDEMPOTENCE='yes' \ cat ${LOGFILE} && echo -ne "[TEST] ${BOX} ${VIRTUALENV_NAME} idempotence : ${RED}FAILED${NC} ${PASS_CRITERIA}\n" && \ exit 1) + diff --git a/tests/travis.sh b/tests/travis.sh new file mode 100644 index 0000000..5771405 --- /dev/null +++ b/tests/travis.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# ################# +# +# Bash script to run tests in the travis-ci environment. +# +# version: 1.0 +# +# usage: +# +# travis.sh +# +# example: +# +# bash travis.sh +# +# changelog: +# +# v1.0 : 10 June 2016 +# - initial version +# +# author(s): +# - Pedro Salgado +# +# ################# + +test $USER != 'travis' && exit 0 + +set -e + +ansible-playbook \ + -i localhost, \ + --connection=local test.yml \ + -e vagrant_box=localhost \ + -e env=travis \ + --skip-tags=test \ + $@ \ +&& bash test_checkmode.sh \ + --env travis \ +&& bash test_idempotence.sh \ + --env travis + diff --git a/tox.ini b/tox.ini index 7950821..b8c58df 100644 --- a/tox.ini +++ b/tox.ini @@ -1,37 +1,25 @@ [tox] envlist = - {py27}-{ansible2010,ansible194} + {py27}-{ansible21,ansible20,ansible19} skipsdist = True [testenv] changedir = tests + deps = - travis: ansible - ansible2010: ansible==2.0.1.0 - ansible194: ansible==1.9.4 + ansible21: ansible==2.1.* + ansible20: ansible==2.0.* + ansible19: ansible==1.9.* -passenv = ANSIBLE_ASK_SUDO_PASS HOME LANG LC_ALL +passenv = ANSIBLE_ASK_SUDO_PASS HOME LANG LC_ALL TRAVIS USER commands = - bash -c "test -s ../requirements.yml && ansible-galaxy install --force -r ../requirements.yml || true" + bash setup.sh + bash travis.sh {posargs} bash vagrant.sh {posargs} -whitelist_externals = - bash - - -[testenv:travis] -passenv = ANSIBLE_ASK_SUDO_PASS HOME TRAVIS - -commands = - bash -c "test -s ../requirements.yml && ansible-galaxy install --force -r ../requirements.yml || true" - ansible-playbook -i localhost, --connection=local test.yml -e vagrant_box=localhost {posargs} --skip-tags=test - bash test_checkmode.sh --env travis - bash test_idempotence.sh --env travis - whitelist_externals = ansible-playbook bash -