mariadb: Initial version of mariadb module.

This commit is contained in:
Timo Makinen 2016-01-15 13:30:50 +02:00
parent f069517a7a
commit d82e3021a4
4 changed files with 238 additions and 0 deletions

View file

@ -0,0 +1,38 @@
# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"
# in the [mysqld_safe] section as follows:
#
# [mysqld_safe]
# log-error=/var/log/mariadb/mariadb.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !
# Then, un-comment the following lines to enable rotation of mysql's log file:
/var/log/mariadb/mariadb.log {
create 640 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}

11
mariadb/files/my.cnf Normal file
View file

@ -0,0 +1,11 @@
[mysqld]
datadir=/srv/mariadb
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients.
old_passwords=1
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

157
mariadb/manifests/init.pp Normal file
View file

@ -0,0 +1,157 @@
# 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"],
}
}

View file

@ -0,0 +1,32 @@
#!/bin/sh
umask 077
DESTDIR="<%= @datadir %>"
MAXAGE="<%= @maxage %>"
DATE=`date "+%Y-%m-%d"`
HOME="`getent passwd ${USER} | cut -d : -f 6`"
OPTS=""
if [ ! -d ${DESTDIR} ]; then
echo "ERR: MariaDB backup directory [${DESTDIR}] does not exist" 1>&2
exit 1
fi
cd ${DESTDIR} && {
find . -xdev -mindepth 2 -maxdepth 2 -type f -mtime +<%= @maxage %> -execdir rm -f -- {} \;
find . -xdev -depth -mindepth 1 -maxdepth 1 -type d -empty -execdir rmdir -- {} \;
}
DESTDIR=${DESTDIR}/${DATE}
mkdir -p ${DESTDIR}
for db in `mysql -e 'show databases' -s` ; do
case ${db} in
Database|information_schema|performance_schema)
continue
;;
esac
mysqldump -E --add-drop-table ${OPTS} ${db} | gzip > ${DESTDIR}/${db}.${DATE}.gz
done