# Install MySQL client utilities. # class mysql::client { package { "mysql": ensure => installed, } } # Install MySQL server # # === Global variables # # $mysql_datadir: # Directory where MySQL databases are stored. # class mysql::server { package { "mysql-server": ensure => installed, } if $mysql_datadir { file { "${mysql_datadir}": ensure => directory, mode => 0755, owner => mysql, group => mysql, require => Package["mysql-server"], } file { "/srv/mysql": ensure => link, target => "${mysql_datadir}", require => File["${mysql_datadir}"], } } else { file { "/srv/mysql": ensure => directory, mode => 0755, owner => mysql, group => mysql, require => Package["mysql-server"], } } service { "mysqld": ensure => running, enable => true, require => File["/srv/mysql"], } file { "/etc/my.cnf": ensure => present, source => [ "puppet:///files/mysql/my.cnf.${hostname}", "puppet:///files/mysql/my.cnf", "puppet:///mysql/my.cnf", ], mode => 0644, owner => root, group => root, require => Package["mysql-server"], notify => Service["mysqld"], } file { "/etc/logrotate.d/mysql": ensure => present, source => "puppet:///mysql/mysql.logrotate", mode => 0644, owner => root, group => root, require => Package["mysql-server"], } file { "/var/lib/mysql": ensure => directory, mode => 0700, owner => mysql, group => mysql, require => Package["mysql-server"], } } # Install MySQL daily backup job # # === Global variables # # $mysql_backup_datadir: # Directory where MySQL backups are stored. Defaults to /srv/mysql/backup # # $mysql_backup_maxage: # How long to keep MySQL backups. Defaults to 168 hours (7 days). # class mysql::server::backup { include mysql::client if ! $mysql_backup_datadir { $mysql_backup_datadir = "/srv/mysql/backup" } if ! $mysql_backup_maxage { $mysql_backup_maxage = "168" } file { $mysql_backup_datadir: ensure => directory, mode => 0700, owner => root, group => root, } file { "/etc/cron.daily/mysql-backup": ensure => present, content => template("mysql/mysql-backup.cron.erb"), mode => 0755, owner => root, group => root, require => [ File[$mysql_backup_datadir], Package["mysql"], ], } } # Install MySQL status reporting. # class mysql::server::report { package { "mysqlreport": ensure => installed, } file { "/var/log/mysql-report": ensure => directory, mode => 0644, owner => root, group => root, require => Package["mysql-server"], } file { "/etc/cron.daily/mysql-report": ensure => present, source => "puppet:///mysql/mysql-report.cron", mode => 0755, owner => root, group => root, require => File["/var/log/mysql-report"], } }