diff --git a/README.md b/README.md index 9600e43..672a28a 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,16 @@ mariadb_bind_address: 127.0.0.1 mariadb_unix_socket: "default value depends on OS" ``` +Extra distribution packages can be installed together with the MariaDB server +packages (same transaction, before configuration), e.g. the compression +provider plugins when the configuration loads them via `plugin_load_add`: + +```yaml +mariadb_packages_extra: [] +# mariadb_packages_extra: +# - mariadb-plugin-provider-lz4 +``` + ```yaml mariadb_basic_settings_raw: | user = mysql diff --git a/defaults/main.yml b/defaults/main.yml index b7e36e6..55a2ec4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -12,6 +12,13 @@ mariadb_use_official_repo_version: 10.6 # see: https://manpages.debian.org/stable/apt/sources.list.5.en.html#DEB822-STYLE_FORMAT mariadb_use_official_repo_format_deb822: false +# Extra distribution packages to install together with the MariaDB server +# packages (single transaction, before configuration). Useful for packages +# the server configuration needs at (re)start, e.g. the compression provider +# plugins (mariadb-plugin-provider-*) that are split out of mariadb-server +# in the MariaDB repositories since 10.7. +mariadb_packages_extra: [] + mariadb_enabled_on_startup: true # The following is set to true by default but you may consider setting it to # false on production servers to prevent ansible from restarting mariadb server. diff --git a/molecule/default/vars/testvars.yml b/molecule/default/vars/testvars.yml index 8646ba0..a00109f 100644 --- a/molecule/default/vars/testvars.yml +++ b/molecule/default/vars/testvars.yml @@ -3,6 +3,9 @@ mariadb_server_id: 1 mariadb_bind_address: 0.0.0.0 mariadb_replication_role: primary +mariadb_packages_extra: + - rsync + mariadb_innodb_raw: | innodb_buffer_pool_size = 512M innodb_log_file_size = 64M diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml index 19bee1a..8cce090 100644 --- a/molecule/default/verify.yml +++ b/molecule/default/verify.yml @@ -2,6 +2,7 @@ - name: Verify hosts: all gather_facts: true + vars_files: vars/testvars.yml tasks: - name: Include OS vars @@ -19,6 +20,20 @@ that: not pkg_status.changed fail_msg: "{{ mariadb_server_package }} is not installed" + - 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 + + - 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 + - name: Register {{ mariadb_config_file }} ansible.builtin.stat: path: "{{ mariadb_config_file }}" diff --git a/tasks/setup_alpine.yml b/tasks/setup_alpine.yml index ac81078..64b9c12 100644 --- a/tasks/setup_alpine.yml +++ b/tasks/setup_alpine.yml @@ -1,11 +1,7 @@ --- - name: Install packages (package) ansible.builtin.package: - name: - - "{{ mariadb_server_package }}" - - mariadb-backup - - mariadb-client - - py3-pymysql + name: "{{ [mariadb_server_package, 'mariadb-backup', 'mariadb-client', 'py3-pymysql'] + mariadb_packages_extra }}" state: present notify: Setup MariaDB diff --git a/tasks/setup_debian.yml b/tasks/setup_debian.yml index 615322a..dad8bda 100644 --- a/tasks/setup_debian.yml +++ b/tasks/setup_debian.yml @@ -77,9 +77,6 @@ - name: Install packages (apt) ansible.builtin.apt: - package: - - "{{ mariadb_server_package }}" - - mariadb-backup - - python3-pymysql + package: "{{ [mariadb_server_package, 'mariadb-backup', 'python3-pymysql'] + mariadb_packages_extra }}" state: present update_cache: true diff --git a/tasks/setup_redhat.yml b/tasks/setup_redhat.yml index cd1f4a1..2f0776b 100644 --- a/tasks/setup_redhat.yml +++ b/tasks/setup_redhat.yml @@ -22,19 +22,13 @@ - name: Install packages (dnf) ansible.builtin.dnf: - name: - - "{{ mariadb_server_package }}" - - mariadb-backup - - python3-PyMySQL + name: "{{ [mariadb_server_package, 'mariadb-backup', 'python3-PyMySQL'] + 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 + name: "{{ [mariadb_server_package_mdbf, 'MariaDB-backup', 'python3-PyMySQL'] + mariadb_packages_extra }}" state: present when: mariadb_use_official_repo