Manages MariaDB 10.6 + Debian 11

pull/44/head
Emilien Mantel 2021-09-01 13:31:11 +02:00
parent 860b212ee0
commit 79d6ed7966
13 changed files with 65 additions and 19 deletions

View File

@ -8,7 +8,10 @@ Install and configure MariaDB (Galera Cluster). Manage replication (master/slave
| OS | Origin | MariaDB versions | | OS | Origin | MariaDB versions |
| --------------- | --------- | ------------------------- | | --------------- | --------- | ------------------------- |
| Debian Buster | Debian | 10.3 | | Debian Buster | Debian | 10.3 |
| Debian Buster | Upstream | 10.3 / 10.4 | | Debian Buster | Upstream | 10.3 to 10.6 |
| Debian Bullseye | Debian | 10.5 |
| Debian Bullseye | Upstream | 10.5 to 10.6 |
Notes Notes
----- -----

40
Vagrantfile vendored
View File

@ -8,6 +8,9 @@ Vagrant.configure("2") do |config|
vbox_deb_buster = 'debian/buster64' vbox_deb_buster = 'debian/buster64'
dk_deb_buster = 'hanxhx/vagrant-ansible:debian10' dk_deb_buster = 'hanxhx/vagrant-ansible:debian10'
vbox_deb_bullseye = 'debian/bullseye64'
dk_deb_bullseye = 'hanxhx/vagrant-ansible:debian11'
config.hostmanager.enabled = true config.hostmanager.enabled = true
config.hostmanager.manage_host = false config.hostmanager.manage_host = false
config.hostmanager.manage_guest = true config.hostmanager.manage_guest = true
@ -16,7 +19,7 @@ Vagrant.configure("2") do |config|
cases = [ cases = [
# ======================== # ========================
# Debian Buster # Debian Buster (10)
# ======================== # ========================
# Default replication # Default replication
@ -36,6 +39,29 @@ Vagrant.configure("2") do |config|
{ os_name: 'buster', vbox: vbox_deb_buster, docker: dk_deb_buster, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '1'] }, { os_name: 'buster', vbox: vbox_deb_buster, docker: dk_deb_buster, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '1'] },
{ os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] }, { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] },
{ os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '3'] }, { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '3'] },
# ========================
# Debian Bullseye (11)
# ========================
# Default replication
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: dk_deb_bullseye, vars: {mariadb_origin: 'default' }, groups: ['master'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['slave'] },
# Upstream replication
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: dk_deb_bullseye, vars: {mariadb_origin: 'upstream' }, groups: ['master'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['slave'] },
# Galera Debian
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: dk_deb_bullseye, vars: {mariadb_origin: 'default' }, groups: ['galera', '1'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '2'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '3'] },
# Galera Upstream
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: dk_deb_bullseye, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '1'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] },
{ os_name: 'bullseye', vbox: vbox_deb_bullseye, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '3'] },
] ]
cases.each_with_index do |opts,index| cases.each_with_index do |opts,index|
@ -52,6 +78,11 @@ Vagrant.configure("2") do |config|
d.remains_running = true d.remains_running = true
d.has_ssh = true d.has_ssh = true
end end
if opts[:os_name].include? "bullseye"
m.vm.provision "shell", inline: "[ -f '/root/first_provision' ] || (apt-get update -qq && apt-get -y dist-upgrade && touch /root/first_provision)"
end
m.vm.provision "ansible" do |ansible| m.vm.provision "ansible" do |ansible|
ansible.playbook = "tests/test.yml" ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv' ansible.verbose = 'vv'
@ -72,8 +103,13 @@ Vagrant.configure("2") do |config|
m.vm.network "private_network", ip: ip m.vm.network "private_network", ip: ip
m.vm.provider "virtualbox" do |v| m.vm.provider "virtualbox" do |v|
v.cpus = 1 v.cpus = 1
v.memory = 256 v.memory = 512
end end
if opts[:os_name].include? "bullseye"
m.vm.provision "shell", inline: "[ -f '/root/first_provision' ] || (apt-get update -qq && apt-get -y dist-upgrade && touch /root/first_provision)"
end
m.vm.provision "ansible" do |ansible| m.vm.provision "ansible" do |ansible|
ansible.playbook = "tests/test.yml" ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv' ansible.verbose = 'vv'

View File

@ -116,7 +116,7 @@ mariadb_users: []
# ------------------------------------- # -------------------------------------
# MariaDB # MariaDB
# ------------------------------------- # -------------------------------------
mariadb_version: '10.3' mariadb_version: '10.6'
mariadb_mirror_domain: "ftp.igh.cnrs.fr" mariadb_mirror_domain: "ftp.igh.cnrs.fr"
# See: https://downloads.mariadb.org/mariadb/repositories # See: https://downloads.mariadb.org/mariadb/repositories
mariadb_repository: "http://{{ mariadb_mirror_domain }}/pub/mariadb/repo/{{ mariadb_version }}/debian" mariadb_repository: "http://{{ mariadb_mirror_domain }}/pub/mariadb/repo/{{ mariadb_version }}/debian"

View File

@ -2,6 +2,6 @@
- name: restart mariadb - name: restart mariadb
service: service:
name: mysql name: mariadb
state: restarted state: restarted
when: mariadb_notify_restart when: mariadb_notify_restart

View File

@ -9,6 +9,7 @@ galaxy_info:
- name: Debian - name: Debian
versions: versions:
- buster - buster
- bullseye
galaxy_tags: galaxy_tags:
- database - database
- packaging - packaging

View File

@ -15,7 +15,7 @@
- name: SERVICE | Stop MariaDB - name: SERVICE | Stop MariaDB
service: service:
name: mysql name: mariadb
state: stopped state: stopped
- name: COMMAND | Bootstrap first node (systemd) - name: COMMAND | Bootstrap first node (systemd)
@ -24,7 +24,7 @@
- name: SERVICE | Bootstrap first node (clean init) - name: SERVICE | Bootstrap first node (clean init)
service: service:
name: mysql name: mariadb
state: started state: started
arguments: --wsrep-new-cluster arguments: --wsrep-new-cluster
register: bootstrap_run register: bootstrap_run

View File

@ -16,7 +16,7 @@
- name: SERVICE | Restart MariaDB if needed - name: SERVICE | Restart MariaDB if needed
service: service:
name: mysql name: mariadb
state: restarted state: restarted
when: when:
((galeraconfig or (p is defined and p.changed)) and ((galeraconfig or (p is defined and p.changed)) and

View File

@ -15,7 +15,7 @@
- name: SERVICE | Stop MariaDB - name: SERVICE | Stop MariaDB
service: service:
name: mysql name: mariadb
state: stopped state: stopped
- name: COPY | Paste primary node's debian.cnf - name: COPY | Paste primary node's debian.cnf
@ -29,7 +29,7 @@
- name: SERVICE | Start MariaDB - name: SERVICE | Start MariaDB
service: service:
name: mysql name: mariadb
state: started state: started
when: debiancnf.stdout != ondc.stdout when: debiancnf.stdout != ondc.stdout

View File

@ -1,5 +1,9 @@
--- ---
- name: APT | Install GPG
apt:
name: gpg
- name: APT_KEY | Install MariaDB key - name: APT_KEY | Install MariaDB key
apt_key: apt_key:
keyserver: "{{ mariadb_key_server }}" keyserver: "{{ mariadb_key_server }}"

View File

@ -1,7 +1,7 @@
--- ---
- name: INCLUDE_VARS | Related to OS version - name: INCLUDE_VARS | Related to OS version
include_vars: "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml" include_vars: "{{ ansible_distribution }}.yml"
- name: STAT | Check if mysql exists - name: STAT | Check if mysql exists
stat: stat:
@ -28,12 +28,17 @@
- name: SERVICE | Restart Mariadb now one at a time (prevent bugs) - name: SERVICE | Restart Mariadb now one at a time (prevent bugs)
throttle: 1 throttle: 1
service: service:
name: mysql name: mariadb
state: restarted state: restarted
when: when:
config.changed and config.changed and
not mariadb_galera_resetup not mariadb_galera_resetup
- name: SERVICE | Ensure service is started
service:
name: mariadb
state: started
- name: INCLUDE | Galera - name: INCLUDE | Galera
import_tasks: galera/main.yml import_tasks: galera/main.yml
when: mariadb_use_galera when: mariadb_use_galera
@ -45,11 +50,6 @@
- name: INCLUDE | Secure install - name: INCLUDE | Secure install
import_tasks: 'secure.yml' import_tasks: 'secure.yml'
- name: SERVICE | Ensure service is started
service:
name: mysql
state: started
- name: MYSQL_DB | Create databases - name: MYSQL_DB | Create databases
mysql_db: mysql_db:
name: "{{ item }}" name: "{{ item }}"

View File

@ -49,7 +49,7 @@
- name: SERVICE | Stop MariaDB before importing data - name: SERVICE | Stop MariaDB before importing data
service: service:
name: mysql name: mariadb
state: stopped state: stopped
# TODO: add an "ignore warning" # TODO: add an "ignore warning"
@ -73,7 +73,7 @@
- name: SERVICE | Start MariaDB - name: SERVICE | Start MariaDB
service: service:
name: mysql name: mariadb
state: started state: started
- name: FILE | Delete dump - name: FILE | Delete dump

View File

@ -37,6 +37,7 @@
name: "{{ item }}" name: "{{ item }}"
state: import state: import
target: /tmp/import1.sql target: /tmp/import1.sql
login_unix_socket: "{{ mariadb_socket }}"
loop: ['testrepl', 'norepl'] loop: ['testrepl', 'norepl']
when: c.changed when: c.changed
@ -73,6 +74,7 @@
name: "{{ item }}" name: "{{ item }}"
state: import state: import
target: /tmp/import2.sql target: /tmp/import2.sql
login_unix_socket: "{{ mariadb_socket }}"
loop: ['testrepl', 'norepl'] loop: ['testrepl', 'norepl']
when: c.changed when: c.changed