Implement installation method selection for MariaDB role

This should allow easily switch to using distro-porvided version of MariaDB
rather then installed from external repo which is aligned in version across
all distributions.

Change-Id: I203aa8e6ac5d0c7f604c3342a400aabad34729d9
This commit is contained in:
Dmitriy Rabotyagov 2024-03-27 16:35:24 +01:00 committed by Dmitriy Rabotyagov
parent e697948b34
commit 046cd1364e
6 changed files with 96 additions and 74 deletions

View File

@ -89,6 +89,9 @@ galera_additional_users: []
# priv: "*.*:USAGE"
# state: present
# Choose 'distro' or 'external_repo'
galera_install_method: external_repo
# Enable or disable the installation of galera development packages
galera_install_devel: false

View File

@ -44,3 +44,5 @@ dependencies:
apt_package_pinning_file_name: "galera_pin.pref"
when:
- ansible_facts['pkg_mgr'] == 'apt'
- galera_install_method == 'external_repo'
- galera_repo | default(True)

View File

@ -0,0 +1,6 @@
---
features:
- |
Added variable ``galera_install_method`` to control whether external
repositories should be configured or role should attempt to install
from distro default ones instead.

View File

@ -17,7 +17,13 @@
package:
name: "{{ galera_mariadb_distro_packages_remove | default([]) }}"
state: absent
when: galera_install_method == 'external_repo'
- name: Configure repositories for MariaDB installation
when:
- galera_install_method == 'external_repo'
- galera_repo
block:
- name: If a keyfile is provided, copy the gpg keyfile to the key location
copy:
src: "gpg/{{ item.id }}"

View File

@ -32,6 +32,7 @@
register: _remove_existing_mariadb_packages
changed_when: _remove_existing_mariadb_packages.rc == 2
failed_when: _remove_existing_mariadb_packages.rc not in [0, 2]
when: galera_install_method == 'external_repo'
args:
executable: /bin/bash
@ -85,6 +86,11 @@
state: "link"
force: true
- name: Configure repositories for MariaDB installation
when:
- galera_install_method == 'external_repo'
- galera_repo
block:
- name: If a keyfile is provided, copy the gpg keyfile to the key location
copy:
src: "gpg/{{ item.key | basename }}"
@ -101,7 +107,6 @@
gpgcheck: yes
enabled: yes
priority: 25
when: galera_repo != {}
register: add_galera_repos
until: add_galera_repos is success
retries: 5
@ -113,7 +118,6 @@
line: "module_hotfixes=1"
regexp: "^module_hotfixes"
insertafter: "^enabled"
when: galera_repo != {}
# When changing the repo URL, the metadata does
# not reliably update, resulting in the right

View File

@ -30,21 +30,21 @@ galera_server_required_distro_packages:
- libstdc++
- libgcc
- libgcrypt
- MariaDB-client
- MariaDB-devel
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-client', 'mariadb') }}"
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-devel', 'mariadb-connector-c-devel') }}"
- python3-PyMySQL
galera_etc_conf_file: "/etc/mysql/my.cnf"
galera_etc_include_dir: "/etc/mysql/conf.d"
galera_var_run_socket: "{{ galera_data_dir }}/mysql.sock"
_galera_mariadb_server_package: "MariaDB-server"
_galera_mariadb_server_package: "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-server', 'mariadb-server') }}"
galera_server_mariadb_distro_packages:
- which
- "{{ galera_mariadb_server_package }}"
- MariaDB-backup
- MariaDB-shared
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-backup', 'mariadb-backup') }}"
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-shared', 'galera') }}"
- rsync
- socat
@ -56,9 +56,9 @@ galera_mariadb_distro_packages_remove:
# The packages to uninstall during an upgrade from a previous version
galera_server_upgrade_packages_remove:
- galera-*
- galera*
- MariaDB-Galera-server
- MariaDB-server
- "{{ galera_mariadb_server_package }}"
_galera_repo_url: "http://{{ galera_repo_host }}/MariaDB/mariadb-{{ galera_major_version }}.{{ galera_minor_version }}/yum/rhel/$releasever/$basearch"
_galera_repo:
@ -67,12 +67,13 @@ _galera_repo:
baseurl: "{{ galera_repo_url }}"
gpgkey: "file://{{ galera_gpg_keys | map(attribute='key') | join('file://') }}"
galera_wsrep_provider: "/usr/lib64/galera-4/libgalera_smm.so"
# NOTE: CentOS Stream/Rocky 9 still ship mariadb 10.5 out of their default repos
galera_wsrep_provider: "/usr/lib64/{{ (galera_install_method == 'external_repo') | ternary('galera-4', 'galera') }}/libgalera_smm.so"
galera_client_distro_packages:
- MariaDB-client
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-client', 'mariadb') }}"
galera_devel_distro_packages:
- MariaDB-devel
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-devel', 'mariadb-connector-c-devel') }}"
galera_unix_socket: "{{ galera_data_dir }}/mysql.sock"