From 5fe01d46e13464cc709e1cfe6b7bd2207f38053c Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 19 Jan 2016 16:01:54 +0100 Subject: [PATCH 1/3] add routine to create mysql, psql and misc scripts --- manifests/config.pp | 38 +++++++++++++++++++++++++++++++++++--- manifests/init.pp | 6 +++++- manifests/params.pp | 11 +++++++++++ templates/rsnapshot.erb | 5 ----- 4 files changed, 51 insertions(+), 9 deletions(-) diff --git a/manifests/config.pp b/manifests/config.pp index 4854a42..27aebd2 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -30,7 +30,7 @@ class rsnapshot::config ( # { foo => } and converts those to { foo => {} } $hosts_clean = assert_empty_hash($hosts) - $hosts_clean.each |String $host, Hash $hash | { + $hosts_clean.each |String $host, $hash | { $backup_user = pick($hash['backup_user'], $rsnapshot::params::config_backup_user) $default_backup_dirs = pick($rsnapshot::default_backup, $rsnapshot::params::config_default_backup) $backup_levels = pick($hash['backup_levels'], $rsnapshot::params::config_backup_levels, 'weekly') @@ -74,7 +74,7 @@ class rsnapshot::config ( $sync_first = pick_undef($hash['sync_first'], $rsnapshot::params::config_sync_first) $use_lazy_deletes = pick_undef($hash['use_lazy_deletes'], $rsnapshot::params::config_use_lazy_deletes) $rsync_numtries = pick_undef($hash['rsync_numtries'], $rsnapshot::params::config_rsync_numtries) - $backup_scripts = pick_undef($hash['backup_scripts'], $rsnapshot::params::config_backup_scripts) + #$backup_scripts = pick_undef($hash['backup_scripts'], $rsnapshot::params::config_backup_scripts) $snapshot_dir = "${config_snapshot_root}/${host}" $config = "${conf_d}/${host}.rsnapshot.conf" @@ -114,7 +114,7 @@ class rsnapshot::config ( content => template('rsnapshot/include.erb'), } } - + if $exclude != '' { file { $exclude_file: ensure => 'file', @@ -125,6 +125,38 @@ class rsnapshot::config ( file { $config: content => template('rsnapshot/rsnapshot.erb'), } + + if has_key($hash, backup_scripts) { + + $hash[backup_scripts].each |$script, $credentials| { + if is_hash($credentials) { + $dbbackup_user = $credentials['dbbackup_user'] + $dbbackup_password = $credentials['dbbackup_password'] + } else { + $dbbackup_user = $rsnapshot::default_backup_scripts[$script]['dbbackup_user'] + $dbbackup_password = $rsnapshot::default_backup_scripts[$script]['dbbackup_password'] + } + #notify { "Script: $script ----- Credentials: $credentials ----- Host: $host": } + + + file_line { "${host}_${script}_backup": + ensure => present, + path => $config, + line => "backup_script ${conf_d}/${host}.${script}.sh ./${script}", + } + file { "${conf_d}/${host}.${script}.sh": + ensure => present, + content => template("rsnapshot/${script}.sh.erb"), + mode => '0755', + } + + } + } + + + + + $cronfile = "${cron_dir}/${host}" concat { $cronfile: } diff --git a/manifests/init.pp b/manifests/init.pp index 5c9e950..d84feec 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -13,8 +13,12 @@ class rsnapshot ( $package_name = $rsnapshot::params::package_name, $package_ensure = $rsnapshot::params::package_ensure, $cron = $rsnapshot::params::cron, + $backup_scripts = $rsnapshot::params::backup_scripts, + $exclude = $rsnapshot::params::config_exclude, ) inherits rsnapshot::params { - + + $default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts + $default_exclude = $rsnapshot::params::config_exclude + $exclude if $hosts { class { '::rsnapshot::install': }-> class { '::rsnapshot::config': } diff --git a/manifests/params.pp b/manifests/params.pp index 8765280..284a0dc 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -91,4 +91,15 @@ class rsnapshot::params { weekday => '*', }, } + $backup_scripts = { + mysql => { + dbbackup_user => 'root', + dbbackup_password => 'myFancyPassWord', + }, + psql => { + dbbackup_user => 'postgres', + dbbackup_password => '', + }, + misc => {}, + } } diff --git a/templates/rsnapshot.erb b/templates/rsnapshot.erb index 8b088ad..3f6af0b 100644 --- a/templates/rsnapshot.erb +++ b/templates/rsnapshot.erb @@ -130,9 +130,4 @@ backup <%= @backup_user %>@<%=@host%>:<%= source %> <%=dest%> backup <%=@host%>:<%= source %> <%=dest%> <% end -%> <% end -%> -<% if @backup_scripts != '' -%> -<% @backup_scripts.each_pair do |source, dest| -%> -backup_script <%= source %> <%= dest %> -<% end -%> -<%end-%> From 455ba135729b9029a60654ffe9913c75da09c29c Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 19 Jan 2016 17:23:40 +0100 Subject: [PATCH 2/3] add backup script feature, a lot of fixes --- manifests/config.pp | 56 +++++++++++++++++++---------------------- manifests/init.pp | 1 + manifests/params.pp | 2 +- templates/rsnapshot.erb | 5 ++-- 4 files changed, 30 insertions(+), 34 deletions(-) diff --git a/manifests/config.pp b/manifests/config.pp index 27aebd2..81900d3 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -9,7 +9,7 @@ class rsnapshot::config ( $config_version = $rsnapshot::params::config_version $lockpath = pick($rsnapshot::lockpath, $rsnapshot::params::config_lockpath, '/var/run/rsnapshot') $conf_d = pick($rsnapshot::conf_d, $rsnapshot::params::conf_d, '/etc/rsnapshot') - $snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::params::config_snapshot_root, '/backup') + $snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::snapshot_root, '/backup') $default_cron = assert_empty_hash($::rsnapshot::cron) # make sure lock path and conf path exist file { $conf_d: @@ -121,46 +121,42 @@ class rsnapshot::config ( content => template('rsnapshot/exclude.erb'), } } - - file { $config: + concat { $config: + } + concat::fragment { "${config} for ${host}": + target => $config, content => template('rsnapshot/rsnapshot.erb'), } - if has_key($hash, backup_scripts) { + if has_key($hash, backup_scripts) { - $hash[backup_scripts].each |$script, $credentials| { - if is_hash($credentials) { - $dbbackup_user = $credentials['dbbackup_user'] - $dbbackup_password = $credentials['dbbackup_password'] - } else { - $dbbackup_user = $rsnapshot::default_backup_scripts[$script]['dbbackup_user'] - $dbbackup_password = $rsnapshot::default_backup_scripts[$script]['dbbackup_password'] - } - #notify { "Script: $script ----- Credentials: $credentials ----- Host: $host": } - + $hash[backup_scripts].each |$script, $credentials| { - file_line { "${host}_${script}_backup": - ensure => present, - path => $config, - line => "backup_script ${conf_d}/${host}.${script}.sh ./${script}", - } - file { "${conf_d}/${host}.${script}.sh": - ensure => present, - content => template("rsnapshot/${script}.sh.erb"), - mode => '0755', - } - + if is_hash($credentials) { + $dbbackup_user = $credentials['dbbackup_user'] + $dbbackup_password = $credentials['dbbackup_password'] + } else { + $dbbackup_user = $rsnapshot::default_backup_scripts[$script]['dbbackup_user'] + $dbbackup_password = $rsnapshot::default_backup_scripts[$script]['dbbackup_password'] } + + concat::fragment { "${host}_${script}_backup": + target => $config, + content => "backup_script ${conf_d}/${host}.${script}.sh ./${script}\n", + } + + file { "${conf_d}/${host}.${script}.sh": + ensure => present, + content => template("rsnapshot/${script}.sh.erb"), + mode => '0755', + } + } - - - - + } $cronfile = "${cron_dir}/${host}" concat { $cronfile: } - # create cron files for each backup level $backup_levels.each |String $level| { diff --git a/manifests/init.pp b/manifests/init.pp index d84feec..aed59b6 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -15,6 +15,7 @@ class rsnapshot ( $cron = $rsnapshot::params::cron, $backup_scripts = $rsnapshot::params::backup_scripts, $exclude = $rsnapshot::params::config_exclude, + $snapshot_root = $rsnapshot::params::config_snapshot_root, ) inherits rsnapshot::params { $default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts diff --git a/manifests/params.pp b/manifests/params.pp index 284a0dc..2f9315b 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -8,7 +8,7 @@ class rsnapshot::params { $package_name = 'rsnapshot' $package_ensure = 'present' $cron_dir = '/etc/cron.d' - $config_backup_levels = [ 'daily', 'weekly', ] + $config_backup_levels = [ 'daily', 'weekly', 'monthly' ] $config_backup_defaults = true $config_version = '1.2' $config_cmd_cp = '/bin/cp' diff --git a/templates/rsnapshot.erb b/templates/rsnapshot.erb index 3f6af0b..f6d6868 100644 --- a/templates/rsnapshot.erb +++ b/templates/rsnapshot.erb @@ -1,8 +1,8 @@ # This file is being managed by puppet -# Module 'rsnaphost' +# Module 'rsnapshot' config_version <%= @config_version %> -snapshot_root <%= @snapshot_root %> +snapshot_root <%= @snapshot_root -%>/<%=@host%> <% if @no_create_root != '' -%> no_create_root <%= @no_create_root %> <% end -%> @@ -130,4 +130,3 @@ backup <%= @backup_user %>@<%=@host%>:<%= source %> <%=dest%> backup <%=@host%>:<%= source %> <%=dest%> <% end -%> <% end -%> - From e68374cf4384a45afee82c6c6bb9499bfc941520 Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 19 Jan 2016 17:37:59 +0100 Subject: [PATCH 3/3] bump version and update README --- README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- metadata.json | 2 +- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 77c6d55..158109c 100644 --- a/README.md +++ b/README.md @@ -358,6 +358,53 @@ Default is: } ``` +#### `$backup_scripts` +Additional scripts to create, possible values are: mysql, psql, misc + +Default is: + +```puppet + $backup_scripts = { + mysql => { + dbbackup_user => 'root', + dbbackup_password => 'myFancyPassWord', + }, + psql => { + dbbackup_user => 'postgres', + dbbackup_password => '', + }, + misc => {}, + } +``` + +Configuration example: + +```yaml +rsnapshot::backup_scripts: + mysql: + dbbackup_user: 'dbbackup' + dbbackup_password: 'hunter2' + psql: + dbbackup_user: 'dbbackup' + dbbackup_password: 'yeshorsebatterystaple' + +rsnapshot::hosts: + foobar.com: + backup_scripts: + mysql: + psql: + bazqux:de: + backup_scripts: + mysql: + dbbackup_user: 'myuser' + dbbackup_password: 'mypassword' +``` + +This creates +- a mysql and a psql backup script for `foobar.com` using the credentials `dbbackup:hunter2` for mysql and `dbbackup:yeshorsebatterystaple` for psql +- a mysql backup script for `bazqux.de` using the credentials `myuser:mypassword` + + ### rsnapshot configuration variables Please read up on the following in the [rsnapshot manpage](http://linux.die.net/man/1/rsnapshot) @@ -493,9 +540,6 @@ Default is: 1 #### `$use_lazy_deletes` Default is: false -#### `$backup_scripts` -Default is: {} - ## Limitations Currently, this module support CentOS, Fedora, Ubuntu and Debian. diff --git a/metadata.json b/metadata.json index f0873e1..61ca00a 100644 --- a/metadata.json +++ b/metadata.json @@ -1,6 +1,6 @@ { "name": "loomsen-rsnapshot", - "version": "0.3.2", + "version": "0.4.0", "author": "loomsen", "summary": "Configures rsnapshot.", "license": "Apache-2.0",