diff --git a/.travis.yml b/.travis.yml index ce6100a..abe4801 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,20 @@ env: - - PLATFORM='docker-stretch-default-master' ANSIBLE_VERSION='ansible>=2.5,<2.6' - - PLATFORM='docker-stretch-upstream-master' ANSIBLE_VERSION='ansible>=2.5,<2.6' - - PLATFORM='docker-stretch-upstream-galera-1' ANSIBLE_VERSION='ansible>=2.5,<2.6' - - PLATFORM='docker-buster-default-master' ANSIBLE_VERSION='ansible>=2.5,<2.6' - PLATFORM='docker-stretch-default-master' ANSIBLE_VERSION='ansible>=2.6,<2.7' - PLATFORM='docker-stretch-upstream-master' ANSIBLE_VERSION='ansible>=2.6,<2.7' + - PLATFORM='docker-stretch-default-galera-1' ANSIBLE_VERSION='ansible>=2.6,<2.7' - PLATFORM='docker-stretch-upstream-galera-1' ANSIBLE_VERSION='ansible>=2.6,<2.7' - PLATFORM='docker-buster-default-master' ANSIBLE_VERSION='ansible>=2.6,<2.7' + - PLATFORM='docker-buster-upstream-master' ANSIBLE_VERSION='ansible>=2.6,<2.7' + - PLATFORM='docker-buster-default-galera-1' ANSIBLE_VERSION='ansible>=2.6,<2.7' + - PLATFORM='docker-buster-upstream-galera-1' ANSIBLE_VERSION='ansible>=2.6,<2.7' - PLATFORM='docker-stretch-default-master' ANSIBLE_VERSION='ansible>=2.7,<2.8' - PLATFORM='docker-stretch-upstream-master' ANSIBLE_VERSION='ansible>=2.7,<2.8' + - PLATFORM='docker-stretch-default-galera-1' ANSIBLE_VERSION='ansible>=2.7,<2.8' - PLATFORM='docker-stretch-upstream-galera-1' ANSIBLE_VERSION='ansible>=2.7,<2.8' - PLATFORM='docker-buster-default-master' ANSIBLE_VERSION='ansible>=2.7,<2.8' + - PLATFORM='docker-buster-upstream-master' ANSIBLE_VERSION='ansible>=2.7,<2.8' + - PLATFORM='docker-buster-default-galera-1' ANSIBLE_VERSION='ansible>=2.7,<2.8' + - PLATFORM='docker-buster-upstream-galera-1' ANSIBLE_VERSION='ansible>=2.7,<2.8' sudo: required @@ -25,7 +29,7 @@ services: before_install: - wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb - sudo dpkg -i vagrant_2.0.1_x86_64.deb - - vagrant plugin install vagrant-hostmanager + - vagrant plugin install vagrant-hostmanager install: - pip install "$ANSIBLE_VERSION" diff --git a/README.md b/README.md index 4e32e52..4bb4f97 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ Install and configure MariaDB (Galera Cluster). Manage replication (master/slave | Debian Stretch | Debian | 10.1 | | Debian Stretch | Upstream | 10.1 / 10.2 / 10.3 / 10.4 | | Debian Buster | Debian | 10.3 | +| Debian Buster | Upstream | 10.3 / 10.4 | Notes ----- @@ -17,6 +18,7 @@ Notes * Galera Cluster is experimental * Due to Vagrant + Docker limitation (private network), replication/galera can't be checked with Travis * If you need to test this role with Vagrant, you must install hostmanager plugin: `vagrant plugin install vagrant-hostmanager` +* Percona Xtrabackup is not available in upstream repository. This feature is disabled in the role. Requirements ------------ diff --git a/Vagrantfile b/Vagrantfile index 65eff87..55c820e 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -17,19 +17,49 @@ Vagrant.configure("2") do |config| config.hostmanager.include_offline = false cases = [ + # ======================== # Debian Stretch + # ======================== + + # Default replication { os_name: 'stretch', vbox: vbox_deb_stretch, docker: dk_deb_stretch, vars: {mariadb_origin: 'default' }, groups: ['master'] }, { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['slave'] }, + + # Upstream replication { os_name: 'stretch', vbox: vbox_deb_stretch, docker: dk_deb_stretch, vars: {mariadb_origin: 'upstream' }, groups: ['master'] }, { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['slave'] }, - { os_name: 'stretch', vbox: vbox_deb_stretch, docker: dk_deb_stretch, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '1'] }, - { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] }, - { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '3'] }, + + # Galera Debian { os_name: 'stretch', vbox: vbox_deb_stretch, docker: dk_deb_stretch, vars: {mariadb_origin: 'default' }, groups: ['galera', '1'] }, { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '2'] }, { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '3'] }, + + # Galera Upstream + { os_name: 'stretch', vbox: vbox_deb_stretch, docker: dk_deb_stretch, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '1'] }, + { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '2'] }, + { os_name: 'stretch', vbox: vbox_deb_stretch, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['galera', '3'] }, + + # ======================== # Debian Buster + # ======================== + + # Default replication { os_name: 'buster', vbox: vbox_deb_buster, docker: dk_deb_buster, vars: {mariadb_origin: 'default' }, groups: ['master'] }, +# { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['slave'] }, + + # Upstream replication + { os_name: 'buster', vbox: vbox_deb_buster, docker: dk_deb_buster, vars: {mariadb_origin: 'upstream' }, groups: ['master'] }, +# { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'upstream' }, groups: ['slave'] }, + + # Galera Debian + { os_name: 'buster', vbox: vbox_deb_buster, docker: dk_deb_buster, vars: {mariadb_origin: 'default' }, groups: ['galera', '1'] }, + { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '2'] }, + { os_name: 'buster', vbox: vbox_deb_buster, docker: nil, vars: {mariadb_origin: 'default' }, groups: ['galera', '3'] }, + + # Galera Upstream + { 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'] }, ] cases.each_with_index do |opts,index| diff --git a/defaults/main.yml b/defaults/main.yml index f3b6085..1dc087d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -124,7 +124,7 @@ mariadb_users: [] # ------------------------------------- # MariaDB # ------------------------------------- -mariadb_version: '10.1' +mariadb_version: '10.3' 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/tasks/install/percona/apt.yml b/tasks/install/percona/apt.yml index 51d3afc..c00d077 100644 --- a/tasks/install/percona/apt.yml +++ b/tasks/install/percona/apt.yml @@ -1,20 +1,16 @@ --- -- name: APT_KEY | Install Percona key - apt_key: - keyserver: "keyserver.ubuntu.com" - id: "8507EFA5" +- name: APT | Install Percona repository + apt: + deb: https://repo.percona.com/apt/percona-release_latest.generic_all.deb -- name: TEMPLATE | Deploy APT pinning (prevent upgrades from Debian) - template: - src: etc/apt/preferences.d/95-percona.j2 - dest: /etc/apt/preferences.d/95-percona +- name: COMMAND | Enable percona tools repository + command: percona-release enable tools release + args: + creates: /etc/apt/sources.list.d/percona-original-release.list + register: p -- name: APT_REPOSITORY | Add Percona repository - apt_repository: - repo: 'deb {{ mariadb_percona_repository }} {{ ansible_distribution_release }} main' - -- name: APT_RESPOSITORY | Add Percona (src) repository - apt_repository: - repo: 'deb-src {{ mariadb_percona_repository }} {{ ansible_distribution_release }} main' - when: mariadb_upstream_apt_src +- name: APT | Update cache + apt: + update_cache: yes + when: p.changed diff --git a/tasks/main.yml b/tasks/main.yml index 48f7da1..0749974 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,8 +1,16 @@ --- -- name: SET_FACT | Bypass https://github.com/ansible/ansible/issues/19874 - set_fact: - ansible_distribution_release: 'buster' +- block: + + - name: SET_FACT | Bypass https://github.com/ansible/ansible/issues/19874 + set_fact: + ansible_distribution_release: 'buster' + + - name: SET_FACT | Percona Toolkit is not present in upstream repo for Buster + set_fact: + mariadb_use_percona_apt: false + mariadb_install_xtrabackup_package: false + when: ansible_facts.distribution_major_version == "buster/sid" - name: INCLUDE_VARS | Related to OS version diff --git a/tests/test.yml b/tests/test.yml index 5dc6722..0435f8c 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -79,6 +79,6 @@ set_fact: mariadb_galera_primary_node: '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-{{ mariadb_origin }}-galera-1' mariadb_wsrep_node_address: "{{ '127.0.0.1' if is_docker else ansible_eth1.ipv4.address }}" - mariadb_version: '10.1' + mariadb_version: '10.3' roles: - ../../