diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3318b20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.tox +*.retry +roles/provision_docker + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..4a245d8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,44 @@ +--- +sudo: required +language: python +python: + - "2.7" + +services: + - docker + +env: + global: + - ANSIBLE_HOST_KEY_CHECKING="False" + matrix: +# - TEST_NAME=3.6 +# - TEST_NAME=4.0 + - TEST_NAME=4.1 + - TEST_NAME=master +# https://bugzilla.redhat.com/show_bug.cgi?id=1525976 + - TEST_NAME=upgrade-4.1-to-master +# - TEST_NAME=upgrade-4.0-to-4.1 + +# Install python-pip +addons: + apt: + packages: + - python-pip + +install: + - pip install tox ansible docker-py + + # Check ansible version + - ansible --version + + # Install ansible role tests requirements + - ansible-galaxy install -r tests/requirements.yml -p tests/roles/ + +script: + # Run sytax checks and linters + - tox + # Execute oVirt engine deployment playbook + - ansible-playbook tests/test-${TEST_NAME}.yml -i tests/inventory --skip-tags skip-travis -vvv + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..22346bb --- /dev/null +++ b/.yamllint @@ -0,0 +1,6 @@ +--- +extends: default + +rules: + line-length: disable + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..cabb1f5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +ansible \ No newline at end of file diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..31bad98 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,3 @@ +ansible-lint +yamllint +flake8 diff --git a/tests/containers-deploy.yml b/tests/containers-deploy.yml new file mode 100644 index 0000000..515e4dd --- /dev/null +++ b/tests/containers-deploy.yml @@ -0,0 +1,15 @@ +--- +- name: Bring up docker containers + hosts: localhost + gather_facts: false + roles: + - role: provision_docker + provision_docker_inventory_group: "{{ groups['engine'] }}" + +- name: "Update python because of ovirt-imageio-proxy" + hosts: engine + tasks: + - name: Update python + yum: + name: python-libs + state: latest diff --git a/tests/engine-deploy.yml b/tests/engine-deploy.yml new file mode 100644 index 0000000..790d607 --- /dev/null +++ b/tests/engine-deploy.yml @@ -0,0 +1,17 @@ +--- +- name: Run ovirt-ansible roles on containerized environments + hosts: engine + vars_files: + - passwords.yml + vars: + ovirt_engine_setup_type: "ovirt-engine" + ovirt_engine_setup_version: "{{ ovirt_engine_setup_version }}" + ovirt_engine_setup_hostname: "localhost" + ovirt_engine_setup_organization: "example.com" + ovirt_engine_setup_dwh: true + ovirt_engine_setup_dwh_db_host: "localhost" + ovirt_engine_setup_firewall_manager: null + ovirt_repositories_ovirt_release_rpm: "{{ ovirt_release_rpm }}" + roles: + - role: oVirt.repositories + - role: oVirt.engine-setup diff --git a/tests/engine-upgrade.yml b/tests/engine-upgrade.yml new file mode 100644 index 0000000..30a6db0 --- /dev/null +++ b/tests/engine-upgrade.yml @@ -0,0 +1,20 @@ +--- +- name: Run ovirt-ansible roles on containerized environments + hosts: engine + vars_files: + - passwords.yml + vars: + ovirt_engine_setup_type: "ovirt-engine" + ovirt_engine_setup_version: "{{ ovirt_engine_setup_version }}" + ovirt_engine_setup_hostname: "localhost" + ovirt_engine_setup_organization: "example.com" + ovirt_engine_setup_dwh: true + ovirt_engine_setup_firewall_manager: null + ovirt_engine_setup_db_configure: false + ovirt_repositories_ovirt_release_rpm: "{{ ovirt_release_rpm }}" + roles: + - role: oVirt.repositories + - role: oVirt.engine-setup + # --accept-defaults needed because of: https://bugzilla.redhat.com/show_bug.cgi?id=1518697 + ovirt_engine_setup_accept_defaults: true + ovirt_engine_setup_answer_file_path: "answerfile_{{ ovirt_engine_setup_version }}_upgrade.txt.j2" diff --git a/tests/inventory b/tests/inventory new file mode 100644 index 0000000..9a315ca --- /dev/null +++ b/tests/inventory @@ -0,0 +1,4 @@ +localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python" + +[engine] +engine_centos7 image="katerinak/c7-systemd-utf8" diff --git a/tests/passwords.yml b/tests/passwords.yml new file mode 100644 index 0000000..80d6df4 --- /dev/null +++ b/tests/passwords.yml @@ -0,0 +1,12 @@ +--- +# As an example this file is keep in plaintext, if you want to +# encrypt this file, please execute following command: +# +# $ ansible-vault encrypt passwords.yml +# +# It will ask you for a password, which you must then pass to +# ansible interactively when executing the playbook. +# +# $ ansible-playbook myplaybook.yml --ask-vault-pass +# +ovirt_engine_setup_admin_password: 123456 diff --git a/tests/requirements.yml b/tests/requirements.yml new file mode 100644 index 0000000..159e73f --- /dev/null +++ b/tests/requirements.yml @@ -0,0 +1,4 @@ +--- +- src: chrismeyersfsu.provision_docker + name: provision_docker +- src: oVirt.repositories diff --git a/tests/roles/oVirt.engine-setup b/tests/roles/oVirt.engine-setup new file mode 120000 index 0000000..6581736 --- /dev/null +++ b/tests/roles/oVirt.engine-setup @@ -0,0 +1 @@ +../../ \ No newline at end of file diff --git a/tests/test-3.6.yml b/tests/test-3.6.yml new file mode 100644 index 0000000..ccb102b --- /dev/null +++ b/tests/test-3.6.yml @@ -0,0 +1,7 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_configure_iso_domain: true + ovirt_engine_setup_version: "3.6" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release36.rpm" diff --git a/tests/test-4.0.yml b/tests/test-4.0.yml new file mode 100644 index 0000000..38a7624 --- /dev/null +++ b/tests/test-4.0.yml @@ -0,0 +1,6 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_version: "4.0" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release40.rpm" diff --git a/tests/test-4.1.yml b/tests/test-4.1.yml new file mode 100644 index 0000000..534ebc8 --- /dev/null +++ b/tests/test-4.1.yml @@ -0,0 +1,6 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_version: "4.1" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm" diff --git a/tests/test-master.yml b/tests/test-master.yml new file mode 100644 index 0000000..c8cc21c --- /dev/null +++ b/tests/test-master.yml @@ -0,0 +1,6 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_version: "4.2" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release-master.rpm" diff --git a/tests/test-upgrade-4.0-to-4.1.yml b/tests/test-upgrade-4.0-to-4.1.yml new file mode 100644 index 0000000..17be35b --- /dev/null +++ b/tests/test-upgrade-4.0-to-4.1.yml @@ -0,0 +1,10 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_version: "4.0" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release40.rpm" +- import_playbook: engine-upgrade.yml + vars: + ovirt_engine_setup_version: "4.1" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm" diff --git a/tests/test-upgrade-4.1-to-master.yml b/tests/test-upgrade-4.1-to-master.yml new file mode 100644 index 0000000..52e4324 --- /dev/null +++ b/tests/test-upgrade-4.1-to-master.yml @@ -0,0 +1,10 @@ +--- +- import_playbook: containers-deploy.yml +- import_playbook: engine-deploy.yml + vars: + ovirt_engine_setup_version: "4.1" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release41.rpm" +- import_playbook: engine-upgrade.yml + vars: + ovirt_engine_setup_version: "4.2" + ovirt_release_rpm: "http://plain.resources.ovirt.org/pub/yum-repo/ovirt-release-master.rpm" diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..771bd20 --- /dev/null +++ b/tox.ini @@ -0,0 +1,35 @@ +[tox] +skipsdist = True +envlist = linters + +[testenv] +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +whitelist_externals = bash + + +[testenv:ansible-lint] +commands = bash -c "\ + ansible-lint "{toxinidir}"/tests/test*.yml" + +[testenv:yamllint] +commands = bash -c "\ + yamllint \ + -c {toxinidir}/.yamllint \ + {toxinidir}/tasks \ + {toxinidir}/tests/*.yml" + +[testenv:ansible-syntax] +commands = bash -c "\ + ansible-galaxy install -r tests/requirements.yml -p tests/roles/; \ + ansible-playbook \ + --syntax-check \ + --list-tasks \ + {toxinidir}/tests/test*.yml" + +[testenv:linters] +commands = + {[testenv:yamllint]commands} + {[testenv:ansible-syntax]commands} + {[testenv:ansible-lint]commands}