puppet/mariadb/manifests/init.pp

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"],
}
}