diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 02222fa..010d442 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -37,7 +37,6 @@ jobs: fail-fast: false matrix: os: ['el7', 'el8', 'ub2004', 'deb10', 'deb11'] - # puppet_version: [6, 7] puppet_version: [7] vendor_type: ['codership', 'mariadb', 'percona'] @@ -52,6 +51,7 @@ jobs: echo '{"ipv6":true,"fixed-cidr-v6":"2001:db8:1::/64"}' | sudo tee /etc/docker/daemon.json sudo service docker restart + # Disable AppArmor, otherwise MySQL tests fail on GitHub Actions # https://github.com/actions/virtual-environments/issues/181#issuecomment-610874237 - name: apparmor run: | diff --git a/README.md b/README.md index e7ba155..c320af6 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,7 @@ Below you will find an **incomplete** and possibly **outdated** list of known (i | **Codership Galera (MySQL)** | | | | | | 5.7 / 8.0 | :green_circle: :green_circle: **/** :green_circle: :green_circle: | :no_entry_sign: :no_entry_sign: **/** :green_circle: :green_circle: | :no_entry_sign: :green_circle: **/** :no_entry_sign: :no_entry_sign: | :green_circle: :no_entry_sign: | | **MariaDB Galera Cluster** | | | | | -| 10.4 / 10.5 | :green_circle: :green_circle: **/** :green_circle: :green_circle: | :green_circle: :green_circle: **/** :no_entry_sign: :no_entry_sign: | :green_circle: :green_circle: **/** :no_entry_sign: :green_circle: | :green_circle: :green_circle: | +| 10.5 / 10.6 | :green_circle: :green_circle: **/** :green_circle: :green_circle: | :green_circle: :green_circle: **/** :green_circle: :green_circle: | :green_circle: :green_circle: **/** :green_circle: :green_circle: | :green_circle: :green_circle: | The table only includes the **two most recent** versions. Older and possibly outdated releases are not listed, although they may still be supported by their vendors. diff --git a/data/Debian-family.yaml b/data/Debian-family.yaml index 32fb2b5..75bf3e9 100644 --- a/data/Debian-family.yaml +++ b/data/Debian-family.yaml @@ -1,18 +1,30 @@ --- +# +# Codership - version-specific settings +# + galera::codership::55::client_package_name: 'mysql-wsrep-client-5.5' galera::codership::55::galera_package_name: 'galera-3' galera::codership::55::mysql_package_name: 'mysql-wsrep-5.5' + galera::codership::56::client_package_name: 'mysql-wsrep-client-5.6' galera::codership::56::galera_package_name: 'galera-3' galera::codership::56::mysql_package_name: 'mysql-wsrep-5.6' + galera::codership::57::arbitrator_package_name: 'galera-arbitrator-3' galera::codership::57::client_package_name: 'mysql-wsrep-client-5.7' galera::codership::57::galera_package_name: 'galera-3' galera::codership::57::mysql_package_name: 'mysql-wsrep-5.7' + galera::codership::80::arbitrator_package_name: 'galera-arbitrator-4' galera::codership::80::client_package_name: 'mysql-wsrep-client-8.0' galera::codership::80::galera_package_name: 'galera-4' galera::codership::80::mysql_package_name: 'mysql-wsrep-8.0' + +# +# Codership - default settings +# + galera::codership::arbitrator_config_file: '/etc/default/garb' galera::codership::arbitrator_package_name: 'galera-arbitrator-3' galera::codership::arbitrator_service_name: 'garb' @@ -25,36 +37,51 @@ galera::codership::want_repos: - 'codership' - 'codership_lib' +# +# MariaDB - version-specific settings +# + # NOTE: MariaDB >=10.1 on systemd systems should use galera_new_cluster. # See https://mariadb.com/kb/en/library/getting-started-with-mariadb-galera-cluster/. galera::mariadb::55::client_package_name: 'mariadb-client-5.5' galera::mariadb::55::galera_package_name: 'galera' galera::mariadb::55::mysql_package_name: 'mariadb-galera-server-5.5' + galera::mariadb::101::client_package_name: 'mariadb-client-10.1' galera::mariadb::101::galera_package_name: 'galera-3' galera::mariadb::101::mysql_package_name: 'mariadb-server-10.1' + galera::mariadb::102::client_package_name: 'mariadb-client-10.2' galera::mariadb::102::galera_package_name: 'galera' galera::mariadb::102::mysql_package_name: 'mariadb-server-10.2' + galera::mariadb::103::client_package_name: 'mariadb-client-10.3' galera::mariadb::103::galera_package_name: 'galera-3' galera::mariadb::103::mysql_package_name: 'mariadb-server-10.3' + galera::mariadb::104::arbitrator_package_name: 'galera-arbitrator-4' galera::mariadb::104::client_package_name: 'mariadb-client-10.4' galera::mariadb::104::galera_package_name: 'galera-4' galera::mariadb::104::mysql_package_name: 'mariadb-server-10.4' + galera::mariadb::105::arbitrator_config_file: '/etc/default/garb' galera::mariadb::105::arbitrator_package_name: 'galera-arbitrator-4' galera::mariadb::105::arbitrator_service_name: 'garb' galera::mariadb::105::client_package_name: 'mariadb-client-10.5' galera::mariadb::105::galera_package_name: 'galera-4' galera::mariadb::105::mysql_package_name: 'mariadb-server-10.5' + galera::mariadb::106::arbitrator_config_file: '/etc/default/garb' galera::mariadb::106::arbitrator_package_name: 'galera-arbitrator-4' galera::mariadb::106::arbitrator_service_name: 'garb' galera::mariadb::106::client_package_name: 'mariadb-client-10.6' galera::mariadb::106::galera_package_name: 'galera-4' galera::mariadb::106::mysql_package_name: 'mariadb-server-10.6' + +# +# MariaDB - default settings +# + galera::mariadb::arbitrator_config_file: '/etc/default/garb' galera::mariadb::arbitrator_package_name: 'galera-arbitrator-3' galera::mariadb::arbitrator_service_name: 'garb' @@ -64,13 +91,19 @@ galera::mariadb::mysql_service_name: 'mysql' galera::mariadb::want_repos: - 'mariadb' +# +# Percona - version-specific settings +# + galera::percona::55::client_package_name: 'percona-xtradb-cluster-client-5.5' galera::percona::55::galera_package_name: 'percona-xtradb-cluster-galera-2.x' galera::percona::55::mysql_package_name: 'percona-xtradb-cluster-server-5.5' + galera::percona::56::arbitrator_package_name: 'percona-xtradb-cluster-garbd-3.x' galera::percona::56::client_package_name: 'percona-xtradb-cluster-client-5.6' galera::percona::56::galera_package_name: 'percona-xtradb-cluster-galera-3.x' galera::percona::56::mysql_package_name: 'percona-xtradb-cluster-server-5.6' + galera::percona::57::arbitrator_package_name: 'percona-xtradb-cluster-garbd-5.7' galera::percona::57::client_package_name: 'percona-xtradb-cluster-client-5.7' galera::percona::57::galera_package_name: 'percona-xtradb-cluster-galera-3.x' @@ -82,6 +115,11 @@ galera::percona::80::client_package_name: 'percona-xtradb-cluster-client' galera::percona::80::galera_package_name: 'percona-xtradb-cluster-galera' # Using the meta package avoids conflicts with other versions during installation. galera::percona::80::mysql_package_name: 'percona-xtradb-full' + +# +# Percona - default settings +# + galera::percona::arbitrator_config_file: '/etc/default/garbd' galera::percona::arbitrator_package_name: 'percona-xtradb-cluster-garbd-3.x' galera::percona::arbitrator_service_name: 'garbd' @@ -93,6 +131,10 @@ galera::percona::want_repos: # Percona-XtraDB-Cluster package depends on xtrabackup - 'percona_tools' +# +# APT repository configs +# + galera::repo::codership::apt: include: src: false @@ -160,6 +202,10 @@ galera::repo::percona_tools::apt: release: "%{os.distro.codename}" repos: 'main' +# +# SST settings +# + galera::sst::mariabackup::mariadb::101::additional_packages: - 'mariadb-backup-10.1' - 'socat' diff --git a/data/FreeBSD-family.yaml b/data/FreeBSD-family.yaml index 02a7965..4d2443f 100644 --- a/data/FreeBSD-family.yaml +++ b/data/FreeBSD-family.yaml @@ -1,11 +1,21 @@ --- +# Not supported on FreeBSD. galera::configure_firewall: false galera::configure_repo: false +# +# Codership - version-specific settings +# + galera::codership::57::client_package_name: 'mysql57-client' galera::codership::57::galera_package_name: 'galera' galera::codership::57::mysql_package_name: 'mysqlwsrep57-server' galera::codership::57::arbitrator_package_name: 'galera' + +# +# Codership - default settings +# + galera::codership::arbitrator_config_file: '/etc/rc.conf.d/garb' galera::codership::arbitrator_package_name: 'galera' galera::codership::arbitrator_service_name: 'garb' @@ -13,22 +23,34 @@ galera::codership::bootstrap_command: 'service mysql-server onebootstrap' galera::codership::libgalera_location: '/usr/local/lib/libgalera_smm.so' galera::codership::mysql_service_name: 'mysql-server' +# +# MariaDB - version-specific settings +# + galera::mariadb::103::arbitrator_package_name: 'galera' galera::mariadb::103::client_package_name: 'mariadb103-client' galera::mariadb::103::galera_package_name: 'galera' galera::mariadb::103::mysql_package_name: 'mariadb103-server' + galera::mariadb::104::arbitrator_package_name: 'galera26' galera::mariadb::104::client_package_name: 'mariadb104-client' galera::mariadb::104::galera_package_name: 'galera26' galera::mariadb::104::mysql_package_name: 'mariadb104-server' + galera::mariadb::105::arbitrator_package_name: 'galera26' galera::mariadb::105::client_package_name: 'mariadb105-client' galera::mariadb::105::galera_package_name: 'galera26' galera::mariadb::105::mysql_package_name: 'mariadb105-server' + galera::mariadb::106::arbitrator_package_name: 'galera26' galera::mariadb::106::client_package_name: 'mariadb106-client' galera::mariadb::106::galera_package_name: 'galera26' galera::mariadb::106::mysql_package_name: 'mariadb106-server' + +# +# MariaDB - default settings +# + galera::mariadb::arbitrator_config_file: '/etc/rc.conf.d/garb' galera::mariadb::arbitrator_package_name: 'galera' galera::mariadb::arbitrator_service_name: 'garb' @@ -36,6 +58,10 @@ galera::mariadb::bootstrap_command: '/usr/local/bin/mysqld_safe --defaults-extra galera::mariadb::libgalera_location: '/usr/local/lib/libgalera_smm.so' galera::mariadb::mysql_service_name: 'mysql-server' +# +# Percona - default settings +# + galera::percona::arbitrator_config_file: '/UNSUPPORTED-arbitrator_config_file' galera::percona::arbitrator_package_name: 'UNSUPPORTED-arbitrator_package_name' galera::percona::arbitrator_service_name: 'UNSUPPORTED-arbitrator_service_name' @@ -46,6 +72,10 @@ galera::percona::libgalera_location: '/UNSUPPORTED-libgalera_location' galera::percona::mysql_package_name: 'UNSUPPORTED-mysql_package_name' galera::percona::mysql_service_name: 'UNSUPPORTED-mysql_service_name' +# +# SST settings +# + galera::sst::mariabackup::mariadb::103::additional_packages: - 'socat' galera::sst::mariabackup::mariadb::104::additional_packages: diff --git a/data/RedHat-family.yaml b/data/RedHat-family.yaml index ba873b1..3deb0be 100644 --- a/data/RedHat-family.yaml +++ b/data/RedHat-family.yaml @@ -1,21 +1,35 @@ --- +galera::epel_needed: true + +# +# Codership - version-specific settings +# + galera::codership::55::client_package_name: 'mysql-wsrep-client-5.5' galera::codership::55::galera_package_name: 'galera-3' galera::codership::55::mysql_package_name: 'mysql-wsrep-5.5' + galera::codership::56::arbitrator_package_name: 'galera' galera::codership::56::client_package_name: 'mysql-wsrep-client-5.6' galera::codership::56::galera_package_name: 'galera-3' galera::codership::56::mysql_package_name: 'mysql-wsrep-5.6' + galera::codership::57::arbitrator_package_name: 'galera-3' galera::codership::57::client_package_name: 'mysql-wsrep-client-5.7' galera::codership::57::galera_package_name: 'galera-3' galera::codership::57::mysql_package_name: 'mysql-wsrep-5.7' + galera::codership::80::arbitrator_package_name: 'galera-4' galera::codership::80::arbitrator_service_name: 'garb' galera::codership::80::client_package_name: 'mysql-wsrep-client' galera::codership::80::galera_package_name: 'galera-4' galera::codership::80::libgalera_location: '/usr/lib64/galera-4/libgalera_smm.so' galera::codership::80::mysql_package_name: 'mysql-wsrep-8.0' + +# +# Codership - default settings +# + galera::codership::arbitrator_config_file: '/etc/sysconfig/garb' galera::codership::arbitrator_package_name: 'galera' galera::codership::arbitrator_service_name: 'garbd' @@ -36,38 +50,53 @@ galera::codership::want_repos: - 'codership' - 'codership_lib' +# +# MariaDB - version-specific settings +# + # NOTE: MariaDB >=10.1 on systemd systems should use galera_new_cluster. # See https://mariadb.com/kb/en/library/getting-started-with-mariadb-galera-cluster/. galera::mariadb::100::client_package_name: 'MariaDB-client' galera::mariadb::100::galera_package_name: 'galera' galera::mariadb::100::mysql_package_name: 'MariaDB-Galera-server' + galera::mariadb::101::arbitrator_package_name: 'galera' galera::mariadb::101::client_package_name: 'MariaDB-client' galera::mariadb::101::galera_package_name: 'galera' galera::mariadb::101::mysql_package_name: 'MariaDB-server' + galera::mariadb::102::arbitrator_package_name: 'galera' galera::mariadb::102::client_package_name: 'MariaDB-client' galera::mariadb::102::galera_package_name: 'galera' galera::mariadb::102::mysql_package_name: 'MariaDB-server' + galera::mariadb::103::arbitrator_package_name: 'galera' galera::mariadb::103::client_package_name: 'MariaDB-client' galera::mariadb::103::galera_package_name: 'galera' galera::mariadb::103::mysql_package_name: 'MariaDB-server' + galera::mariadb::104::arbitrator_package_name: 'galera-4' galera::mariadb::104::client_package_name: 'MariaDB-client' galera::mariadb::104::galera_package_name: 'galera-4' galera::mariadb::104::libgalera_location: '/usr/lib64/galera-4/libgalera_smm.so' galera::mariadb::104::mysql_package_name: 'MariaDB-server' + galera::mariadb::105::arbitrator_package_name: 'galera-4' galera::mariadb::105::client_package_name: 'MariaDB-client' galera::mariadb::105::galera_package_name: 'galera-4' galera::mariadb::105::libgalera_location: '/usr/lib64/galera-4/libgalera_smm.so' galera::mariadb::105::mysql_package_name: 'MariaDB-server' + galera::mariadb::106::arbitrator_package_name: 'galera-4' galera::mariadb::106::client_package_name: 'MariaDB-client' galera::mariadb::106::galera_package_name: 'galera-4' galera::mariadb::106::libgalera_location: '/usr/lib64/galera-4/libgalera_smm.so' galera::mariadb::106::mysql_package_name: 'MariaDB-server' + +# +# MariaDB - default settings +# + galera::mariadb::arbitrator_config_file: '/etc/sysconfig/garb' galera::mariadb::arbitrator_package_name: 'galera-4' galera::mariadb::arbitrator_service_name: 'garb' @@ -78,17 +107,23 @@ galera::mariadb::mysql_service_name: 'mariadb' galera::mariadb::want_repos: - 'mariadb' +# +# Percona - version-specific settings +# + galera::percona::55::arbitrator_package_name: 'Percona-XtraDB-Cluster-garbd-2' galera::percona::55::client_package_name: 'Percona-XtraDB-Cluster-client-55' galera::percona::55::galera_package_name: 'Percona-XtraDB-Cluster-galera-2' # Using the meta package avoids conflicts with other versions during installation. galera::percona::55::mysql_package_name: 'Percona-XtraDB-Cluster-55' + galera::percona::56::arbitrator_package_name: 'Percona-XtraDB-Cluster-garbd-3' galera::percona::56::bootstrap_command: 'systemctl start mysql@bootstrap.service' galera::percona::56::client_package_name: 'Percona-XtraDB-Cluster-client-56' galera::percona::56::galera_package_name: 'Percona-XtraDB-Cluster-galera-3' # Using the meta package avoids conflicts with other versions during installation. galera::percona::56::mysql_package_name: 'Percona-XtraDB-Cluster-56' + galera::percona::57::additional_packages: - 'nmap' galera::percona::57::arbitrator_package_name: 'Percona-XtraDB-Cluster-garbd-57' @@ -97,6 +132,7 @@ galera::percona::57::client_package_name: 'Percona-XtraDB-Cluster-client-57' galera::percona::57::galera_package_name: 'Percona-XtraDB-Cluster-galera-3' # Using the meta package avoids conflicts with other versions during installation. galera::percona::57::mysql_package_name: 'Percona-XtraDB-Cluster-57' + galera::percona::80::additional_packages: - 'nmap' galera::percona::80::arbitrator_package_name: 'percona-xtradb-cluster-garbd' @@ -106,6 +142,11 @@ galera::percona::80::client_package_name: 'percona-xtradb-cluster-client' galera::percona::80::galera_package_name: 'percona-xtradb-cluster-galera' # Using the meta package avoids conflicts with other versions during installation. galera::percona::80::mysql_package_name: 'percona-xtradb-cluster-full' + +# +# Percona - default settings +# + galera::percona::arbitrator_config_file: '/etc/sysconfig/garb' galera::percona::arbitrator_package_name: 'Percona-XtraDB-Cluster-garbd-3' galera::percona::arbitrator_service_name: 'garb' @@ -123,7 +164,9 @@ galera::percona::want_repos: # Percona-XtraDB-Cluster package depends on xtrabackup - 'percona_tools' -galera::epel_needed: true +# +# YUM repository configs +# galera::repo::codership::yum: # NOTE: "redhat" in the URL is hardcoded on-purpose to cover all @@ -175,6 +218,10 @@ galera::repo::percona_tools::yum: gpgcheck: 1 gpgkey: 'https://www.percona.com/downloads/RPM-GPG-KEY-percona https://repo.percona.com/yum/PERCONA-PACKAGING-KEY' +# +# SST settings +# + galera::sst::mariabackup::mariadb::101::additional_packages: - 'MariaDB-backup' - 'socat' diff --git a/spec/acceptance/galera_spec.rb b/spec/acceptance/galera_spec.rb index 0405cc1..ebcec41 100644 --- a/spec/acceptance/galera_spec.rb +++ b/spec/acceptance/galera_spec.rb @@ -6,15 +6,6 @@ describe 'default parameters' do let(:pp) do <<-MANIFEST - # Workaround a known issue on CentOS 6, see https://tickets.puppetlabs.com/browse/MODULES-5653 - if ($facts['os']['family'] == 'RedHat') and (versioncmp($facts['os']['release']['major'], '7') < 0) { - exec { 'create empty iptables configs': - path => '/usr/bin:/bin:/usr/local/bin:/usr/sbin:/sbin:/usr/local/sbin', - command => 'touch /etc/sysconfig/iptables; touch /etc/sysconfig/ip6tables', - before => Class['firewall'], - } - } - # Tests will fail if `ss` is not installed. if ($facts['os']['family'] == 'RedHat') and (versioncmp($facts['os']['release']['major'], '8') >= 0) { ensure_packages('iproute')