mirror of
https://github.com/krislamo/puppet-rsnapshot
synced 2024-12-16 09:40:35 +00:00
fix issue where global cron override would not be used
This commit is contained in:
parent
22f24a4cf0
commit
a468d8b2ee
301
README.md
301
README.md
@ -13,6 +13,10 @@
|
||||
* [Examples](#examples)
|
||||
* [More Options](#more-options)
|
||||
5. [Reference - An under-the-hood peek at what the module is doing and how](#reference)
|
||||
* [Classes](#classes)
|
||||
* [Functions](#functions)
|
||||
* [Parameters](parameters)
|
||||
* [Rsnapshot Configuration Parameters](#rsnapshot-configuration-variables)
|
||||
5. [Limitations - OS compatibility, etc.](#limitations)
|
||||
6. [Development - Guide for contributing to the module](#development)
|
||||
7. [Editors](#editors)
|
||||
@ -208,6 +212,98 @@ Configure the backup_levels (valid per host and global, so you may either set: r
|
||||
####`$backup_defaults`
|
||||
Boolean. Backup default backup dirs or not.
|
||||
(Default: true)
|
||||
|
||||
####`$config_default_backup`
|
||||
The default backup directories. This will apply to all hosts unless you set [backup_defaults](#backup_defaults) = false
|
||||
Default is:
|
||||
```puppet
|
||||
$config_default_backup = {
|
||||
'/etc' => './',
|
||||
'/home' => './',
|
||||
}
|
||||
```
|
||||
|
||||
####`$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
|
||||
`[ '20..23','0..2' ]`
|
||||
Example:
|
||||
```puppet
|
||||
$cron = {
|
||||
hourly => {
|
||||
minute => '0..59',
|
||||
hour => [ '20..23','0..2' ],
|
||||
}
|
||||
}
|
||||
```
|
||||
Or in hiera:
|
||||
- global override
|
||||
```yaml
|
||||
rsnapshot::cron:
|
||||
daily:
|
||||
minute: '20'
|
||||
weekly:
|
||||
minute: '20'
|
||||
```
|
||||
- per host override
|
||||
```yaml
|
||||
rsnapshot::hosts:
|
||||
webserver:
|
||||
daily:
|
||||
hour: [ '20..23','0..2' ]
|
||||
weekly:
|
||||
hour: [ '20..23','0..2' ]
|
||||
```
|
||||
|
||||
Hash is of the form:
|
||||
```puppet
|
||||
$cron =>{
|
||||
daily => {
|
||||
minute => param,
|
||||
hour => param,
|
||||
}
|
||||
weekly => {
|
||||
minute => param,
|
||||
hour => param,
|
||||
}
|
||||
{...}
|
||||
}
|
||||
```
|
||||
|
||||
Default is:
|
||||
```puppet
|
||||
$cron = {
|
||||
hourly => {
|
||||
minute => '0..59', # random from 0 to 59
|
||||
hour => '*', # you could also do: ['21..23','0..4','5'],
|
||||
monthday => '*',
|
||||
month => '*',
|
||||
weekday => '*',
|
||||
},
|
||||
daily => {
|
||||
minute => '0..10', # random from 0 to 10
|
||||
hour => '0..23', # you could also do: ['21..23','0..4','5'],
|
||||
monthday => '*',
|
||||
month => '*',
|
||||
weekday => '*',
|
||||
},
|
||||
weekly => {
|
||||
minute => '0..59',
|
||||
hour => '0..23', # you could also do: ['21..23','0..4','5'],
|
||||
monthday => '*',
|
||||
month => '*',
|
||||
weekday => '0..6',
|
||||
},
|
||||
monthly => {
|
||||
minute => '0..59',
|
||||
hour => '0..23', # you could also do: ['21..23','0..4','5'],
|
||||
monthday => '0..28',
|
||||
month => '*',
|
||||
weekday => '*',
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
####`$cron`
|
||||
Hash. Set time ranges for different backup levels.
|
||||
Hash is of the form:
|
||||
@ -289,99 +385,150 @@ default_backup => {
|
||||
'/home' => './',
|
||||
}
|
||||
```
|
||||
### rsnapshot configuration variables
|
||||
Please read up on the following in the [rsnapshot manpage](http://linux.die.net/man/1/rsnapshot)
|
||||
####`$cmd_cp`
|
||||
(Default is: '/bin/cp')
|
||||
####`$cmd_rm`
|
||||
(Default is: '/bin/rm')
|
||||
####`$cmd_rsync`
|
||||
(Default is: '/usr/bin/rsync')
|
||||
####`$cmd_ssh`
|
||||
(Default is: '/usr/bin/ssh')
|
||||
####`$cmd_logger`
|
||||
(Default is: '/usr/bin/logger')
|
||||
####`$cmd_du`
|
||||
(Default is: '/usr/bin/du')
|
||||
####`$cmd_rsnapshot_diff`
|
||||
(Default is: '/usr/bin/rsnapshot-diff')
|
||||
####`$cmd_preexec`
|
||||
(Default is: undef)
|
||||
####`$cmd_postexec`
|
||||
(Default is: undef)
|
||||
####`$use_lvm`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_cmd_lvcreate`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_cmd_lvremove`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_cmd_mount`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_cmd_umount`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_snapshotsize`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_snapshotname`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_vgpath`
|
||||
(Default is: undef)
|
||||
####`$linux_lvm_mountpath`
|
||||
(Default is: undef)
|
||||
####`$logpath`
|
||||
(Default is: '/var/log/rsnapshot')
|
||||
####`$logfile`
|
||||
This will be $logpath/$hostname.log
|
||||
(Default is: '/var/log/rsnapshot.log')
|
||||
####`$lockpath`
|
||||
(Default is: '/var/run/rsnapshot')
|
||||
####`$no_create_root`
|
||||
(Default is: undef)
|
||||
####`$verbose`
|
||||
(Default is: '2')
|
||||
####`$loglevel`
|
||||
(Default is: '4')
|
||||
####`$stop_on_stale_lockfile`
|
||||
(Default is: undef)
|
||||
####`$rsync_short_args`
|
||||
(Default is: '-az')
|
||||
####`$rsync_long_args`
|
||||
(Default is: undef)
|
||||
####`$ssh_args`
|
||||
(Default is: undef)
|
||||
####`$du_args`
|
||||
(Default is: undef)
|
||||
####`$one_fs`
|
||||
(Default is: undef)
|
||||
####`$retain`
|
||||
(Default is: {} )
|
||||
####`$interval`
|
||||
(Default is:
|
||||
How many backups of each level to keep.
|
||||
Default is:
|
||||
```puppet
|
||||
$config_interval = {
|
||||
$interval = {
|
||||
'daily' => '7',
|
||||
'weekly' => '4',
|
||||
'monthly' => '6',
|
||||
}
|
||||
```
|
||||
)
|
||||
|
||||
### rsnapshot configuration variables
|
||||
Please read up on the following in the [rsnapshot manpage](http://linux.die.net/man/1/rsnapshot)
|
||||
|
||||
####`$config_version`
|
||||
Default is: '1.2'
|
||||
|
||||
####`$cmd_cp`
|
||||
Default is: '/bin/cp'
|
||||
|
||||
####`$cmd_rm`
|
||||
Default is: '/bin/rm'
|
||||
|
||||
####`$cmd_rsync`
|
||||
Default is: '/usr/bin/rsync'
|
||||
|
||||
####`$cmd_ssh`
|
||||
Default is: '/usr/bin/ssh'
|
||||
|
||||
####`$cmd_logger`
|
||||
Default is: '/usr/bin/logger'
|
||||
|
||||
####`$cmd_du`
|
||||
Default is: '/usr/bin/du'
|
||||
|
||||
####`$cmd_rsnapshot_diff`
|
||||
Default is: '/usr/bin/rsnapshot-diff'
|
||||
|
||||
####`$cmd_preexec`
|
||||
Default is: undef
|
||||
|
||||
####`$cmd_postexec`
|
||||
Default is: undef
|
||||
|
||||
####`$use_lvm`
|
||||
Default is: undef
|
||||
|
||||
####`$linux_lvm_cmd_lvcreate`
|
||||
Default is: undef # '/sbin/lvcreate'
|
||||
|
||||
####`$linux_lvm_cmd_lvremove`
|
||||
Default is: undef # '/sbin/lvremove'
|
||||
|
||||
####`$linux_lvm_cmd_mount`
|
||||
Default is: undef # '/sbin/mount'
|
||||
|
||||
####`$linux_lvm_cmd_umount`
|
||||
Default is: undef # '/sbin/umount'
|
||||
|
||||
####`$linux_lvm_snapshotsize`
|
||||
Default is: undef # '100M'
|
||||
|
||||
####`$linux_lvm_snapshotname`
|
||||
Default is: undef # 'rsnapshot'
|
||||
|
||||
####`$linux_lvm_vgpath`
|
||||
Default is: undef # '/dev'
|
||||
|
||||
####`$linux_lvm_mountpath`
|
||||
Default is: undef # '/mount/rsnapshot'
|
||||
|
||||
####`$logpath`
|
||||
Default is: '/var/log/rsnapshot'
|
||||
|
||||
####`$logfile`
|
||||
unused, we are logging to $logpath/$host.log
|
||||
Default is: '/var/log/rsnapshot.log'
|
||||
|
||||
####`$lockpath`
|
||||
Default is: '/var/run/rsnapshot'
|
||||
|
||||
####`$snapshot_root`
|
||||
Default is: '/backup/'
|
||||
|
||||
####`$no_create_root`
|
||||
Boolean: true or false
|
||||
Default is: undef
|
||||
|
||||
####`$verbose`
|
||||
Default is: '2'
|
||||
|
||||
####`$loglevel`
|
||||
Default is: '4'
|
||||
|
||||
####`$stop_on_stale_lockfile`
|
||||
Boolean: true or false
|
||||
Default is: undef
|
||||
|
||||
####`$rsync_short_args`
|
||||
Default is: '-az'
|
||||
|
||||
####`$rsync_long_args`
|
||||
rsync defaults are: --delete --numeric-ids --relative --delete-excluded
|
||||
Default is: undef
|
||||
|
||||
####`$ssh_args`
|
||||
Default is: undef
|
||||
|
||||
####`$du_args`
|
||||
Default is: undef
|
||||
|
||||
####`$one_fs`
|
||||
Default is: undef
|
||||
|
||||
####`$retain`
|
||||
Default is: { }
|
||||
|
||||
####`$include`
|
||||
(Default is: [])
|
||||
Default is: []
|
||||
|
||||
####`$exclude`
|
||||
(Default is: [])
|
||||
Default is: []
|
||||
|
||||
####`$include_file`
|
||||
(Default is: undef)
|
||||
Default is: undef
|
||||
|
||||
####`$exclude_file`
|
||||
(Default is: undef)
|
||||
Other than this might suggest, the default behavior is to create an exclude file per host.
|
||||
Default is: undef
|
||||
|
||||
####`$link_dest`
|
||||
(Default is: false)
|
||||
Default is: false
|
||||
|
||||
####`$sync_first`
|
||||
(Default is: false)
|
||||
Default is: false
|
||||
|
||||
####`$rsync_numtries`
|
||||
(Default is: 1)
|
||||
Default is: 1
|
||||
|
||||
####`$use_lazy_deletes`
|
||||
(Default is: false )
|
||||
Default is: false
|
||||
|
||||
####`$backup_scripts`
|
||||
(Default is: {})
|
||||
Default is: {}
|
||||
|
||||
## Limitations
|
||||
Currently, this module support CentOS, Fedora, Ubuntu and Debian.
|
||||
|
@ -10,6 +10,7 @@ class rsnapshot::config (
|
||||
$lockpath = pick($rsnapshot::lockpath, $rsnapshot::params::config_lockpath)
|
||||
$conf_d = pick($rsnapshot::conf_d, $rsnapshot::params::conf_d)
|
||||
$snapshot_root = pick($hosts['snapshot_root'], $rsnapshot::params::config_snapshot_root)
|
||||
$default_cron = assert_empty_hash($::rsnapshot::cron)
|
||||
# make sure lock path and conf path exist
|
||||
file { $conf_d:
|
||||
ensure => 'directory',
|
||||
@ -116,12 +117,29 @@ class rsnapshot::config (
|
||||
$cronfile = "${cron_dir}/${host}"
|
||||
concat { $cronfile:
|
||||
}
|
||||
|
||||
# create cron files for each backup level
|
||||
$backup_levels.each |String $level| {
|
||||
|
||||
# allow to globally override ranges, create random numbers for backup_levels daily, weekly, monthly
|
||||
if has_key($hash,cron){
|
||||
if has_key($hash[cron], $level) {
|
||||
$cron = $hash[cron][$level]
|
||||
} else {
|
||||
if has_key($default_cron, $level) {
|
||||
$cron = $default_cron[$level]
|
||||
} else {
|
||||
$cron = $rsnapshot::params::cron[$level]
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if has_key($default_cron, $level) {
|
||||
$cron = $default_cron[$level]
|
||||
} else {
|
||||
$cron = $rsnapshot::params::cron[$level]
|
||||
}
|
||||
}
|
||||
|
||||
if has_key($cron, minute) {
|
||||
$c_min = $cron[minute]
|
||||
} else {
|
||||
@ -147,20 +165,6 @@ class rsnapshot::config (
|
||||
} else {
|
||||
$c_weekday = $rsnapshot::params::cron[$level][weekday]
|
||||
}
|
||||
} else {
|
||||
$c_min = $rsnapshot::params::cron[$level][minute]
|
||||
$c_hour = $rsnapshot::params::cron[$level][hour]
|
||||
$c_monthday = $rsnapshot::params::cron[$level][monthday]
|
||||
$c_month = $rsnapshot::params::cron[$level][month]
|
||||
$c_weekday = $rsnapshot::params::cron[$level][weekday]
|
||||
}
|
||||
} else {
|
||||
$c_min = $rsnapshot::params::cron[$level][minute]
|
||||
$c_hour = $rsnapshot::params::cron[$level][hour]
|
||||
$c_monthday = $rsnapshot::params::cron[$level][monthday]
|
||||
$c_month = $rsnapshot::params::cron[$level][month]
|
||||
$c_weekday = $rsnapshot::params::cron[$level][weekday]
|
||||
}
|
||||
$minute = rand_from_array($c_min, "${host}.${level}.minute")
|
||||
$hour = rand_from_array($c_hour, "${host}.${level}.hour")
|
||||
$monthday = rand_from_array($c_monthday, "${host}.${level}.monthday")
|
||||
|
@ -12,6 +12,7 @@ class rsnapshot (
|
||||
$default_backup = $rsnapshot::params::config_default_backup,
|
||||
$package_name = $rsnapshot::params::package_name,
|
||||
$package_ensure = $rsnapshot::params::package_ensure,
|
||||
$cron = $rsnapshot::params::cron,
|
||||
) inherits rsnapshot::params {
|
||||
if $::puppetversion =~ /^(1|2|3)/ {
|
||||
fail('This module requires Puppet 4')
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "loomsen-rsnapshot",
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.1",
|
||||
"author": "loomsen",
|
||||
"summary": "Configures rsnapshot.",
|
||||
"license": "Apache-2.0",
|
||||
|
Loading…
Reference in New Issue
Block a user