From fdbd1a8c9b73ada07f90cbb4d0637a35cf7134c2 Mon Sep 17 00:00:00 2001 From: Alex Willmer Date: Wed, 26 Feb 2025 12:13:11 +0000 Subject: [PATCH] ci: Configure package managers using a role This allows code sharing between integration tests and test image prep. --- tests/ansible/hosts/group_vars/all.yml | 1 - tests/ansible/hosts/group_vars/centos8.yml | 2 +- tests/ansible/hosts/group_vars/debian11.yml | 5 ++++ tests/ansible/hosts/group_vars/debian9.yml | 2 +- .../issue_776__load_plugins_called_twice.yml | 28 ++++-------------- tests/image_prep/_container_setup.yml | 1 + .../roles/package_manager/defaults/main.yml | 2 ++ .../debian-archive-bookworm-automatic.gpg | Bin .../debian-archive-bullseye-automatic.gpg | Bin .../roles/package_manager/tasks/main.yml | 13 ++++++++ tox.ini | 1 + 11 files changed, 29 insertions(+), 26 deletions(-) create mode 100644 tests/ansible/hosts/group_vars/debian11.yml create mode 100644 tests/image_prep/roles/package_manager/defaults/main.yml rename tests/{ansible/regression => image_prep/roles/package_manager}/files/debian-archive-bookworm-automatic.gpg (100%) rename tests/{ansible/regression => image_prep/roles/package_manager}/files/debian-archive-bullseye-automatic.gpg (100%) create mode 100644 tests/image_prep/roles/package_manager/tasks/main.yml diff --git a/tests/ansible/hosts/group_vars/all.yml b/tests/ansible/hosts/group_vars/all.yml index 44e660fc..fa70b89d 100644 --- a/tests/ansible/hosts/group_vars/all.yml +++ b/tests/ansible/hosts/group_vars/all.yml @@ -27,4 +27,3 @@ become_unpriv_available: >- -}} pkg_mgr_python_interpreter: python -pkg_repos_overrides: [] diff --git a/tests/ansible/hosts/group_vars/centos8.yml b/tests/ansible/hosts/group_vars/centos8.yml index c90dd5f4..5ab4577d 100644 --- a/tests/ansible/hosts/group_vars/centos8.yml +++ b/tests/ansible/hosts/group_vars/centos8.yml @@ -1,7 +1,7 @@ --- pkg_mgr_python_interpreter: /usr/libexec/platform-python -pkg_repos_overrides: +package_manager_repos: - dest: /etc/yum.repos.d/CentOS-Linux-AppStream.repo content: | [appstream] diff --git a/tests/ansible/hosts/group_vars/debian11.yml b/tests/ansible/hosts/group_vars/debian11.yml new file mode 100644 index 00000000..9f62f43c --- /dev/null +++ b/tests/ansible/hosts/group_vars/debian11.yml @@ -0,0 +1,5 @@ +package_manager_keys: + - src: debian-archive-bullseye-automatic.gpg # Debian 11 + dest: /etc/apt/trusted.gpg.d/debian-archive-bullseye-automatic.gpg + - src: debian-archive-bookworm-automatic.gpg # Debian 12 + dest: /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.gpg diff --git a/tests/ansible/hosts/group_vars/debian9.yml b/tests/ansible/hosts/group_vars/debian9.yml index 4b180b13..e08b1ed2 100644 --- a/tests/ansible/hosts/group_vars/debian9.yml +++ b/tests/ansible/hosts/group_vars/debian9.yml @@ -1,4 +1,4 @@ -pkg_repos_overrides: +package_manager_repos: - dest: /etc/apt/sources.list content: | deb http://archive.debian.org/debian stretch main contrib non-free diff --git a/tests/ansible/regression/issue_776__load_plugins_called_twice.yml b/tests/ansible/regression/issue_776__load_plugins_called_twice.yml index ef573276..d482c41c 100755 --- a/tests/ansible/regression/issue_776__load_plugins_called_twice.yml +++ b/tests/ansible/regression/issue_776__load_plugins_called_twice.yml @@ -10,7 +10,7 @@ vars: ansible_python_interpreter: "{{ pkg_mgr_python_interpreter }}" package: rsync # Chosen to exist in all tested distros/package managers - tasks: + pre_tasks: # The package management modules require using the same Python version # as the target's package manager libraries. This is sometimes in conflict # with Ansible requirements, e.g. Ansible 10 (ansible-core 2.17) does not @@ -19,31 +19,13 @@ when: - ansible_version.full is version('2.17', '>=', strict=True) + roles: + - role: package_manager + + tasks: - name: Gather facts manually setup: - - name: Switch to archived package repositories - copy: - dest: "{{ item.dest }}" - content: "{{ item.content }}" - mode: u=rw,go=r - loop: "{{ pkg_repos_overrides }}" - loop_control: - label: "{{ item.dest }}" - - - name: Add signing keys - copy: - src: "{{ item.src }}" - dest: "/etc/apt/trusted.gpg.d/{{ item.src | basename }}" - mode: u=rw,go=r - loop: - - src: debian-archive-bullseye-automatic.gpg # Debian 11 - - src: debian-archive-bookworm-automatic.gpg # Debian 12 - when: - # Ideally this would check for Debian 11, but distribution_major_version - # is unpopulated sometimes. - - ansible_facts.distribution == "Debian" - - name: Update package index apt: update_cache: true diff --git a/tests/image_prep/_container_setup.yml b/tests/image_prep/_container_setup.yml index 06cfc967..4aa3b46d 100644 --- a/tests/image_prep/_container_setup.yml +++ b/tests/image_prep/_container_setup.yml @@ -31,6 +31,7 @@ - ansible_facts.virtualization_type != "docker" roles: + - role: package_manager - role: sshd - role: sshd_container diff --git a/tests/image_prep/roles/package_manager/defaults/main.yml b/tests/image_prep/roles/package_manager/defaults/main.yml new file mode 100644 index 00000000..c384b19a --- /dev/null +++ b/tests/image_prep/roles/package_manager/defaults/main.yml @@ -0,0 +1,2 @@ +package_manager_keys: [] +package_manager_repos: [] diff --git a/tests/ansible/regression/files/debian-archive-bookworm-automatic.gpg b/tests/image_prep/roles/package_manager/files/debian-archive-bookworm-automatic.gpg similarity index 100% rename from tests/ansible/regression/files/debian-archive-bookworm-automatic.gpg rename to tests/image_prep/roles/package_manager/files/debian-archive-bookworm-automatic.gpg diff --git a/tests/ansible/regression/files/debian-archive-bullseye-automatic.gpg b/tests/image_prep/roles/package_manager/files/debian-archive-bullseye-automatic.gpg similarity index 100% rename from tests/ansible/regression/files/debian-archive-bullseye-automatic.gpg rename to tests/image_prep/roles/package_manager/files/debian-archive-bullseye-automatic.gpg diff --git a/tests/image_prep/roles/package_manager/tasks/main.yml b/tests/image_prep/roles/package_manager/tasks/main.yml new file mode 100644 index 00000000..f0bc8ad8 --- /dev/null +++ b/tests/image_prep/roles/package_manager/tasks/main.yml @@ -0,0 +1,13 @@ +- name: Add signing keys + copy: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + mode: u=rw,go=r + with_items: "{{ package_manager_keys }}" + +- name: Configure package repositories + copy: + dest: "{{ item.dest }}" + content: "{{ item.content }}" + mode: u=rw,go=r + with_items: "{{ package_manager_repos }}" diff --git a/tox.ini b/tox.ini index bd2d65e9..ddb8c88d 100644 --- a/tox.ini +++ b/tox.ini @@ -100,6 +100,7 @@ passenv = HOME MITOGEN_* setenv = + ANSIBLE_ROLES_PATH = {toxinidir}/tests/image_prep/roles # See also azure-pipelines.yml ANSIBLE_STRATEGY = mitogen_linear NOCOVERAGE_ERASE = 1