Add mariadb_packages_extra for installing additional packages

Optional list appended to the package install on all supported OS
families, so extra packages resolve in the same transaction as the
MariaDB server packages and are present before the configuration step.
Useful for packages the server config depends on 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 and
are required when mariadb.cnf loads them via plugin_load_add.
This commit is contained in:
Kalle Kiviaho 2026-07-16 12:29:26 +02:00
parent 209705a893
commit 16b62c9856
7 changed files with 39 additions and 17 deletions

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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 }}"

View File

@ -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

View File

@ -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

View File

@ -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