From a4c8559e4cea443808e8ebb0e78e5fd119843669 Mon Sep 17 00:00:00 2001 From: Kalle Kiviaho Date: Fri, 24 Jul 2026 09:50:57 +0200 Subject: [PATCH] Move standard package lists to __mariadb_packages vars; clarify test guards - Define __mariadb_packages (+ __mariadb_packages_mdbf for RedHat) in vars/ and set_fact them in variables.yml, matching the role's variable pattern; install tasks now use `mariadb_packages + mariadb_packages_extra` for clearer diffs and user-overridable base lists. - Comment why rsync is used as the extra test package. - Verify guard: use `mariadb_packages_extra | length > 0` (drop redundant default([]) since defaults/main.yml already provides []); comment why the explicit boolean is needed (ansible-core 2.19 rejects a non-boolean when:). --- molecule/default/vars/testvars.yml | 2 ++ molecule/default/verify.yml | 7 +++++-- tasks/setup_alpine.yml | 2 +- tasks/setup_debian.yml | 2 +- tasks/setup_redhat.yml | 4 ++-- tasks/variables.yml | 12 ++++++++++++ vars/Alpine.yml | 5 +++++ vars/Debian.yml | 4 ++++ vars/RedHat.yml | 8 ++++++++ 9 files changed, 40 insertions(+), 6 deletions(-) diff --git a/molecule/default/vars/testvars.yml b/molecule/default/vars/testvars.yml index a00109f..9a18123 100644 --- a/molecule/default/vars/testvars.yml +++ b/molecule/default/vars/testvars.yml @@ -3,6 +3,8 @@ mariadb_server_id: 1 mariadb_bind_address: 0.0.0.0 mariadb_replication_role: primary +# rsync is an arbitrary, lightweight package available in every target distro's +# repos; it exercises the mariadb_packages_extra path without pulling in anything heavy. mariadb_packages_extra: - rsync diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 8cce090..8c93c46 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -20,19 +20,22 @@ that: not pkg_status.changed fail_msg: "{{ mariadb_server_package }} is not installed" + # `when: mariadb_packages_extra` relied on a list being implicitly truthy. + # ansible-core 2.19 rejects a non-boolean `when:` as an error, so the + # "list is non-empty" check must be explicit: `| length > 0`. - name: Verify extra packages status ansible.builtin.package: name: "{{ mariadb_packages_extra }}" state: present check_mode: true register: extra_pkg_status - when: mariadb_packages_extra | default([]) | length > 0 + when: mariadb_packages_extra | length > 0 - name: Check that extra packages are installed ansible.builtin.assert: that: not extra_pkg_status.changed fail_msg: "extra packages {{ mariadb_packages_extra }} are not installed" - when: mariadb_packages_extra | default([]) | length > 0 + when: mariadb_packages_extra | length > 0 - name: Register {{ mariadb_config_file }} ansible.builtin.stat: diff --git a/tasks/setup_alpine.yml b/tasks/setup_alpine.yml index 64b9c12..83aaa52 100644 --- a/tasks/setup_alpine.yml +++ b/tasks/setup_alpine.yml @@ -1,7 +1,7 @@ --- - name: Install packages (package) ansible.builtin.package: - name: "{{ [mariadb_server_package, 'mariadb-backup', 'mariadb-client', 'py3-pymysql'] + mariadb_packages_extra }}" + name: "{{ mariadb_packages + mariadb_packages_extra }}" state: present notify: Setup MariaDB diff --git a/tasks/setup_debian.yml b/tasks/setup_debian.yml index dad8bda..3cd6fac 100644 --- a/tasks/setup_debian.yml +++ b/tasks/setup_debian.yml @@ -77,6 +77,6 @@ - name: Install packages (apt) ansible.builtin.apt: - package: "{{ [mariadb_server_package, 'mariadb-backup', 'python3-pymysql'] + mariadb_packages_extra }}" + package: "{{ mariadb_packages + mariadb_packages_extra }}" state: present update_cache: true diff --git a/tasks/setup_redhat.yml b/tasks/setup_redhat.yml index 2f0776b..2540b61 100644 --- a/tasks/setup_redhat.yml +++ b/tasks/setup_redhat.yml @@ -22,13 +22,13 @@ - name: Install packages (dnf) ansible.builtin.dnf: - name: "{{ [mariadb_server_package, 'mariadb-backup', 'python3-PyMySQL'] + mariadb_packages_extra }}" + name: "{{ mariadb_packages + mariadb_packages_extra }}" state: present when: not mariadb_use_official_repo - name: Install packages (dnf/mdbf repo) ansible.builtin.dnf: - name: "{{ [mariadb_server_package_mdbf, 'MariaDB-backup', 'python3-PyMySQL'] + mariadb_packages_extra }}" + name: "{{ mariadb_packages_mdbf + mariadb_packages_extra }}" state: present when: mariadb_use_official_repo diff --git a/tasks/variables.yml b/tasks/variables.yml index 0ba6527..467c714 100644 --- a/tasks/variables.yml +++ b/tasks/variables.yml @@ -28,6 +28,18 @@ - ansible_facts.os_family == "RedHat" - mariadb_server_package_mdbf is not defined +- name: Define mariadb_packages. + ansible.builtin.set_fact: + mariadb_packages: "{{ __mariadb_packages }}" + when: mariadb_packages is not defined + +- name: Define mariadb_packages_mdbf. + ansible.builtin.set_fact: + mariadb_packages_mdbf: "{{ __mariadb_packages_mdbf }}" + when: + - ansible_facts.os_family == "RedHat" + - mariadb_packages_mdbf is not defined + - name: Define mariadb_config_file. ansible.builtin.set_fact: mariadb_config_file: "{{ __mariadb_config_file }}" diff --git a/vars/Alpine.yml b/vars/Alpine.yml index 5067e11..a1985ef 100644 --- a/vars/Alpine.yml +++ b/vars/Alpine.yml @@ -8,3 +8,8 @@ __mariadb_unix_socket: "/run/mysqld/mysqld.sock" __mariadb_log_dir: "/var/log/mariadb" __mariadb_log_error_file: "{{ mariadb_log_dir }}/error.log" __mariadb_cron_package_name: "cronie" +__mariadb_packages: + - "{{ mariadb_server_package }}" + - mariadb-backup + - mariadb-client + - py3-pymysql diff --git a/vars/Debian.yml b/vars/Debian.yml index fb12013..8dec525 100644 --- a/vars/Debian.yml +++ b/vars/Debian.yml @@ -8,3 +8,7 @@ __mariadb_unix_socket: "/run/mysqld/mysqld.sock" __mariadb_log_dir: "/var/log/mysql" __mariadb_log_error_file: "{{ mariadb_log_dir }}/error.log" __mariadb_cron_package_name: "cron" +__mariadb_packages: + - "{{ mariadb_server_package }}" + - mariadb-backup + - python3-pymysql diff --git a/vars/RedHat.yml b/vars/RedHat.yml index cf79c36..6882eea 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -9,3 +9,11 @@ __mariadb_unix_socket: "/var/lib/mysql/mysql.sock" __mariadb_log_dir: "/var/log/mariadb" __mariadb_log_error_file: "{{ mariadb_log_dir }}/error.log" __mariadb_cron_package_name: "cronie" +__mariadb_packages: + - "{{ mariadb_server_package }}" + - mariadb-backup + - python3-PyMySQL +__mariadb_packages_mdbf: + - "{{ mariadb_server_package_mdbf }}" + - MariaDB-backup + - python3-PyMySQL