From 7e6518698413b052edbeffbe6a5081601e641207 Mon Sep 17 00:00:00 2001 From: Mike DePaulo Date: Wed, 5 Feb 2020 15:01:51 -0500 Subject: [PATCH] ansible-pulp CI should test the calling roles from dynamic "include_role" with the source dirs of the branch Implementation includes: 1. new source-dynamic scenario, using vars from example-source 2. "dynamic" now uses same vars as in example-use (which facilitates documentation for users.) fixes: #6071 https://pulp.plan.io/issues/6071 --- molecule/dynamic/group_vars | 1 + molecule/dynamic/group_vars/all | 14 ----- molecule/dynamic/playbook.yml | 9 ++- molecule/source-dynamic/.ansible-lint | 1 + molecule/source-dynamic/Dockerfile.j2 | 1 + .../debian-redis-server.service | 1 + molecule/source-dynamic/group_vars | 1 + molecule/source-dynamic/molecule.yml | 57 +++++++++++++++++++ molecule/source-dynamic/playbook.yml | 25 ++++++++ molecule/source-dynamic/prepare.yml | 1 + molecule/source-dynamic/requirements.yml | 1 + molecule/source-dynamic/roles | 1 + molecule/source-upgrade/prepare.yml | 43 +------------- tox.ini | 6 +- 14 files changed, 103 insertions(+), 59 deletions(-) create mode 120000 molecule/dynamic/group_vars delete mode 100644 molecule/dynamic/group_vars/all create mode 120000 molecule/source-dynamic/.ansible-lint create mode 120000 molecule/source-dynamic/Dockerfile.j2 create mode 120000 molecule/source-dynamic/debian-redis-server.service create mode 120000 molecule/source-dynamic/group_vars create mode 100644 molecule/source-dynamic/molecule.yml create mode 100644 molecule/source-dynamic/playbook.yml create mode 120000 molecule/source-dynamic/prepare.yml create mode 120000 molecule/source-dynamic/requirements.yml create mode 120000 molecule/source-dynamic/roles mode change 100644 => 120000 molecule/source-upgrade/prepare.yml diff --git a/molecule/dynamic/group_vars b/molecule/dynamic/group_vars new file mode 120000 index 000000000..28fe9700f --- /dev/null +++ b/molecule/dynamic/group_vars @@ -0,0 +1 @@ +../../example-use/group_vars \ No newline at end of file diff --git a/molecule/dynamic/group_vars/all b/molecule/dynamic/group_vars/all deleted file mode 100644 index 9a7df874a..000000000 --- a/molecule/dynamic/group_vars/all +++ /dev/null @@ -1,14 +0,0 @@ ---- -pulp_default_admin_password: password -pulp_install_db: true -pulp_roles: - - pulp-database - - pulp-workers - - pulp-resource-manager - - pulp-webserver - - pulp-content -pulp_install_plugins: - pulp-file: {} -pulp_settings: - secret_key: secret - content_origin: "http://{{ ansible_fqdn }}" diff --git a/molecule/dynamic/playbook.yml b/molecule/dynamic/playbook.yml index 3dcbe05b8..63951171c 100644 --- a/molecule/dynamic/playbook.yml +++ b/molecule/dynamic/playbook.yml @@ -8,11 +8,16 @@ that: "ansible_version.full is version_compare('2.8', '>=')" msg: > "You must update Ansible to at least 2.8 to use this version of Pulp 3 Installer." - + tasks: - name: Dynamically include prereq roles include_role: name: "{{ roleinputvar }}" - loop: "{{ pulp_roles }}" + loop: + - pulp-database + - pulp-workers + - pulp-resource-manager + - pulp-webserver + - pulp-content loop_control: loop_var: roleinputvar environment: diff --git a/molecule/source-dynamic/.ansible-lint b/molecule/source-dynamic/.ansible-lint new file mode 120000 index 000000000..3da8d984e --- /dev/null +++ b/molecule/source-dynamic/.ansible-lint @@ -0,0 +1 @@ +../../.ansible-lint \ No newline at end of file diff --git a/molecule/source-dynamic/Dockerfile.j2 b/molecule/source-dynamic/Dockerfile.j2 new file mode 120000 index 000000000..0104fa8c8 --- /dev/null +++ b/molecule/source-dynamic/Dockerfile.j2 @@ -0,0 +1 @@ +../scenario_resources/Dockerfile.j2 \ No newline at end of file diff --git a/molecule/source-dynamic/debian-redis-server.service b/molecule/source-dynamic/debian-redis-server.service new file mode 120000 index 000000000..f78c356f6 --- /dev/null +++ b/molecule/source-dynamic/debian-redis-server.service @@ -0,0 +1 @@ +../scenario_resources/debian-redis-server.service \ No newline at end of file diff --git a/molecule/source-dynamic/group_vars b/molecule/source-dynamic/group_vars new file mode 120000 index 000000000..17056e780 --- /dev/null +++ b/molecule/source-dynamic/group_vars @@ -0,0 +1 @@ +../../example-source/group_vars \ No newline at end of file diff --git a/molecule/source-dynamic/molecule.yml b/molecule/source-dynamic/molecule.yml new file mode 100644 index 000000000..abc2f0338 --- /dev/null +++ b/molecule/source-dynamic/molecule.yml @@ -0,0 +1,57 @@ +--- +dependency: + name: galaxy + role-file: requirements.yml +driver: + name: docker +lint: + name: yamllint +# This is ignored by molecule, but can be reused in yaml +.platform_base: &platform_base + privileged: False + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + tmpfs: + - /tmp + - /run + - /run/lock + capabilities: + - NET_ADMIN + - NET_RAW +platforms: + - <<: *platform_base + name: debian-10 + image: debian:buster + command: /sbin/init + - <<: *platform_base + name: fedora-31 + image: fedora:31 + command: /usr/sbin/init +provisioner: + name: ansible + inventory: + links: + host_vars: ../scenario_resources/host_vars/ + group_vars: ../scenario_resources/group_vars/ + lint: + name: ansible-lint +scenario: + name: source-dynamic + test_sequence: + - lint + - dependency + - syntax + - create + - prepare + - converge + - idempotence + - side_effect + - verify + playbooks: + prepare: prepare.yml + +verifier: + name: inspec + lint: + name: rubocop + enabled: false diff --git a/molecule/source-dynamic/playbook.yml b/molecule/source-dynamic/playbook.yml new file mode 100644 index 000000000..a93de2263 --- /dev/null +++ b/molecule/source-dynamic/playbook.yml @@ -0,0 +1,25 @@ +--- +- hosts: all + pre_tasks: + # The version string below is the highest of all those in roles' metadata: + # "min_ansible_version". It needs to be kept manually up-to-date. + - name: Verify Ansible meets min required version + assert: + that: "ansible_version.full is version_compare('2.8', '>=')" + msg: > + "You must update Ansible to at least 2.8 to use this version of Pulp 3 Installer." + tasks: + - name: Dynamically include prereq roles + include_role: + name: "{{ roleinputvar }}" + loop: + - pulp-database + - pulp-workers + - pulp-resource-manager + - pulp-webserver + - pulp-content + - pulp-devel + loop_control: + loop_var: roleinputvar + environment: + DJANGO_SETTINGS_MODULE: pulpcore.app.settings diff --git a/molecule/source-dynamic/prepare.yml b/molecule/source-dynamic/prepare.yml new file mode 120000 index 000000000..c0cd57fd3 --- /dev/null +++ b/molecule/source-dynamic/prepare.yml @@ -0,0 +1 @@ +../source/prepare.yml \ No newline at end of file diff --git a/molecule/source-dynamic/requirements.yml b/molecule/source-dynamic/requirements.yml new file mode 120000 index 000000000..9a736435a --- /dev/null +++ b/molecule/source-dynamic/requirements.yml @@ -0,0 +1 @@ +../../requirements.yml \ No newline at end of file diff --git a/molecule/source-dynamic/roles b/molecule/source-dynamic/roles new file mode 120000 index 000000000..b741aa3db --- /dev/null +++ b/molecule/source-dynamic/roles @@ -0,0 +1 @@ +../../roles \ No newline at end of file diff --git a/molecule/source-upgrade/prepare.yml b/molecule/source-upgrade/prepare.yml deleted file mode 100644 index b6a57bfef..000000000 --- a/molecule/source-upgrade/prepare.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -- hosts: - - all - tasks: - - name: Install required packages - package: - name: - - git - state: present - - - name: Create user {{ developer_user }} - user: - name: '{{ developer_user }}' - home: '{{ developer_user_home }}' - when: developer_user is defined - - - name: Clone pulp repository - git: - repo: 'https://github.com/pulp/pulpcore.git' - dest: '{{ pulp_source_dir }}' - update: yes - - - name: Clone pulp_file repository - git: - repo: 'https://github.com/pulp/pulp_file.git' - dest: '{{ item.value.source_dir }}' - update: yes - with_dict: '{{ pulp_install_plugins }}' - - - name: Make devel directory world-writable - file: - path: /var/lib/pulp/ - state: directory - mode: 0777 - recurse: true - become: true - - - name: Hot patch redis-server service for docker operation (Debian) - copy: - src: debian-redis-server.service - dest: /etc/systemd/system/redis-server.service - when: ansible_distribution == "Debian" diff --git a/molecule/source-upgrade/prepare.yml b/molecule/source-upgrade/prepare.yml new file mode 120000 index 000000000..c0cd57fd3 --- /dev/null +++ b/molecule/source-upgrade/prepare.yml @@ -0,0 +1 @@ +../source/prepare.yml \ No newline at end of file diff --git a/tox.ini b/tox.ini index 7dc1873bc..c73fa3a86 100644 --- a/tox.ini +++ b/tox.ini @@ -34,7 +34,11 @@ sitepackages = {[testenv]sitepackages} deps = {[testenv]deps} passenv = {[testenv]passenv} whitelist_externals = {[testenv]whitelist_externals} -commands = {env:TRAVIS_WAIT:} molecule test -s dynamic +commands = + {env:TRAVIS_WAIT:} molecule test -s dynamic + molecule destroy -s dynamic + molecule test -s source-dynamic + # only the last scenario should lack a "destroy" task. (It wastes time, and makes debugging more difficult.) [testenv:py36-dynamic] sitepackages = {[testenv]sitepackages}