--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/mysql/manifests/backup/mysqldump.pp Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,70 @@
+# See README.me for usage.
+class mysql::backup::mysqldump (
+ $backupuser = '',
+ $backuppassword = '',
+ $backupdir = '',
+ $backupdirmode = '0700',
+ $backupdirowner = 'root',
+ $backupdirgroup = $mysql::params::root_group,
+ $backupcompress = true,
+ $backuprotate = 30,
+ $ignore_events = true,
+ $delete_before_dump = false,
+ $backupdatabases = [],
+ $file_per_database = false,
+ $include_triggers = false,
+ $include_routines = false,
+ $ensure = 'present',
+ $time = ['23', '5'],
+ $prescript = false,
+ $postscript = false,
+ $execpath = '/usr/bin:/usr/sbin:/bin:/sbin',
+) {
+
+ mysql_user { "${backupuser}@localhost":
+ ensure => $ensure,
+ password_hash => mysql_password($backuppassword),
+ require => Class['mysql::server::root_password'],
+ }
+
+ if $include_triggers {
+ $privs = [ 'SELECT', 'RELOAD', 'LOCK TABLES', 'SHOW VIEW', 'PROCESS', 'TRIGGER' ]
+ } else {
+ $privs = [ 'SELECT', 'RELOAD', 'LOCK TABLES', 'SHOW VIEW', 'PROCESS' ]
+ }
+
+ mysql_grant { "${backupuser}@localhost/*.*":
+ ensure => $ensure,
+ user => "${backupuser}@localhost",
+ table => '*.*',
+ privileges => $privs,
+ require => Mysql_user["${backupuser}@localhost"],
+ }
+
+ cron { 'mysql-backup':
+ ensure => $ensure,
+ command => '/usr/local/sbin/mysqlbackup.sh',
+ user => 'root',
+ hour => $time[0],
+ minute => $time[1],
+ require => File['mysqlbackup.sh'],
+ }
+
+ file { 'mysqlbackup.sh':
+ ensure => $ensure,
+ path => '/usr/local/sbin/mysqlbackup.sh',
+ mode => '0700',
+ owner => 'root',
+ group => $mysql::params::root_group,
+ content => template('mysql/mysqlbackup.sh.erb'),
+ }
+
+ file { 'mysqlbackupdir':
+ ensure => 'directory',
+ path => $backupdir,
+ mode => $backupdirmode,
+ owner => $backupdirowner,
+ group => $backupdirgroup,
+ }
+
+}