From decccb771f09936fcfff443107d2f83fb20ea9de Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Wed, 21 Dec 2016 10:34:57 -0700 Subject: [PATCH 01/21] fix rspec tests Missing ::osfamily fact. --- spec/classes/init_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index 05d37a9..417fdbc 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -1,5 +1,7 @@ require 'spec_helper' describe 'rsnapshot' do + let(:facts) {{ :osfamily => 'RedHat' }} + it { should contain_class('rsnapshot::params') } it { is_expected.to compile } end From cf50ff6251e21092a3f6a74f4919bd2f61375052 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Wed, 21 Dec 2016 10:36:49 -0700 Subject: [PATCH 02/21] fix validation warning Logic error --- templates/mysql.sh.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/mysql.sh.erb b/templates/mysql.sh.erb index 210e51f..000212b 100644 --- a/templates/mysql.sh.erb +++ b/templates/mysql.sh.erb @@ -16,7 +16,7 @@ dbs=( ) <%end-%> for db in "${dbs[@]}"; do -<% if (@dbbackup_user == 'root' && @dbbackup_password = '' )-%> +<% if (@dbbackup_user == 'root' && @dbbackup_password == '' )-%> ssh -l <%=@backup_user-%> "$host" "<%=@dumper-%> <%=@dump_flags-%> ${db}" > "$db".sql <%else-%> ssh -l <%=@backup_user-%> "$host" "<%=@dumper-%> --user=<%=@dbbackup_user-%> --password='<%=@dbbackup_password-%>' <%=@dump_flags-%> ${db}" > "$db".sql From cb04f5e70f0afbd4bb15b1d9972ce70a2f44d0d9 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Wed, 21 Dec 2016 10:42:29 -0700 Subject: [PATCH 03/21] add trivial .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d04d974 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.bundle +Gemfile.lock From f6e32dd53bcd9e109157740f857236fa15c84b20 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Wed, 21 Dec 2016 10:48:30 -0700 Subject: [PATCH 04/21] add missing dep on concat module --- .fixtures.yml | 6 ++++-- metadata.json | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.fixtures.yml b/.fixtures.yml index c32c285..bfedcc1 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -1,8 +1,10 @@ fixtures: forge_modules: - stdlib: + stdlib: repo: "puppetlabs/stdlib" - epel: + epel: repo: "stahnma/epel" + concat: + repo: "puppetlabs/concat" symlinks: "rsnapshot": "#{source_dir}" diff --git a/metadata.json b/metadata.json index 144f071..c160005 100644 --- a/metadata.json +++ b/metadata.json @@ -18,7 +18,8 @@ ], "dependencies": [ { "name": "puppetlabs-stdlib","version_range": ">= 1.0.0" }, - { "name": "stahnma-epel","version_range": ">= 1.0.0" } + { "name": "stahnma-epel","version_range": ">= 1.0.0" }, + { "name": "puppetlabs-concat","version_range": ">= 2.0.0 < 3.0.0" } ], "operatingsystem_support": [ { From feb0898c01a92914b0cb0ad9c0ed489e36a5f882 Mon Sep 17 00:00:00 2001 From: Joshua Hoblitt Date: Wed, 21 Dec 2016 10:51:12 -0700 Subject: [PATCH 05/21] add metadata-json-lint gem --- Gemfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile b/Gemfile index 5ce94b0..8221837 100644 --- a/Gemfile +++ b/Gemfile @@ -5,3 +5,4 @@ gem 'puppet', puppetversion gem 'puppetlabs_spec_helper', '>= 0.8.2' gem 'puppet-lint', '>= 1.0.0' gem 'facter', '>= 1.7.0' +gem 'metadata-json-lint' From c6b7caefb719cb5f70a68b28cc7b3e6aee534284 Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 7 Feb 2017 17:33:01 +0100 Subject: [PATCH 06/21] add fixed ruby version to travis.yml --- .gitignore | 2 ++ .travis.yml | 4 ++++ README.md | 2 -- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d04d974..9bf2add 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .bundle Gemfile.lock +pkg/ +vendor/ diff --git a/.travis.yml b/.travis.yml index c4307e1..965e861 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,3 +10,7 @@ matrix: env: PUPPET_GEM_VERSION="~> 4.0" notifications: email: false +language: ruby +rvm: + - 2.1 + - jruby diff --git a/README.md b/README.md index ac6b9fb..cdaefb1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # rsnapshot -## NOTE: ! Configuration for backup_scripts changed with version 0.4.0 (it was pretty useless in prior versions) ! - #### Table of Contents 1. [Overview](#overview) From 7d39968e123e12da4e3ddd0803a946dabe1fdc12 Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 7 Feb 2017 17:36:15 +0100 Subject: [PATCH 07/21] remove jruby from travis.yml --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 965e861..eaf698a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,4 +13,3 @@ notifications: language: ruby rvm: - 2.1 - - jruby From a32ddcf208da6c628714f3923e20fd21e1464465 Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 7 Feb 2017 17:37:24 +0100 Subject: [PATCH 08/21] remove jruby from travis.yml --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index eaf698a..80b9acf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,8 @@ --- sudo: false language: ruby +rvm: + - 2.1 cache: bundler bundler_args: --without system_tests script: "bundle exec rake validate && bundle exec rake spec SPEC_OPTS='--format documentation'" @@ -10,6 +12,4 @@ matrix: env: PUPPET_GEM_VERSION="~> 4.0" notifications: email: false -language: ruby -rvm: - - 2.1 + From a394973d4a0afe353536360271904f53afb89b5d Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 7 Feb 2017 17:45:23 +0100 Subject: [PATCH 09/21] fix matrix build in travis.yml --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 80b9acf..5690ddc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,13 @@ --- sudo: false language: ruby -rvm: - - 2.1 cache: bundler bundler_args: --without system_tests script: "bundle exec rake validate && bundle exec rake spec SPEC_OPTS='--format documentation'" matrix: fast_finish: true include: + rvm: 2.1 env: PUPPET_GEM_VERSION="~> 4.0" notifications: email: false From 59cdc23ca18ac70fa7ef64686e45dc01318e572a Mon Sep 17 00:00:00 2001 From: Norbert Varzariu Date: Tue, 7 Feb 2017 18:08:10 +0100 Subject: [PATCH 10/21] add travis build status to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cdaefb1..0198c76 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/loomsen/puppet-rsnapshot.svg?branch=master)](https://travis-ci.org/loomsen/puppet-rsnapshot) + # rsnapshot #### Table of Contents From d7436ed58220ef58d4b0c313a681a863d6cf8276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Mon, 27 Feb 2017 09:49:59 +0100 Subject: [PATCH 11/21] added check_mk mk-job support --- manifests/init.pp | 3 ++- manifests/params.pp | 3 ++- templates/cron.erb | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 46bb154..a011f10 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -19,6 +19,8 @@ class rsnapshot ( $snapshot_root = $rsnapshot::params::config_snapshot_root, $backup_levels = $rsnapshot::params::config_backup_levels, $cron_service_name = $rsnapshot::params::cron_service_name, + $check_mk_job = $rsnapshot::params::config_check_mk_job, + ) inherits rsnapshot::params { $default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts @@ -32,4 +34,3 @@ class rsnapshot ( contain '::rsnapshot::service' } } - diff --git a/manifests/params.pp b/manifests/params.pp index 3cff43b..e905945 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -16,6 +16,7 @@ class rsnapshot::params { $config_backup_levels = [ 'daily', 'weekly', 'monthly' ] $config_backup_defaults = true $config_version = '1.2' + $config_check_mk_job = false $config_cmd_cp = '/bin/cp' $config_cmd_rm = '/bin/rm' $config_cmd_rsync = '/usr/bin/rsync' @@ -43,7 +44,7 @@ class rsnapshot::params { $config_loglevel = '4' $config_stop_on_stale_lockfile = undef # bool $config_rsync_short_args = '-az' - $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded + $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded $config_ssh_args = undef $config_du_args = undef $config_one_fs = undef diff --git a/templates/cron.erb b/templates/cron.erb index 4c63a80..56ae348 100644 --- a/templates/cron.erb +++ b/templates/cron.erb @@ -1 +1 @@ -<%= @minute %> <%= @hour %> <%= @monthday %> <%= @month %> <%= @weekday %> root /usr/bin/rsnapshot -c <%= @config %> <%= @level %> +<%= @minute %> <%= @hour %> <%= @monthday %> <%= @month %> <%= @weekday %> root<% if scope['rsnapshot::check_mk_job'] == true -%> mk-job rsnapshot_<%= @host %>_<%= @level %><% end -%> /usr/bin/rsnapshot -c <%= @config %> <%= @level %> From 90ee92acb88d32e544b3118b8edd3a0f410a1264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Mon, 27 Feb 2017 11:58:18 +0100 Subject: [PATCH 12/21] fix crontabs with dots on debian & added rsnapshot_prefix var --- manifests/config.pp | 23 ++++++++++++++++++----- manifests/init.pp | 3 ++- manifests/params.pp | 3 ++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/manifests/config.pp b/manifests/config.pp index 702765f..0f9edaf 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -31,7 +31,7 @@ class rsnapshot::config ( # custom function, if only a hostname is given as a param, this is an empty hash # the next loop would break as puppet does not allow to reassign variables - # the function checks $hosts for elements like: + # the function checks $hosts for elements like: # { foo => } and converts those to { foo => {} } $hosts_clean = assert_empty_hash($hosts) @@ -135,7 +135,7 @@ class rsnapshot::config ( content => template('rsnapshot/rsnapshot.erb'), } - + if has_key($hash, backup_scripts) { $hash[backup_scripts].each |$script, $scriptconf| { @@ -158,11 +158,25 @@ class rsnapshot::config ( content => template("rsnapshot/${script}.sh.erb"), mode => '0755', } - + } } - $cronfile = "${cron_dir}/${host}" + # cron on Debian seems to ignore files that have dots in their name; replace + # them with underscores (issue #2) + if $::osfamily == 'Debian' { + $cron_name = regsubst("${host}", '\.', '_') + $cronfile = "${cron_dir}/${rsnapshot_prefix}${cron_name}" + } + else { + $cronfile = "${cron_dir}/${rsnapshot_prefix}${host}" + } + + # Make sure old cron files without rsnapshot_prefix are removed + file { "${cron_dir}/${host}": + ensure => absent, + } + concat { $cronfile: } # create cron files for each backup level @@ -190,4 +204,3 @@ class rsnapshot::config ( } } } - diff --git a/manifests/init.pp b/manifests/init.pp index 46bb154..3e7845a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -19,6 +19,8 @@ class rsnapshot ( $snapshot_root = $rsnapshot::params::config_snapshot_root, $backup_levels = $rsnapshot::params::config_backup_levels, $cron_service_name = $rsnapshot::params::cron_service_name, + $rsnapshot_prefix = $rsnapshot::params::config_rsnapshot_prefix, + ) inherits rsnapshot::params { $default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts @@ -32,4 +34,3 @@ class rsnapshot ( contain '::rsnapshot::service' } } - diff --git a/manifests/params.pp b/manifests/params.pp index 3cff43b..c5efa35 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -42,8 +42,9 @@ class rsnapshot::params { $config_verbose = '2' $config_loglevel = '4' $config_stop_on_stale_lockfile = undef # bool + $config_rsnapshot_prefix = 'rsnapshot_' $config_rsync_short_args = '-az' - $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded + $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded $config_ssh_args = undef $config_du_args = undef $config_one_fs = undef From 9f0fdf0547bc421512bf3623a113aeb6b73bb84f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Mon, 27 Feb 2017 12:00:54 +0100 Subject: [PATCH 13/21] removed superfluous line --- manifests/init.pp | 1 - 1 file changed, 1 deletion(-) diff --git a/manifests/init.pp b/manifests/init.pp index 3e7845a..e93f9d1 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -20,7 +20,6 @@ class rsnapshot ( $backup_levels = $rsnapshot::params::config_backup_levels, $cron_service_name = $rsnapshot::params::cron_service_name, $rsnapshot_prefix = $rsnapshot::params::config_rsnapshot_prefix, - ) inherits rsnapshot::params { $default_backup_scripts = $rsnapshot::params::backup_scripts + $backup_scripts From 7dd4b98f1ac98cd3ad64669c28d9afdba2bb6e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Tue, 14 Mar 2017 23:52:08 +0100 Subject: [PATCH 14/21] fixed typo --- manifests/params.pp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifests/params.pp b/manifests/params.pp index fa86a3c..40d5680 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -93,7 +93,7 @@ class rsnapshot::params { }, monthly => { minute => '0..59', - hour => '0..23', # you could also do: ['21..2 3','0..4','5'], + hour => '0..23', # you could also do: ['21..23','0..4','5'], monthday => '0..28', month => '*', weekday => '*', From 6e7d8e02f336e7e899d08c4e6ab17262fd8c81e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bauer?= Date: Sat, 1 Apr 2017 23:27:18 +0200 Subject: [PATCH 15/21] use prefix not by default --- manifests/config.pp | 8 ++++++-- manifests/init.pp | 33 +++++++++++++++++---------------- manifests/params.pp | 1 + 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/manifests/config.pp b/manifests/config.pp index 0f9edaf..86c5b94 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -162,10 +162,14 @@ class rsnapshot::config ( } } + if rsnapshot_prefix_use == false { + $rsnapshot_prefix = '' + } + # cron on Debian seems to ignore files that have dots in their name; replace # them with underscores (issue #2) if $::osfamily == 'Debian' { - $cron_name = regsubst("${host}", '\.', '_') + $cron_name = regsubst($host, '\.', '_', 'G') $cronfile = "${cron_dir}/${rsnapshot_prefix}${cron_name}" } else { @@ -182,7 +186,7 @@ class rsnapshot::config ( # create cron files for each backup level # merge possible cron definitions to one $real_cron = deep_merge($rsnapshot::params::cron, $rsnapshot::cron, $hash[cron]) - concat::fragment { "mailto for $host": + concat::fragment { "mailto for ${host}": content => "#This file is managed by puppet\nMAILTO=${real_cron[mailto]}\n\n", target => $cronfile, order => 1, diff --git a/manifests/init.pp b/manifests/init.pp index 5f17c91..74f970e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -5,22 +5,23 @@ # === Parameters # class rsnapshot ( - $hosts = $rsnapshot::params::hosts, - $conf_d = $rsnapshot::params::conf_d, - $logpath = $rsnapshot::params::config_logpath, - $lockpath = $rsnapshot::params::config_lockpath, - $default_backup = $rsnapshot::params::config_default_backup, - $package_name = $rsnapshot::params::package_name, - $package_ensure = $rsnapshot::params::package_ensure, - $cron = $rsnapshot::params::cron, - $backup_scripts = $rsnapshot::params::backup_scripts, - $include = $rsnapshot::params::config_include, - $exclude = $rsnapshot::params::config_exclude, - $snapshot_root = $rsnapshot::params::config_snapshot_root, - $backup_levels = $rsnapshot::params::config_backup_levels, - $cron_service_name = $rsnapshot::params::cron_service_name, - $rsnapshot_prefix = $rsnapshot::params::config_rsnapshot_prefix, - $check_mk_job = $rsnapshot::params::config_check_mk_job, + $hosts = $rsnapshot::params::hosts, + $conf_d = $rsnapshot::params::conf_d, + $logpath = $rsnapshot::params::config_logpath, + $lockpath = $rsnapshot::params::config_lockpath, + $default_backup = $rsnapshot::params::config_default_backup, + $package_name = $rsnapshot::params::package_name, + $package_ensure = $rsnapshot::params::package_ensure, + $cron = $rsnapshot::params::cron, + $backup_scripts = $rsnapshot::params::backup_scripts, + $include = $rsnapshot::params::config_include, + $exclude = $rsnapshot::params::config_exclude, + $snapshot_root = $rsnapshot::params::config_snapshot_root, + $backup_levels = $rsnapshot::params::config_backup_levels, + $cron_service_name = $rsnapshot::params::cron_service_name, + $rsnapshot_prefix = $rsnapshot::params::config_rsnapshot_prefix, + $rsnapshot_prefix_use = $rsnapshot::params::config_rsnapshot_prefix_use, + $check_mk_job = $rsnapshot::params::config_check_mk_job, ) inherits rsnapshot::params { diff --git a/manifests/params.pp b/manifests/params.pp index 40d5680..61c6a52 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -44,6 +44,7 @@ class rsnapshot::params { $config_loglevel = '4' $config_stop_on_stale_lockfile = undef # bool $config_rsnapshot_prefix = 'rsnapshot_' + $config_rsnapshot_prefix_use = false $config_rsync_short_args = '-az' $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded $config_ssh_args = undef From 46c96d9b6c1355c44e2e3fe4402822fd11361710 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 08:40:45 +0200 Subject: [PATCH 16/21] try and fix travis build --- metadata.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metadata.json b/metadata.json index c160005..3b20c01 100644 --- a/metadata.json +++ b/metadata.json @@ -17,9 +17,9 @@ { "name": "puppet", "version_requirement": ">= 4.0.0" } ], "dependencies": [ - { "name": "puppetlabs-stdlib","version_range": ">= 1.0.0" }, - { "name": "stahnma-epel","version_range": ">= 1.0.0" }, - { "name": "puppetlabs-concat","version_range": ">= 2.0.0 < 3.0.0" } + { "name": "puppetlabs-stdlib","version_requirement": ">= 1.0.0" }, + { "name": "stahnma-epel","version_requirement": ">= 1.0.0" }, + { "name": "puppetlabs-concat","version_requirement": ">= 2.0.0 < 3.0.0" } ], "operatingsystem_support": [ { From 960b0090e4952b985828eddde75d13e1aeef3fc9 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 08:42:15 +0200 Subject: [PATCH 17/21] try and fix travis build --- metadata.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/metadata.json b/metadata.json index 3b20c01..38dad5c 100644 --- a/metadata.json +++ b/metadata.json @@ -12,10 +12,6 @@ "backup", "rsync" ], - "requirements": [ - { "name": "pe", "version_requirement": ">= 4.0.0" }, - { "name": "puppet", "version_requirement": ">= 4.0.0" } - ], "dependencies": [ { "name": "puppetlabs-stdlib","version_requirement": ">= 1.0.0" }, { "name": "stahnma-epel","version_requirement": ">= 1.0.0" }, From 87775af5c7c731d2a0625621698c8612dfac40fc Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 09:14:46 +0200 Subject: [PATCH 18/21] add prefix feature --- manifests/config.pp | 34 +++++++++++++++++++--------------- manifests/init.pp | 4 ++-- manifests/params.pp | 6 +++--- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/manifests/config.pp b/manifests/config.pp index 86c5b94..e5237c2 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -2,8 +2,8 @@ # # manage host configs class rsnapshot::config ( - $hosts = $rsnapshot::hosts, - $cron_dir = $rsnapshot::cron_dir, + $hosts = $rsnapshot::hosts, + $cron_dir = $rsnapshot::cron_dir, ) { # these are global settings, no point in setting them per host @@ -12,6 +12,8 @@ class rsnapshot::config ( $conf_d = pick($rsnapshot::conf_d, $rsnapshot::params::conf_d, '/etc/rsnapshot') $snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::snapshot_root, '/backup') $logpath = pick($rsnapshot::logpath, $rsnapshot::params::config_logpath) + $cronfile_prefix_use = pick($rsnapshot::cronfile_prefix_use, $rsnapshot::params::cronfile_prefix_use, false) + $cronfile_prefix = pick($rsnapshot::cronfile_prefix, $rsnapshot::params::cronfile_prefix, '') # make sure lock path and conf path exist file { $conf_d: ensure => 'directory', @@ -162,23 +164,25 @@ class rsnapshot::config ( } } - if rsnapshot_prefix_use == false { - $rsnapshot_prefix = '' + if $cronfile_prefix_use { + $rsnapshot_prefix = $rsnapshot::cronfile_prefix + } else { + $rsnapshot_prefix = '' } # cron on Debian seems to ignore files that have dots in their name; replace # them with underscores (issue #2) - if $::osfamily == 'Debian' { - $cron_name = regsubst($host, '\.', '_', 'G') - $cronfile = "${cron_dir}/${rsnapshot_prefix}${cron_name}" - } - else { - $cronfile = "${cron_dir}/${rsnapshot_prefix}${host}" - } - - # Make sure old cron files without rsnapshot_prefix are removed - file { "${cron_dir}/${host}": - ensure => absent, + case $::osfamily { + 'Debian': { + $cron_name = regsubst($host, '\.', '_', 'G') + $cronfile = "${cron_dir}/${rsnapshot_prefix}${cron_name}" + } + 'RedHat': { + $cronfile = "${cron_dir}/${rsnapshot_prefix}${host}" + } + default: { + $cronfile = "${cron_dir}/${rsnapshot_prefix}${host}" + } } concat { $cronfile: diff --git a/manifests/init.pp b/manifests/init.pp index 74f970e..f586bcc 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -19,8 +19,8 @@ class rsnapshot ( $snapshot_root = $rsnapshot::params::config_snapshot_root, $backup_levels = $rsnapshot::params::config_backup_levels, $cron_service_name = $rsnapshot::params::cron_service_name, - $rsnapshot_prefix = $rsnapshot::params::config_rsnapshot_prefix, - $rsnapshot_prefix_use = $rsnapshot::params::config_rsnapshot_prefix_use, + $cronfile_prefix = $rsnapshot::params::config_cronfile_prefix, + $cronfile_prefix_use = $rsnapshot::params::config_cronfile_prefix_use, $check_mk_job = $rsnapshot::params::config_check_mk_job, ) inherits rsnapshot::params { diff --git a/manifests/params.pp b/manifests/params.pp index 61c6a52..b106631 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -43,8 +43,8 @@ class rsnapshot::params { $config_verbose = '2' $config_loglevel = '4' $config_stop_on_stale_lockfile = undef # bool - $config_rsnapshot_prefix = 'rsnapshot_' - $config_rsnapshot_prefix_use = false + $config_cronfile_prefix = 'rsnapshot_' + $config_cronfile_prefix_use = false $config_rsync_short_args = '-az' $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded $config_ssh_args = undef @@ -127,6 +127,6 @@ class rsnapshot::params { ], default => [], }, - } + }, } } From 85532a73b2b9b58531180c571726c13f8ae565ca Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 09:24:14 +0200 Subject: [PATCH 19/21] update readme --- README.md | 91 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 0198c76..cc0eb5c 100644 --- a/README.md +++ b/README.md @@ -205,41 +205,20 @@ Takes an Integer, a String or an Array as input, and returns a random entry from The following parameters are available in the `::rsnapshot` class: -#### `$hosts` -Hash containing the hosts to be backed up and optional overrides per host -(Default: undef (do nothing when no host given)) -#### `$conf_d` -The place where the configs will be dropped -(Default: /etc/rsnapshot (will be created if it doesn't exist)) -#### `$backup_user` -The user to run the backup scripts as -(Default: root, also the user used for ssh connections, if you change this make sure you have proper key deployed and the user exists in the nodes to be backed up.) -#### `$package_name` -(Default: rsnapshot) -#### `$package_ensure` -(Default: present) -#### `$cron_dir` -Directory to drop the cron files to. Crons will be created per host. -(Default: /etc/cron.d) -#### `$backup_levels` -Array containing the backup levels (hourly, daily, weekly, monthly) -Configure the backup_levels (valid per host and global, so you may either set: rsnapshot::backup_levels for all hosts or override default backup_levels for specific hosts) -(Default: [ 'daily', 'weekly', ] ) #### `$backup_defaults` Boolean. Backup default backup dirs or not. (Default: true) -#### `$default_backup` -The default backup directories. This will apply to all hosts unless you set [backup_defaults](#backup_defaults) = false -Default is: - -```puppet - $default_backup = { - '/etc' => './', - '/home' => './', - } -``` - +#### `$backup_levels` +Array containing the backup levels (hourly, daily, weekly, monthly) +Configure the backup_levels (valid per host and global, so you may either set: rsnapshot::backup_levels for all hosts or override default backup_levels for specific hosts) +(Default: [ 'daily', 'weekly', ] ) +#### `$backup_user` +The user to run the backup scripts as +(Default: root, also the user used for ssh connections, if you change this make sure you have proper key deployed and the user exists in the nodes to be backed up.) +#### `$conf_d` +The place where the configs will be dropped +(Default: /etc/rsnapshot (will be created if it doesn't exist)) #### `$cron` Hash. Set time ranges for different backup levels. Each item (minute, hour...) allows for cron notation, an array to pick a random time from and a range to pick a random time from. The range notation is '$start..$end', so to pick a random hour from 8 pm to 2 am, you could set the hour of your desired backup level to @@ -354,6 +333,44 @@ Default is: } ``` +#### `$cron_dir` +Directory to drop the cron files to. Crons will be created per host. +(Default: /etc/cron.d) +#### `$default_backup` +The default backup directories. This will apply to all hosts unless you set [backup_defaults](#backup_defaults) = false +Default is: + +```puppet + $default_backup = { + '/etc' => './', + '/home' => './', + } +``` +#### `$cronfile_prefix_use` +Bool. Set this to true if you want your cronfiles to have a prefix. +(Default: false) +#### `$cronfile_prefix` +Optional prefix to add to the cronfiles name. Your files will be named: prefix_hostname +(Default: 'rsnapshot_' only if you set $cronfile_prefix_use = true) +#### `$hosts` +Hash containing the hosts to be backed up and optional overrides per host +(Default: undef (do nothing when no host given)) +#### `$interval` +How many backups of each level to keep. +Default is: + +```puppet + $interval = { + 'daily' => '7', + 'weekly' => '4', + 'monthly' => '6', + } +``` + +#### `$package_ensure` +(Default: present) +#### `$package_name` +(Default: rsnapshot) #### `$snapshot_root` global. the directory holding your backups. (Default: /backup) @@ -377,18 +394,6 @@ You will end up with a structure like: └── weekly.0 ``` -#### `$interval` -How many backups of each level to keep. -Default is: - -```puppet - $interval = { - 'daily' => '7', - 'weekly' => '4', - 'monthly' => '6', - } -``` - #### `$backup_scripts` Additional scripts to create, possible values are: mysql, psql, misc From a67dd7ea2957cfcee68bd19359779636604bc03e Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 10:40:07 +0200 Subject: [PATCH 20/21] fix order of params --- manifests/params.pp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifests/params.pp b/manifests/params.pp index b106631..aa483a3 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -26,6 +26,8 @@ class rsnapshot::params { $config_cmd_rsnapshot_diff = '/usr/bin/rsnapshot-diff' $config_cmd_preexec = undef $config_cmd_postexec = undef + $config_cronfile_prefix = 'rsnapshot_' + $config_cronfile_prefix_use = false $config_use_lvm = undef $config_linux_lvm_cmd_lvcreate = undef # '/sbin/lvcreate' $config_linux_lvm_cmd_lvremove = undef # '/sbin/lvremove' @@ -43,8 +45,6 @@ class rsnapshot::params { $config_verbose = '2' $config_loglevel = '4' $config_stop_on_stale_lockfile = undef # bool - $config_cronfile_prefix = 'rsnapshot_' - $config_cronfile_prefix_use = false $config_rsync_short_args = '-az' $config_rsync_long_args = undef # defaults are --delete --numeric-ids --relative --delete-excluded $config_ssh_args = undef From 6f92da8a17a12fc2cdd2445163450c93e60d12d0 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 2 Apr 2017 10:45:25 +0200 Subject: [PATCH 21/21] add quotes to ssh command (misc script) --- templates/misc.sh.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/misc.sh.erb b/templates/misc.sh.erb index 15c9520..7185cc2 100644 --- a/templates/misc.sh.erb +++ b/templates/misc.sh.erb @@ -2,6 +2,6 @@ #This file is managed by puppet # <%@commands.each do |command| -%> -ssh -l <%=@backup_user-%> <%=@host-%> <%=command-%> +ssh -l <%=@backup_user-%> <%=@host-%> '<%=command-%>' <%end-%>