diff --git a/README.md b/README.md index 0a2b537..3709aea 100644 --- a/README.md +++ b/README.md @@ -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 ----- diff --git a/Vagrantfile b/Vagrantfile index 7b84e8c..119e978 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -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' diff --git a/defaults/main.yml b/defaults/main.yml index bc42b82..7ca705f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -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" diff --git a/handlers/main.yml b/handlers/main.yml index 01c4145..7fcd5e9 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -2,6 +2,6 @@ - name: restart mariadb service: - name: mysql + name: mariadb state: restarted when: mariadb_notify_restart diff --git a/meta/main.yml b/meta/main.yml index ea94bcb..2bf4747 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -9,6 +9,7 @@ galaxy_info: - name: Debian versions: - buster + - bullseye galaxy_tags: - database - packaging diff --git a/tasks/galera/bootstrap.yml b/tasks/galera/bootstrap.yml index 15cae97..b61a87f 100644 --- a/tasks/galera/bootstrap.yml +++ b/tasks/galera/bootstrap.yml @@ -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 diff --git a/tasks/galera/main.yml b/tasks/galera/main.yml index a4a1c09..73cc740 100644 --- a/tasks/galera/main.yml +++ b/tasks/galera/main.yml @@ -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 diff --git a/tasks/galera/nodes.yml b/tasks/galera/nodes.yml index 0094025..4609902 100644 --- a/tasks/galera/nodes.yml +++ b/tasks/galera/nodes.yml @@ -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 diff --git a/tasks/install/mariadb/upstream.yml b/tasks/install/mariadb/upstream.yml index bb389af..e9cb719 100644 --- a/tasks/install/mariadb/upstream.yml +++ b/tasks/install/mariadb/upstream.yml @@ -1,5 +1,9 @@ --- +- name: APT | Install GPG + apt: + name: gpg + - name: APT_KEY | Install MariaDB key apt_key: keyserver: "{{ mariadb_key_server }}" diff --git a/tasks/main.yml b/tasks/main.yml index 30f4f19..9d28ccc 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -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 }}" diff --git a/tasks/replication/slave/import_data.yml b/tasks/replication/slave/import_data.yml index 1a26208..0ef6c83 100644 --- a/tasks/replication/slave/import_data.yml +++ b/tasks/replication/slave/import_data.yml @@ -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 diff --git a/tests/test.yml b/tests/test.yml index c487eb3..c203737 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -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 diff --git a/vars/Debian-buster.yml b/vars/Debian.yml similarity index 100% rename from vars/Debian-buster.yml rename to vars/Debian.yml