dev/provisioning/modules/mysql/manifests/backup/mysqldump.pp
changeset 28 b0b56e0f8c7f
--- /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,
+  }
+
+}