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:
parent
e697948b34
commit
046cd1364e
@ -89,6 +89,9 @@ galera_additional_users: []
|
|||||||
# priv: "*.*:USAGE"
|
# priv: "*.*:USAGE"
|
||||||
# state: present
|
# state: present
|
||||||
|
|
||||||
|
# Choose 'distro' or 'external_repo'
|
||||||
|
galera_install_method: external_repo
|
||||||
|
|
||||||
# Enable or disable the installation of galera development packages
|
# Enable or disable the installation of galera development packages
|
||||||
galera_install_devel: false
|
galera_install_devel: false
|
||||||
|
|
||||||
|
@ -44,3 +44,5 @@ dependencies:
|
|||||||
apt_package_pinning_file_name: "galera_pin.pref"
|
apt_package_pinning_file_name: "galera_pin.pref"
|
||||||
when:
|
when:
|
||||||
- ansible_facts['pkg_mgr'] == 'apt'
|
- ansible_facts['pkg_mgr'] == 'apt'
|
||||||
|
- galera_install_method == 'external_repo'
|
||||||
|
- galera_repo | default(True)
|
||||||
|
@ -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.
|
@ -17,15 +17,21 @@
|
|||||||
package:
|
package:
|
||||||
name: "{{ galera_mariadb_distro_packages_remove | default([]) }}"
|
name: "{{ galera_mariadb_distro_packages_remove | default([]) }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
when: galera_install_method == 'external_repo'
|
||||||
|
|
||||||
- name: If a keyfile is provided, copy the gpg keyfile to the key location
|
- 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:
|
copy:
|
||||||
src: "gpg/{{ item.id }}"
|
src: "gpg/{{ item.id }}"
|
||||||
dest: "{{ item.file }}"
|
dest: "{{ item.file }}"
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
with_items: "{{ galera_gpg_keys | selectattr('file', 'defined') | list }}"
|
with_items: "{{ galera_gpg_keys | selectattr('file', 'defined') | list }}"
|
||||||
|
|
||||||
- name: Install gpg keys
|
- name: Install gpg keys
|
||||||
apt_key:
|
apt_key:
|
||||||
data: "{{ key['data'] | default(omit) }}"
|
data: "{{ key['data'] | default(omit) }}"
|
||||||
file: "{{ key['file'] | default(omit) }}"
|
file: "{{ key['file'] | default(omit) }}"
|
||||||
@ -41,7 +47,7 @@
|
|||||||
retries: 5
|
retries: 5
|
||||||
delay: 2
|
delay: 2
|
||||||
|
|
||||||
- name: Remove old repos
|
- name: Remove old repos
|
||||||
lineinfile:
|
lineinfile:
|
||||||
dest: "/etc/apt/sources.list.d/{{ item.name }}.list"
|
dest: "/etc/apt/sources.list.d/{{ item.name }}.list"
|
||||||
regexp: "^((?!{{ item.repo }}).*)$"
|
regexp: "^((?!{{ item.repo }}).*)$"
|
||||||
@ -50,7 +56,7 @@
|
|||||||
- { name: "MariaDB", repo: "{{ galera_repo.repo }}" }
|
- { name: "MariaDB", repo: "{{ galera_repo.repo }}" }
|
||||||
when: galera_repo.repo is defined
|
when: galera_repo.repo is defined
|
||||||
|
|
||||||
- name: Add galera repo
|
- name: Add galera repo
|
||||||
apt_repository:
|
apt_repository:
|
||||||
repo: "{{ galera_repo.repo }}"
|
repo: "{{ galera_repo.repo }}"
|
||||||
filename: "{{ galera_repo.filename | default(omit) }}"
|
filename: "{{ galera_repo.filename | default(omit) }}"
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
register: _remove_existing_mariadb_packages
|
register: _remove_existing_mariadb_packages
|
||||||
changed_when: _remove_existing_mariadb_packages.rc == 2
|
changed_when: _remove_existing_mariadb_packages.rc == 2
|
||||||
failed_when: _remove_existing_mariadb_packages.rc not in [0, 2]
|
failed_when: _remove_existing_mariadb_packages.rc not in [0, 2]
|
||||||
|
when: galera_install_method == 'external_repo'
|
||||||
args:
|
args:
|
||||||
executable: /bin/bash
|
executable: /bin/bash
|
||||||
|
|
||||||
@ -85,14 +86,19 @@
|
|||||||
state: "link"
|
state: "link"
|
||||||
force: true
|
force: true
|
||||||
|
|
||||||
- name: If a keyfile is provided, copy the gpg keyfile to the key location
|
- 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:
|
copy:
|
||||||
src: "gpg/{{ item.key | basename }}"
|
src: "gpg/{{ item.key | basename }}"
|
||||||
dest: "{{ item.key }}"
|
dest: "{{ item.key }}"
|
||||||
mode: '0644'
|
mode: '0644'
|
||||||
with_items: "{{ galera_gpg_keys }}"
|
with_items: "{{ galera_gpg_keys }}"
|
||||||
|
|
||||||
- name: Add galera repo
|
- name: Add galera repo
|
||||||
yum_repository:
|
yum_repository:
|
||||||
name: "{{ galera_repo.name }}"
|
name: "{{ galera_repo.name }}"
|
||||||
description: "{{ galera_repo.description }}"
|
description: "{{ galera_repo.description }}"
|
||||||
@ -101,19 +107,17 @@
|
|||||||
gpgcheck: yes
|
gpgcheck: yes
|
||||||
enabled: yes
|
enabled: yes
|
||||||
priority: 25
|
priority: 25
|
||||||
when: galera_repo != {}
|
|
||||||
register: add_galera_repos
|
register: add_galera_repos
|
||||||
until: add_galera_repos is success
|
until: add_galera_repos is success
|
||||||
retries: 5
|
retries: 5
|
||||||
delay: 2
|
delay: 2
|
||||||
|
|
||||||
- name: Enable module_hotfixes
|
- name: Enable module_hotfixes
|
||||||
lineinfile:
|
lineinfile:
|
||||||
dest: "/etc/yum.repos.d/{{ galera_repo.name }}.repo"
|
dest: "/etc/yum.repos.d/{{ galera_repo.name }}.repo"
|
||||||
line: "module_hotfixes=1"
|
line: "module_hotfixes=1"
|
||||||
regexp: "^module_hotfixes"
|
regexp: "^module_hotfixes"
|
||||||
insertafter: "^enabled"
|
insertafter: "^enabled"
|
||||||
when: galera_repo != {}
|
|
||||||
|
|
||||||
# When changing the repo URL, the metadata does
|
# When changing the repo URL, the metadata does
|
||||||
# not reliably update, resulting in the right
|
# not reliably update, resulting in the right
|
||||||
|
@ -30,21 +30,21 @@ galera_server_required_distro_packages:
|
|||||||
- libstdc++
|
- libstdc++
|
||||||
- libgcc
|
- libgcc
|
||||||
- libgcrypt
|
- libgcrypt
|
||||||
- MariaDB-client
|
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-client', 'mariadb') }}"
|
||||||
- MariaDB-devel
|
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-devel', 'mariadb-connector-c-devel') }}"
|
||||||
- python3-PyMySQL
|
- python3-PyMySQL
|
||||||
|
|
||||||
galera_etc_conf_file: "/etc/mysql/my.cnf"
|
galera_etc_conf_file: "/etc/mysql/my.cnf"
|
||||||
galera_etc_include_dir: "/etc/mysql/conf.d"
|
galera_etc_include_dir: "/etc/mysql/conf.d"
|
||||||
galera_var_run_socket: "{{ galera_data_dir }}/mysql.sock"
|
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:
|
galera_server_mariadb_distro_packages:
|
||||||
- which
|
- which
|
||||||
- "{{ galera_mariadb_server_package }}"
|
- "{{ galera_mariadb_server_package }}"
|
||||||
- MariaDB-backup
|
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-backup', 'mariadb-backup') }}"
|
||||||
- MariaDB-shared
|
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-shared', 'galera') }}"
|
||||||
- rsync
|
- rsync
|
||||||
- socat
|
- socat
|
||||||
|
|
||||||
@ -56,9 +56,9 @@ galera_mariadb_distro_packages_remove:
|
|||||||
|
|
||||||
# The packages to uninstall during an upgrade from a previous version
|
# The packages to uninstall during an upgrade from a previous version
|
||||||
galera_server_upgrade_packages_remove:
|
galera_server_upgrade_packages_remove:
|
||||||
- galera-*
|
- galera*
|
||||||
- MariaDB-Galera-server
|
- 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_url: "http://{{ galera_repo_host }}/MariaDB/mariadb-{{ galera_major_version }}.{{ galera_minor_version }}/yum/rhel/$releasever/$basearch"
|
||||||
_galera_repo:
|
_galera_repo:
|
||||||
@ -67,12 +67,13 @@ _galera_repo:
|
|||||||
baseurl: "{{ galera_repo_url }}"
|
baseurl: "{{ galera_repo_url }}"
|
||||||
gpgkey: "file://{{ galera_gpg_keys | map(attribute='key') | join('file://') }}"
|
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:
|
galera_client_distro_packages:
|
||||||
- MariaDB-client
|
- "{{ (galera_install_method == 'external_repo') | ternary('MariaDB-client', 'mariadb') }}"
|
||||||
|
|
||||||
galera_devel_distro_packages:
|
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"
|
galera_unix_socket: "{{ galera_data_dir }}/mysql.sock"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user