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

40
Vagrantfile vendored
View File

@ -8,6 +8,9 @@ Vagrant.configure("2") do |config|
vbox_deb_buster = 'debian/buster64'
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.manage_host = false
config.hostmanager.manage_guest = true
@ -16,7 +19,7 @@ Vagrant.configure("2") do |config|
cases = [
# ========================
# Debian Buster
# Debian Buster (10)
# ========================
# 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: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] },
{ 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|
@ -52,6 +78,11 @@ Vagrant.configure("2") do |config|
d.remains_running = true
d.has_ssh = true
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|
ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv'
@ -72,8 +103,13 @@ Vagrant.configure("2") do |config|
m.vm.network "private_network", ip: ip
m.vm.provider "virtualbox" do |v|
v.cpus = 1
v.memory = 256
v.memory = 512
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|
ansible.playbook = "tests/test.yml"
ansible.verbose = 'vv'

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
---
- 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
stat:
@ -28,12 +28,17 @@
- name: SERVICE | Restart Mariadb now one at a time (prevent bugs)
throttle: 1
service:
name: mysql
name: mariadb
state: restarted
when:
config.changed and
not mariadb_galera_resetup
- name: SERVICE | Ensure service is started
service:
name: mariadb
state: started
- name: INCLUDE | Galera
import_tasks: galera/main.yml
when: mariadb_use_galera
@ -45,11 +50,6 @@
- name: INCLUDE | Secure install
import_tasks: 'secure.yml'
- name: SERVICE | Ensure service is started
service:
name: mysql
state: started
- name: MYSQL_DB | Create databases
mysql_db:
name: "{{ item }}"

View File

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

View File

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