157 lines
3.8 KiB
Puppet
157 lines
3.8 KiB
Puppet
|
|
# Install MariaDB client utilities.
|
|
#
|
|
class mariadb::client {
|
|
|
|
package { "mariadb":
|
|
ensure => installed,
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Install MariaDB server
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $datadir:
|
|
# Directory where MariaDB databases are stored.
|
|
#
|
|
# $root_password:
|
|
# Password for MariaDB server root user.
|
|
#
|
|
class mariadb::server($datadir="/srv/mariadb", $config=undef, $root_password=undef) {
|
|
|
|
package { "mariadb-server":
|
|
ensure => installed,
|
|
}
|
|
|
|
if $datadir != "/srv/mariadb" {
|
|
file { $datadir:
|
|
ensure => directory,
|
|
mode => "0755",
|
|
owner => "mysql",
|
|
group => "mysql",
|
|
seltype => "mysqld_db_t",
|
|
require => Package["mariadb-server"],
|
|
}
|
|
file { "/srv/mariadb":
|
|
ensure => link,
|
|
target => $datadir,
|
|
seltype => "mysqld_db_t",
|
|
require => File[$datadir],
|
|
}
|
|
} else {
|
|
file { "/srv/mariadb":
|
|
ensure => directory,
|
|
mode => "0755",
|
|
owner => "mysql",
|
|
group => "mysql",
|
|
seltype => "mysqld_db_t",
|
|
require => Package["mariadb-server"],
|
|
}
|
|
}
|
|
|
|
selinux::manage_fcontext { "/srv/mariadb(/.*)?":
|
|
type => "mysqld_db_t",
|
|
before => File["/srv/mariadb"],
|
|
}
|
|
if $datadir {
|
|
selinux::manage_fcontext { "${datadir}(/.*)?":
|
|
type => "mysqld_db_t",
|
|
before => File[$datadir],
|
|
}
|
|
}
|
|
|
|
service { "mariadb":
|
|
ensure => running,
|
|
enable => true,
|
|
require => File["/srv/mariadb"],
|
|
}
|
|
|
|
file { "/etc/my.cnf":
|
|
ensure => present,
|
|
source => $config ? {
|
|
undef => "puppet:///modules/mariadb/my.cnf",
|
|
default => $config,
|
|
},
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
require => Package["mariadb-server"],
|
|
notify => Service["mariadb"],
|
|
}
|
|
|
|
file { "/etc/logrotate.d/mariadb":
|
|
ensure => present,
|
|
source => "puppet:///modules/mariadb/mariadb.logrotate",
|
|
mode => "0644",
|
|
owner => "root",
|
|
group => "root",
|
|
require => Package["mariadb-server"],
|
|
}
|
|
|
|
case $root_password {
|
|
undef: {
|
|
file { "/var/lib/mysql":
|
|
ensure => directory,
|
|
mode => "0700",
|
|
owner => "mysql",
|
|
group => "mysql",
|
|
require => Package["mariadb-server"],
|
|
}
|
|
}
|
|
default: {
|
|
file { "/root/.my.cnf":
|
|
ensure => present,
|
|
content => "[client]\nuser=\"root\"\npassword=\"${root_password}\"\n",
|
|
mode => "0600",
|
|
owner => "root",
|
|
group => "root",
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Install MariaDB daily backup job
|
|
#
|
|
# === Global variables
|
|
#
|
|
# $datadir:
|
|
# Directory where MariaDB backups are stored. Defaults
|
|
# to /srv/mariadb-backup
|
|
#
|
|
# $maxage:
|
|
# How long to keep MariaDB backups. Defaults to 7 days.
|
|
#
|
|
class mariadb::server::backup($datadir="/srv/mariadb-backup", $maxage="7") {
|
|
|
|
require mariadb::client
|
|
|
|
file { $datadir:
|
|
ensure => directory,
|
|
mode => "0700",
|
|
owner => "root",
|
|
group => "root",
|
|
}
|
|
|
|
file { "/usr/local/sbin/mariadb-backup":
|
|
ensure => present,
|
|
content => template("mariadb/mariadb-backup.cron.erb"),
|
|
mode => "0755",
|
|
owner => "root",
|
|
group => "root",
|
|
require => File[$datadir],
|
|
}
|
|
|
|
cron { "mariadb-backup":
|
|
command => "/usr/local/sbin/mariadb-backup",
|
|
user => "root",
|
|
hour => "0",
|
|
minute => "30",
|
|
require => File["/usr/local/sbin/mariadb-backup"],
|
|
}
|
|
|
|
}
|