galera
Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'markt-galera', '4.0.1'
Learn more about managing modules with a PuppetfileDocumentation
puppet-galera
NOTE: The "main" branch on GitHub contains the development version, which may break anything at any time. Consider using one of the official releases instead.
Table of Contents
Overview
This module will massage puppetlabs-mysql into creating a Galera cluster on MySQL, MariaDB or XtraDB. It also supports setting up an Arbitrator node.
It will try to recover from failures by bootstrapping on a node designated as the master if no other nodes appear to be running mysql, but if the cluster goes down and the master is permanently taken out, another node will need to be specified as the 'master' that can bootstrap the cluster.
Requirements
- Puppet 7 or higher
- puppetlabs/mysql
- A supported version of Codership Galera (MySQL), MariaDB or Percona XtraDB Cluster
nmap
is required for the cluster bootstrap functionality- puppetlabs/xinetd if
galera::status_type
is set toxinetd
(default for FreeBSD) - puppet/systemd if
galera::status_type
is set tosystemd
(default for newer Linux distributions) - puppetlabs/firewall unless
galera::configure_firewall
is disabled
Usage
Basic usage
Basic usage requires only the FQDN of the master node, a list of IP addresses of other nodes and two passwords:
class { 'galera':
# Galera vendor and version
vendor_type => 'codership',
vendor_version => '8.0',
# Galera cluster config
cluster_name => 'mycluster',
galera_servers => ['10.0.99.101', '10.0.99.102', '10.0.99.103'],
galera_master => 'node1.example.com',
root_password => 'pa$$w0rd',
status_password => 'pa$$w0rd',
}
On Debian/Ubuntu systems the user debian-sys-maint@localhost
is required for updates and will be created automatically, but you should set a proper password when using these platforms:
class { 'galera':
deb_sysmaint_password => 'secretpassword',
...
WSREP provider options
Note that the module will automatically add the required Galera/WSREP provider options to the server configuration.
Currently the following parameters are automatically added: wsrep_cluster_address
, wsrep_cluster_name
, wsrep_node_address
, wsrep_node_incoming_address
, wsrep_on
, wsrep_provider
, wsrep_slave_threads
, wsrep_sst_method
, wsrep_sst_auth
, wsrep_sst_receive_address
.
Some of these values are used directly from their respective class parameter. For example, to change the SST method:
class { 'galera':
wsrep_sst_method => 'xtrabackup',
...
Other values like wsrep_cluster_address
and wsrep_sst_auth
are generated from several class parameters. Please have a look at the parameter reference and the module's data
directory for further details.
Of course, all Galera/WSREP provider options can be overridden by using the $override_options
parameter (see below for an example).
More complex example
Furthermore, a number of simple options are available to customize the cluster configuration according to your needs:
class { 'galera':
# Galera vendor and version
vendor_type => 'codership',
vendor_version => '8.0',
#
# Galera cluster config
cluster_name => 'mycluster',
galera_servers => ['10.0.99.101', '10.0.99.102', '10.0.99.103'],
galera_master => 'node1.example.com',
root_password => 'pa$$w0rd',
status_password => 'pa$$w0rd',
#
# This will be used to populate my.cnf values that
# control where wsrep binds, advertises, and listens
local_ip => $facts['networking']['ip'],
#
# This will be set when the cluster is bootstrapped
root_password => 'myrootpassword',
#
# Disable this if you don't want firewall rules to be set
configure_firewall => true,
#
# Configure the SST method
wsrep_sst_method => 'xtrabackup-v2',
#
# These options are only used for the firewall -
# to change the my.cnf settings, use the override options
# described below
mysql_port => 3306,
wsrep_state_transfer_port => 4444,
wsrep_inc_state_transfer_port => 4568,
#
# This is used for the firewall + for status checks
# when deciding whether to bootstrap
wsrep_group_comm_port => 4567,
}
A catch-all parameter $override_options
can be used to populate my.cnf and overwrite default values in the same way as the puppetlabs-mysql module:
class { 'galera':
override_options => {
'mysqld' => {
'bind_address' => '0.0.0.0',
}
}
...
}
Configuring an Arbitrator
Configuring an Arbitrator service is straight-forward:
class { 'galera':
arbitrator => true,
cluster_name => 'mycluster',
galera_servers => ['10.0.99.101', '10.0.99.102', '10.0.99.103'],
...
}
You may even use the same parameters that you would normally use for database nodes, when $arbitrator
is set to true
they will be ignored. This makes it easy to share the same parameters across all cluster nodes, no matter if they are real database nodes or just an arbitrator service.
Custom repository configuration
This module automatically determines which APT/YUM repositories need to be configured. This depends on your choices for $vendor_type
, $vendor_version
and $wsrep_sst_method
. Each of these choices may enable additional repositories.
For example, if setting $vendor_type=codership
and $wsrep_sst_method=xtrabackup
, the module will enable the Codership repository to install the Galera server and the Percona repository to install the XtraBackup tool. This works because every vendor/version and SST method may specify the internal $want_repos
parameter, which is essentially a list of repositories.
Disable repo management if you are managing your own repos and mirrors:
class { 'galera':
configure_repo => false,
...
}
Or if you just want to switch to using a local mirror, simply change the repo URL for the chosen $vendor_type
. For Codership you would add something like this to Hiera:
# RHEL-based systems
galera::repo::codership::yum:
baseurl: "http://repo.example.com/RPMS/<%= $vendor_version_real %>/%{facts.os.release.major}/%{facts.os.architecture}/"
...
# Debian-based systems
galera::repo::codership::apt:
location: "http://repo.example.com/apt/<%= $vendor_version_real %>/%{facts.os.distro.codename}/"
...
FreeBSD support
This module (and all its dependencies) provide support for the FreeBSD operating system. However, from all vendors MariaDB seems to provide the best support for Galera clusters on FreeBSD. The following configuration is known to work:
class { 'galera':
configure_firewall => false,
configure_repo => false,
galera_servers => ['10.0.99.101', '10.0.99.102'],
galera_master => 'node1.example.com',
root_password => 'pa$$w0rd',
status_password => 'pa$$w0rd',
vendor_type => 'mariadb',
vendor_version => '10.11',
}
EPP supported for many options
This module supports inline EPP for many of its options and parameters. This way class parameters and internal variables can be used when specifying options. Currently this is enabled for $override_options
, $wsrep_sst_auth
and all repository options.
# server/wsrep options
galera::override_options:
mysqld:
wsrep_sst_method: "<%= $wsrep_sst_method %>"
wsrep_provider: "<%= $params['libgalera_location'] %>"
galera::wsrep_sst_auth: "root:<%= $root_password %>"
# repo configuration
galera::repo::codership::yum:
baseurl: "http://releases.galeracluster.com/mysql-wsrep-<%= $vendor_version_real %>/%{os_name_lc}/%{os.release.major}/%{os.architecture}/"
...
OS and Cluster Compatibility
Note that not all versions of Percona XtraDB, Codership Galera and MariaDB are supported on all operating systems. Please consult the official documentation to find out if your operating system is supported.
Below you will find an incomplete and possibly outdated list of known (in)compatiblities. Take it with a grain of salt.
RedHat | Debian | Ubuntu | FreeBSD | |
---|---|---|---|---|
Percona XtraDB Cluster | 8 / 9 | 11 / 12 | 22.04 / 24.04 | 14.x |
8.0 | ✔️ / ✔️ | ✔️ / ✔️ | ✔️ / ❌ | ❌ |
Codership Galera (MySQL) | ||||
8.0 / 8.4 | ✔️ ✔️ / ✔️ ✔️ | ✔️ ✔️ / ✔️ ✔️ | ✔️ ✔️ / ✔️ ✔️ | ❌ ❌ |
MariaDB Galera Cluster | ||||
10.11 / 11.4 | ❌ ❌ / ✔️ ✔️ | ❌ ❌ / ✔️ ✔️ | ❌ ❌ / ✔️ ✔️ | ✔️ ✔️ |
The table only includes the two most recent (LTS) versions. Older and possibly outdated releases are not listed, although they may still be supported by their vendors.
Reference
Classes and parameters are documented in REFERENCE.md.
Limitations
This module was created to work in tandem with the puppetlabs-mysql module, rather than replacing it. As the stages in the mysql module are quite strictly laid out in the mysql::server
class, this module places its own resources in the gaps between them.
Of note is an exec
that will start the mysql service with parameters which will bootstrap/start a new cluster, but only if it cannot open the comms port to any other node in the provided list. This is verified with a simple nmap
command and should not be considered terribly reliable.
Furthermore the bootstrap functionality may be considered harmful for existing clusters. For extra safety, the bootstrap command may be set to something like /bin/false
(see GH-116 for more information).
It should also be noted that it is not possible to unset default configuration variables (see GH-174). This is true for this modules' own variables, but also for pre-defined variables that are set by the puppetlabs/mysql module.
Development
Contributing
Please use the GitHub issues functionality to report any bugs or requests for new features. Feel free to fork and submit pull requests for potential contributions.
All contributions must pass all existing tests, new features should provide additional unit/acceptance tests.
Reference
Table of Contents
Classes
Public Classes
galera
: Installs MySQL/MariaDB with galera cluster plugingalera::firewall
: Open firewall ports used by galera using puppetlabs-firewall.
Private Classes
galera::arbitrator
: Installs and configures the Arbitrator service.galera::debian
: Adds workarounds to solve issues specific to Debian-based systems.galera::redhat
: Adds workarounds to solve issues specific to RedHat-based systems.galera::repo
: Evaluates which repositories should be enabled depending on $vendor_type and $vendor_version.galera::status
: Configures a user and script that will check the status of the galera cluster.galera::validate
: Validate that the cluster can accept connections.
Defined types
Private Defined types
galera::repo::config
: Configures a APT or YUM repository.
Classes
galera
Installs MySQL/MariaDB with galera cluster plugin
Parameters
The following parameters are available in the galera
class:
additional_packages
arbitrator
arbitrator_config_file
arbitrator_log_file
arbitrator_options
arbitrator_package_ensure
arbitrator_package_name
arbitrator_service_enabled
arbitrator_service_name
arbitrator_template
bind_address
bootstrap_command
client_package_name
cluster_name
configure_firewall
configure_repo
create_root_my_cnf
create_root_user
create_status_user
deb_sysmaint_password
default_options
epel_needed
galera_master
galera_package_ensure
galera_package_name
galera_servers
libgalera_location
local_ip
manage_additional_packages
mysql_package_name
mysql_port
mysql_restart
mysql_service_name
override_options
override_repos
package_ensure
purge_conf_dir
root_password
rundir
service_enabled
status_allow
status_available_when_donor
status_available_when_readonly
status_check
status_check_type
status_cps
status_flags
status_host
status_instances
status_log_on_failure
status_log_on_failure_operator
status_log_on_success
status_log_on_success_operator
status_log_type
status_password
status_port
status_script
status_service_type
status_system_group
status_system_user
status_system_user_config
status_systemd_service_name
status_user
status_xinetd_service_name
validate_connection
vendor_type
vendor_version
wsrep_group_comm_port
wsrep_inc_state_transfer_port
wsrep_sst_auth
wsrep_sst_method
wsrep_state_transfer_port
additional_packages
Data type: Optional[Array]
Specifies a list of additional packages that may be required for SST and other features. The module automatically discovers all additional packages that are required for the selected vendor/sst, but this parameter can be used to overwrite the discovered package list. Default: A vendor-, version- and OS-specific value.
Default value: undef
arbitrator
Data type: Boolean
Specifies whether this node should run Galera Arbitrator instead of a MySQL/MariaDB server.
arbitrator_config_file
Data type: Optional[String]
Specifies the configuration file for the Arbitrator service. Default: A vendor-, version- and OS-specific value.
Default value: undef
arbitrator_log_file
Data type: Optional[String]
Specifies the optional log file for the Arbitrator service. By default it logs to syslog.
Default value: undef
arbitrator_options
Data type: String
Specifies configuration options for the Arbitrator service.
arbitrator_package_ensure
Data type: String
Specifies the ensure state for the Arbitrator package.
Valid options: all values supported by the package type.
Default: present
arbitrator_package_name
Data type: Optional[String]
Specifies the name of the Arbitrator package to install. Default: A vendor-, version- and OS-specific value.
Default value: undef
arbitrator_service_enabled
Data type: Boolean
Specifies whether the Arbitrator service should be enabled.
Expects that $arbitrator
is also set to true
.
Default: true
arbitrator_service_name
Data type: Optional[String]
Specifies the name of the Arbitrator service. Default: A vendor-, version- and OS-specific value.
Default value: undef
arbitrator_template
Data type: String
Specifies the template to use when creating $arbitrator_config_file
.
bind_address
Data type: String
Specifies the IP address to bind MySQL/MariaDB to. The module expects the
server to listen on localhost for proper operation. Default: ::
bootstrap_command
Data type: Optional[String]
Specifies a command used to bootstrap the galera cluster. Default: A vendor-, version- and OS-specific bootstrap command.
Default value: undef
client_package_name
Data type: Optional[String]
Specifies the name of the MySQL/MariaDB client package to install. Default: A vendor-, version- and OS-specific value.
Default value: undef
cluster_name
Data type: String
Specifies the name of the cluster and should be identical on all nodes. This must be set for the module to work properly (although galera does not require this value.)
configure_firewall
Data type: Boolean
Specifies whether to open firewall ports used by galera using
puppetlabs-firewall. Default: true
configure_repo
Data type: Boolean
Specifies whether to configure additional repositories that are required for
installing galera. Default: true
create_root_my_cnf
Data type: Boolean
A flag to indicate if we should manage the root .my.cnf. Set this to false
if you wish to manage your root .my.cnf file elsewhere. Default: true
create_root_user
Data type: Optional[Boolean]
A flag to indicate if we should manage the root user. Set this to false if
you wish to manage your root user elsewhere. If this is set to undef
, the
module will use true
if this node is $galera_master
. Default: undef
Default value: undef
create_status_user
Data type: Boolean
A flag to indicate if we should manage the status user. Set this to false
if you wish to manage your status user elsewhere. Default: true
deb_sysmaint_password
Data type: String
Specifies the password to set on Debian/Ubuntu for the sysmaint user used
during updates. Default: sysmaint
default_options
Data type: Hash
Internal parameter, do NOT change! Use $override_options
to customize
MySQL options.
epel_needed
Data type: Boolean
Specifies whether or not the EPEL repository should be enabled on
RedHat-based systems. This is required for certain vendors and SST methods
to install packages such as socat.
Default: true
galera_master
Data type: String
Specifies the node that will bootstrap the cluster if all nodes go down.
Default: $fqdn
galera_package_ensure
Data type: Optional[String]
Specifies the ensure state for the galera package. Note that some vendors
do not allow installation of the wsrep-enabled MySQL/MariaDB and galera
(arbitrator) on the same server. Valid options: all values supported by
the package type. Default: absent
Default value: undef
galera_package_name
Data type: Optional[String]
Specifies the name of the galera wsrep package to install. Default: A vendor-, version- and OS-specific value.
Default value: undef
galera_servers
Data type: Optional[Array]
Specifies a list of IP addresses of the nodes in the galera cluster.
Default: [${facts['networking']['ip']}]
Default value: undef
libgalera_location
Data type: Optional[String]
Specifies the location of the WSREP libraries.
Default value: undef
local_ip
Data type: String
Specifies the IP address of this node to use for communications.
Default: $networking.ip
manage_additional_packages
Data type: Boolean
Specifies whether additional packages should be installed that may be
required for SST and other features. Default: true
mysql_package_name
Data type: Optional[String]
Specifies the name of the server package to install. Default: A vendor-, version- and OS-specific value.
Default value: undef
mysql_port
Data type: Integer
Specifies the port to use for MySQL/MariaDB. Default: 3306
mysql_restart
Data type: Boolean
Specifies the option to pass through to mysql::server::restart
. This can
cause issues during bootstrapping if switched on. Default: false
mysql_service_name
Data type: Optional[String]
Specifies the option to pass through to mysql::server
.
Default: A vendor-, version- and OS-specific value.
Default value: undef
override_options
Data type: Hash
Specifies options to pass to mysql::server
class. See the puppetlabs-mysql
documentation for more information. Default: {}
override_repos
Data type: Optional[Array]
Usually the required YUM/APT repositories are automatically selected,
depending on the values of $vendor_type
and $vendor_version
. This
parameter will override this to provide a custom selection of repositories.
Default value: undef
package_ensure
Data type: String
Specifies the ensure state for packages. Valid options: all values supported
by the package type. Default: present
purge_conf_dir
Data type: Boolean
Specifies the option to pass through to mysql::server
. Default: true
root_password
Data type: String
Specifies the MySQL/MariaDB root password.
rundir
Data type: String
Specifies the rundir for the MySQL/MariaDB service.
Default: /var/run/mysqld
service_enabled
Data type: Boolean
Specifies whether the MySQL/MariaDB service should be enabled.
Default: true
status_allow
Data type: String
Specifies the subnet or host(s) (in MySQL/MariaDB syntax) to allow status
checks from. Default: %
status_available_when_donor
Data type: Integer
Specifies whether the node will remain in the cluster when it enters donor
mode. Valid options: 0
(remove), 1
(remain). Default: 0
status_available_when_readonly
Data type: Integer
When set to 0, clustercheck will return a "503 Service Unavailable" if the
node is in the read_only state, as defined by the read_only
MySQL/MariaDB
variable. Values other than 0 have no effect. Default: -1
status_check
Data type: Boolean
Specifies whether to configure a user and script that will check the status
of the galera cluster. Default: true
status_check_type
Data type: Enum['systemd', 'xinetd']
Specifies the type of service to use for status checks. Supported values
are either systemd
or xinetd
, depending on the operating system.
status_cps
Data type: Optional[String]
Rate limit config for the xinetd status service.
Default value: undef
status_flags
Data type: Optional[String]
Flags for the xinetd status service.
Default value: undef
status_host
Data type: String
Specifies the cluster to add the cluster check user to. Default: localhost
status_instances
Data type: Optional[String]
Number of active instances for the xinetd status service.
Default value: undef
status_log_on_failure
Data type: Optional[String]
Specifies which fields xinetd will log on failure. Default: undef
Default value: undef
status_log_on_failure_operator
Data type: Optional[String]
Specifies which operator xinetd uses to output logs on failure.
Default value: undef
status_log_on_success
Data type: Optional[String]
Specifies which fields xinetd will log on success. Default: ''
Default value: undef
status_log_on_success_operator
Data type: String
Specifies which operator xinetd uses to output logs on success.
Default: =
status_log_type
Data type: Optional[String]
Log type for the xinetd status service.
Default value: undef
status_password
Data type: String
Specifies the password of the status check user.
status_port
Data type: Integer
Specifies the port for cluster check service. Default: 9200
status_script
Data type: Stdlib::Absolutepath
The script that will be used for status checks.
status_service_type
Data type: Optional[String]
Service type for the xinetd status service.
Default value: undef
status_system_group
Data type: String
The operating system group that will be managed for the status check.
status_system_user
Data type: String
The operating system user that will be managed for the status check.
status_system_user_config
Data type: Hash
The config for the operating system user.
status_systemd_service_name
Data type: String
The name of the systemd status service.
status_user
Data type: String
Specifies the name of the user to use for status checks.
Default: clustercheck
status_xinetd_service_name
Data type: String
The name of the xinetd status service.
validate_connection
Data type: Boolean
Specifies whether the module should ensure that the cluster can accept
connections at the point where the mysql::server
resource is marked
as complete. This is used because after returning success, the service
is still not quite ready. Default: true
vendor_type
Data type: Enum['codership', 'mariadb', 'percona']
Specifies the galera vendor (or flavour) to use.
Valid options: codership, mariadb, percona. Default: percona
vendor_version
Data type: Optional[String]
Specifies the galera version to use. To avoid accidential updates, set this to the required version. Default: A vendor- and OS-specific value. (Usually the most recent version.)
Default value: undef
wsrep_group_comm_port
Data type: Integer
Specifies the port to use for galera clustering. Default: 4567
wsrep_inc_state_transfer_port
Data type: Integer
Specifies the port to use for galera incremental state transfer.
Default: 4568
wsrep_sst_auth
Data type: String
Specifies the authentication information to use for SST.
Default: root:<%= $root_password %>
wsrep_sst_method
Data type: Enum['mariabackup', 'mysqldump', 'rsync', 'skip', 'xtrabackup', 'xtrabackup-v2']
Specifies the method to use for state snapshot transfer between nodes.
Valid options: mysqldump, rsync, skip, xtrabackup, xtrabackup-v2 (Percona).
Default: rsync
wsrep_state_transfer_port
Data type: Integer
Specifies the port to use for galera state transfer.
Default: 4444
galera::firewall
Open firewall ports used by galera using puppetlabs-firewall.
Parameters
The following parameters are available in the galera::firewall
class:
source
Data type: Optional[String]
Specifies the firewall source addresses to unblock. Valid options: a string. Default: undef
Default value: undef
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
4.0.1
Fixed
- Duplication of key
galera::mariadb::default_options
(#197)
4.0.0
This is a new major release with breaking changes. MariaDB 11.x is not yet supported because puppetlabs/mysql lacks support for it.
Added
- Add new parameter
$status_check_type
- Add new parameter
$status_systemd_service_name
- Add customization options for the xinetd service (#177)
- Add systemd-based status check (#191)
- Add support for new operating systems
- Add support for MariaDB 10.11 (LTS) (#192)
Changed
- Remove default values:
$vendor_type
,$vendor_version
- Disable option
pxc-encrypt-cluster-traffic
on Percona XtraDB 8.0 - Enable systemd-based status check on RHEL 9, Debian 12 and Ubuntu 24.04 (#191)
- Add new dependency for systemd-based status check (#191)
- Merge internal $default_options from multiple hierarchy levels
- Update Codership APT key
- Switch unit tests to Codership/MySQL 8.0, MariaDB 10.11 and XtraDB 8.0
- Extend unit tests (#191)
Fixed
- Revive
binlog_format
for MariaDB (#190) - Fix support for Percona XtraDB Cluster 8.0
- SST package install fails because repo is not yet configured
- Remove incompatible options from bootstrap workaround on Debian/Ubuntu
- Fix Percona XtraDB 8.0 package name on Debian/Ubuntu
- Fix Percona XtraDB 8.0 bootstrap command
- Fix Percona XtraDB
my.cnf
location on RHEL-based systems - Percona XtraDB 8.0 no longer supports option
wsrep_sst_auth
3.2.1 - 2024-03-13
Changed
- Remove deprecated option
binlog_format
from default config
3.2.0 - 2024-03-13
Changed
- Remove deprecated option
wsrep_slave_threads
from default config - Update PDK to 3.0.1
3.1.0 - 2023-07-31
Changed
- Change default value of
ensure
parameters topresent
(#185) - Replace deprecated function
mysql_password
(#186) - Update module dependencies
Fixed
- Fix compatibility with puppetlabs/stdlib v9.0.0
- Fix GitHub Actions (unit/acceptance tests)
3.0.2 - 2023-07-11
Changed
- Use modern facts in acceptance tests (#179)
Fixed
- Fix Puppet lint offenses (#179)
3.0.1 - 2022-08-17
Added
- Add an example Arbitrator config (see README)
Fixed
- Fix Arbitrator service unable to read config file
Removed
- Officially drop the concept of "stable" branches on GitHub
3.0.0 - 2022-07-04
This is a new major release. It supports the two most recent (long-term) versions of Codership Galera, Percona XtraDB and MariaDB. Older versions may still work, but they are no longer officially supported (see README). This release contains breaking changes: Some MySQL parameters had to be removed from the default configuration and new APT/YUM repositories were introduced.
Added
- Add support for MariaDB 10.5 and 10.6 (#173)
- Add support for Codership on MySQL 8.0 (#159)
- Add support for Percona XtraDB Cluster 8.0 (#155)
Changed
- Add priority to Codership APT repositories (resolves installation issues)
- Use parameter for service name wherever possible (#170)
- Switch Percona to new YUM/APT repository layout
- Switch MariaDB to new YUM/APT repository layout
- Bump module dependencies and supported Puppet versions
- Update list of supported operation systems and versions
- Migrate tests to GitHub Actions
- Add puppetlabs/yumrepo_core as new module dependency
- Update PDK to 2.5.0
Fixed
- Fix broken /root/.my.cnf (#166)
- Fix MariaDB/Percona/Codership repo conflict on EL8 (#168)
- Fix creation of /root/.my.cnf when
$status_check=false
(#171) - Fix Arbitrator package name for Codership Galera 5.7 on EL7+EL8
- Fix Codership installation issues on Ubuntu 20.04 and EL8
- Fix most puppet-lint offenses
- Fix unit tests and acceptance tests
Removed
- Remove query_cache_size and query_cache_type from default options (#155)
- Remove innodb_locks_unsafe_for_binlog from default options (#159)
- Drop official support for Debian 9, Ubuntu 18.04, CentOS 6 and FreeBSD 12.x (they may still work)
- Remove outdated examples
2.2.0 - 2020-08-17
Fixed
- Fix nmap call to use IP address instead of ip:port (#162)
- Fix path to Bash in
clustercheck
script on FreeBSD
2.1.0 - 2020-05-07
This is a maintenance release.
Changed
- Fix duplicate declaration errors by replacing
ensure_resource()
withensure_packages()
(#158) - Re-enable the content-check for validating the server connection (#152)
2.0.0 - 2020-04-14
This is a new major release. It aims to fix many long-standing limitations, hence it introduces several breaking changes and should be tested in non-producton environments. Starting with this release unit tests and acceptance tests are required for all new features, this should further stabilize the module.
Added
- Add mandatory parameter
$cluster_name
(setswsrep_cluster_name
in server config) - Add support for Galera Arbitrator (#112)
- Add support for the FreeBSD operating system (#115)
- Add support for MariaDB 10.4 (#154)
- Add initial support for RHEL/CentOS 8 (#154)
- Add dependency voxpupuli/epel on RHEL/CentOS systems
- Add acceptance test for Codership Galera and MariaDB
Changed
- Officially declare all classes private, except
galera
andgalera::firewall
(see REFERENCE) - Breaking changes in all private classes, now everything is controlled from the
galera
class - Extensive refactoring of repository management (see README for new examples, #119, #112)
- Use the value of
wsrep_group_comm_port
wherever applicable in server and arbitrator config - Use
$mysql_port
to actually configure the server port - Automatically add WSREP provider options to server config (see README for details)
- Refactor management of
$additional_packages
- Change merge strategy for parameters matching
*::additional_packages
- Move parameter
$galera::repo::epel_needed
to classgalera
- Refactor evaluation of
$galera_package_ensure
(#145) - Migrate to Puppet Strings (#149)
- Convert to PDK (#114, #153)
- Rename private class
galera::mariadb
togalera::redhat
- Deprecate Puppet 5 (support will be dropped in one of the next releases)
- Spec test coverage is now at 100%
- Refine resource relationships in
galera::status
andgalera::validate
Fixed
- Fix bootstrap of new Percona XtraDB cluster (#118)
- Fix bootstrap of new Codership Galera cluster
- Fix default config on CentOS/RHEL 7 for non-MariaDB installations (#120)
- Fix package conflicts with vendor Percona (#145)
- Fix SST method "xtrabackup" can only be used with vendor Percona (#119)
- Fix MariaDB on CentOS/RHEL 6
- Fix APT config on Debian 8
- Fix acceptance tests and improve test coverage
- Fix Travis CI (#153)
- Fix tests on RHEL/CentOS 6
- Fix acceptance tests on Ubuntu
- Fix usage of
$status_check
ingalera::status
(#148) - Make APT config compatible with recent versions of puppetlabs/apt
Removed
- Remove
$manage_package_nmap
, functionality moved to$manage_additional_packages
- Remove parameters from
galera::repos
, parameters should be set in main class instead - Remove hardcoded EPEL config (using voxpupuli/epel instead)
- Remove parameters
$grep_binary
and$mysql_binary
(rely on properly configured paths instead) - Remove config for unsupported Ubuntu 14.04
1.0.6 - 2019-10-20
Changed
- Allow puppetlabs/stdlib 7
- Allow puppetlabs/mysql 10
- Allow puppetlabs/firewall 2
- Drop support for Ubuntu 14.04
- Add support for RHEL/CentOS 8
Fixed
- Fix
$apt_key_server
parameter for APT repositories (#143)
1.0.5 - 2019-08-26
Changed
- Change
$galera_package_ensure
default fromabsent
topresent
- Allow
mariabackup
in$wsrep_sst_method
- Add
MariaDB-backup
andsocat
to$additional_packages
for MariaDB
Fixed
- Fix RHEL MariaDB YUM repo URL (#139)
- Fix README typos and errors (#140)
1.0.4 - 2019-04-30
This is a maintenance release.
Added
- Add new RPM GPG key for Percona (#131)
- Resurrect "xtrabackup-v2" SST method for Percona (#137)
Fixed
- Fix MariaDB repo handling (#134)
- Fix scope and handling of deb_sysmaint_password (#136)
1.0.3 - 2019-03-03
This is a maintenance release.
Added
- Add support for MariaDB 10.2 for Debian family (#126)
- Add support for puppetlabs-mysql 8.x, puppetlabs-stdlib 6.x
Changed
- Drop support for Puppet 4.x
Fixed
- Fix default galera package for MariaDB (#127)
- Fix compatibility issue with puppetlabs-mysql 8.0.0 (#128)
1.0.2 - 2018-11-05
Fixed
- Fix crash on Puppet 5.5.7 (#123)
- Bump puppetlabs-mysql requirement to 6.0.0 (#125)
1.0.1 - 2018-11-05
Added
- Add missing default params for MariaDB 10.1 and 10.3 on Debian (#122)
Fixed
- Fix variables in
clustercheck.epp
(#121) - Remove default value of
$galera_servers
to avoid migration issues (#124) - Small style fixes
1.0.0 - 2018-10-09
Summary
This is the first release after extensive code refactoring and introduces multiple incompatible changes. It also drops support for EOL Puppet releases. Please try first in a test environment to avoid serious breakage. The 0.7 release series is considered obsolete now.
Added
- Add Hiera 5 module data, this will make it easy to add support for new versions/vendors
- Add support for current versions of Percona XtraDB, Codership Galera Cluster and MariaDB
- Add documentation for all parameters (README)
Changed
- Drop params.pp, move defaults to hiera module data (and provide a compatibility layer for non-hiera envs)
- Change default values of
$vendor_version
(use most recent version, depending on OS) - Rename all
$galera::repo
parameters - Change names of APT/YUM repos (it's recommended to purge unmanaged repositories, otherwise old repos must be removed manually)
- Change
$sst_method
: Drop support forxtrabackup-v2
option,xtrabackup
must be used instead - Change
$bind_address
: Default to::
- Change
$galera_servers
and$local_ip
: Default to$facts['networking']['ip']
- Change
$root_password
and$status_password
: Drop insecure default values, instead the user is expected to provide values - Change default value of
$galera_package_ensure
toabsent
to avoid package conflicts in Percona 5.7
Removed
- Drop support for EOL operating systems: CentOS 5, Debian 7, Ubuntu 12.04
- Drop support for EOL databases: MariaDB 5.5 (except on Ubuntu 14.04)
- Drop support for Puppet 3 and other EOL releases, require Puppet 4.10+
Fixed
- Fix bootstrap_command in multiple scenarios
- Fix package names and service names
- Style fixes
0.7.2 - 2018-08-10
- Enhancement: Use dport parameter for puppetlabs-firewall (#59)
- Enhancement: Remove upper restriction on puppetlabs-apt (#98)
- Enhancement: Add galera_package_parameter, so we can ensure version on galera package (#100)
- Enhancement: Make bootstrap_command configurable (#101)
- Enhancement: Add possibility to purge config dir (#101)
- Enhancement: Update upper restriction on puppetlabs-mysql
- Bugfix: Use an unlisted service type instead to avoid augeas dependency (#101)
- Bugfix: Support systemd bootstrap in Ubuntu and Debian (#105)
- Bugfix: Fix mysql dependency cycle (#107)
- License: Relicense under 2-Clause BSD license (#92)
0.7.1 - 2017-06-06
- Feature: Add Percona XtraDB cluster 5.6 and 5.7 support on RedHat (experimental!)
0.7.0 - 2017-06-06
- WARNING: First release in almost a year, please use with caution!
- Feature: Support MySQL 5.6 and 5.7 with codership repo (#76, #86)
- Feature: Allow Tinkering with mysqlchk Logging (#79)
- Feature: Add Percona xtradb cluster 5.7 support (#85)
- Feature: Updates for MariaDB version with systemd support (#90)
- Feature: Add new parameter $create_status_user (#88)
- Feature: Allow to disable installation of additional packages (#77)
- Feature: Allow custom values for parameter $mysql_service_name (#87)
- Bugfix: Update for debian-sys-maint (#78)
- Bugfix: Update Percona key and server (#81)
- Bugfix: Fix debian-sys-maint password for Puppet 4 (#83)
- Bugfix: Drop use of host discovery in nmap probe (#84)
- Bugfix: Fix mysqlchk entry in /etc/services on CentOS (#89)
- Bugfix: Correct typo in package name (#91)
0.6.0
- Bump puppet-mysql requirement to 3.8.0
- Recent dependency cycle fixes require the latest mysql module
0.5.0
- Update README
0.4.0
- Bugfix: Fixes for problems when running on RedHat
0.3.0
- Feature: Expose create_root_user flag
0.2.0
- Bugfix: Fix service title for debian
0.1.0
- Bugfix: Additional package as an ensure_resource
Dependencies
- puppetlabs/stdlib (>= 9.0.0 < 10.0.0)
- markt/marktlib (>= 0.1.0 < 2.0.0)
- puppetlabs/mysql (>= 15.0.0 < 17.0.0)
- puppetlabs/firewall (>= 7.0.0 < 9.0.0)
- puppetlabs/xinetd (>= 3.4.0 < 4.0.0)
- puppetlabs/yumrepo_core (>= 2.0.0 < 3.0.0)
- puppet/systemd (>= 5.2.0 < 8.0.0)
- puppet/epel (>= 5.0.0 < 6.0.0)
- puppetlabs/apt (>= 9.4.0 < 10.0.0)
Copyright (C) 2017-2023 Frank Wall Copyright (C) 2014-2017 Michael Chapman All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.