1
0
mirror of https://github.com/krislamo/puppet-rsnapshot synced 2025-09-13 15:59:28 +00:00

33 Commits
1.2.1 ... pr/14

Author SHA1 Message Date
Oleg Ginzburg
0ec04544fd Merge pull request #1 from loomsen/test_travis
Fix travis checks
2018-10-20 15:02:57 +03:00
Norbert Varzariu
905d856219 fix dependency (version bounds) for concat module 2018-10-20 11:23:58 +02:00
Norbert Varzariu
63214c6919 bump rvm version to 2.3 2018-10-20 10:36:19 +02:00
Norbert Varzariu
65f4a883de bump ruby version in travis.yml 2018-10-20 10:18:37 +02:00
olevole
3043196a2e Merge branch 'master' of github.com:olevole/puppet-rsnapshot 2018-10-14 06:52:50 +03:00
olevole
4202b1ae94 add FreeBSD support
changes for FreeBSD are trivial and mainly relate to
an alternative path to configuration and executable files.
So, the standard way for 3rd-party config files in FreeBSD:
  /usr/local/etc{/rsnapshot}
and for binaries:
  /usr/local
Also, define @cmd_rsnapshot in cron.erb via config_cmd_rsnapshot
2018-10-14 06:52:39 +03:00
olevole
100eafe356 add FreeBSD support
changes for FreeBSD are trivial and mainly relate to
an alternative path to configuration and executable files.
So, the standard way for 3rd-party config files in FreeBSD:
  /usr/local/etc{/rsnapshot}
and for binaries:
  /usr/local
Also, define @cmd_rsnapshot in cron.erb via config_cmd_rsnapshot
2018-10-14 06:36:46 +03:00
Administrator
03c31b78c2 Merge branch 'release/1.2.4'
* release/1.2.4:
  bump version
2018-04-16 17:39:49 +02:00
Administrator
679c742fd3 bump version 2018-04-16 17:39:47 +02:00
Administrator
9327c68d59 fix README, monthday cannot be 0 2018-04-16 17:36:26 +02:00
Norbert Varzariu
b72f1dfb36 Merge pull request #13 from hellp/patch-1
Fix: monthday in cronjob cannot be 0
2018-04-15 23:09:36 +02:00
Fabian Neumann
4820ededfa Fix: monthday in cronjob cannot be 0
At least according to `man 5 cronjob` (and also Wikipedia ;) the day of month can only be 1-31. When the script created a cron.d file with a 0 at that position the script would not run at all.
2018-04-11 09:21:37 +02:00
Norbert Varzariu
c7e02c53dd Merge branch 'develop' 2017-04-24 20:46:46 +02:00
Norbert Varzariu
43cd819749 add test for tmpfiles.d dir 2017-04-24 20:46:04 +02:00
Norbert Varzariu
ab20bea159 Merge branch 'hotfix/create_tmpfiles_d' into develop 2017-04-24 20:44:18 +02:00
Norbert Varzariu
8aba7d0782 Merge branch 'hotfix/create_tmpfiles_d'
- create tmpfiles.d dir on hosts without systemd
2017-04-24 20:43:57 +02:00
Norbert Varzariu
a774e8b360 create /etc/tmpfiles.d dir on OS without systemd 2017-04-24 20:43:49 +02:00
Norbert Varzariu
02b61e2180 Merge branch 'release/1.2.2' into develop 2017-04-24 20:08:50 +02:00
Norbert Varzariu
063df85094 Merge branch 'release/1.2.2'
- fix issue#12: add /etc/tmpfiles.d/rsnapshot.conf to create run dir
  after reboot
2017-04-24 20:07:49 +02:00
Norbert Varzariu
765ed614b7 bump version 2017-04-24 20:07:43 +02:00
Norbert Varzariu
94b890df6d Merge branch 'feature/create_run_dir-issue#12' into develop
fix issue#12
2017-04-24 20:04:17 +02:00
Norbert Varzariu
a2dfd903c3 fix regex 2017-04-24 19:57:24 +02:00
Norbert Varzariu
3ae826a0e0 remove cron test, add file content match 2017-04-24 19:51:57 +02:00
Norbert Varzariu
efa6ef8808 add some tests 2017-04-24 19:42:31 +02:00
Norbert Varzariu
e1f5fa7ebe add tmpfiles.d config - issue#12 2017-04-24 19:25:16 +02:00
Norbert Varzariu
2590264764 Merge branch 'master' into develop 2017-04-24 18:57:57 +02:00
Norbert Varzariu
165bcd0766 Merge branch 'master' into develop 2017-04-24 18:56:39 +02:00
Norbert Varzariu
434afe708b Merge pull request #11 from martialblog/add_beaker
Add beaker test to module
2017-04-20 08:32:03 +02:00
Markus Opolka
395efceea9 Add beaker test to module 2017-04-19 22:55:18 +02:00
Norbert Varzariu
8f25dab414 Merge branch 'hotfix/1.2.1' into develop 2017-04-09 10:18:47 +02:00
Norbert Varzariu
4d810759ac Merge branch 'hotfix/1.2.1'
- fix link to contributors
2017-04-09 10:18:29 +02:00
Norbert Varzariu
1a68a16c79 Merge branch 'master' into develop 2017-04-09 10:16:14 +02:00
Norbert Varzariu
8fb1b403e0 Merge branch 'release/1.2.0' into develop 2017-04-09 09:59:07 +02:00
12 changed files with 169 additions and 23 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@
Gemfile.lock Gemfile.lock
pkg/ pkg/
vendor/ vendor/
log/

View File

@@ -2,13 +2,19 @@
sudo: false sudo: false
language: ruby language: ruby
cache: bundler cache: bundler
bundler_args: --without system_tests
script: "bundle exec rake validate && bundle exec rake spec SPEC_OPTS='--format documentation'"
matrix: matrix:
fast_finish: true fast_finish: true
include: include:
rvm: 2.1 - rvm: 2.3
env: PUPPET_GEM_VERSION="~> 4.0" env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake validate"
- rvm: 2.3
env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake spec SPEC_OPTS='--format documentation'"
- rvm: 2.3
env: PUPPET_GEM_VERSION="~> 4.0"
script: "bundle exec rake beaker"
services: docker
sudo: required
notifications: notifications:
email: false email: false

View File

@@ -6,3 +6,9 @@ gem 'puppetlabs_spec_helper', '>= 0.8.2'
gem 'puppet-lint', '>= 1.0.0' gem 'puppet-lint', '>= 1.0.0'
gem 'facter', '>= 1.7.0' gem 'facter', '>= 1.7.0'
gem 'metadata-json-lint' gem 'metadata-json-lint'
group :acceptance do
gem 'beaker-rspec', '5.6.0'
gem 'serverspec', require: false
gem 'specinfra', require: false
end

View File

@@ -329,7 +329,7 @@ Default is:
monthly => { monthly => {
minute => '0..59', minute => '0..59',
hour => '0..23', # you could also do: ['21..23','0..4','5'], hour => '0..23', # you could also do: ['21..23','0..4','5'],
monthday => '0..28', monthday => '1..28',
month => '*', month => '*',
weekday => '*', weekday => '*',
}, },

View File

@@ -190,6 +190,8 @@ class rsnapshot::config (
# create cron files for each backup level # create cron files for each backup level
# merge possible cron definitions to one # merge possible cron definitions to one
$real_cron = deep_merge($rsnapshot::params::cron, $rsnapshot::cron, $hash[cron]) $real_cron = deep_merge($rsnapshot::params::cron, $rsnapshot::cron, $hash[cron])
$cmd_rsnapshot = pick($rsnapshot::cmd_rsnapshot, $rsnapshot::params::config_cmd_rsnapshot)
concat::fragment { "mailto for ${host}": concat::fragment { "mailto for ${host}":
content => "#This file is managed by puppet\nMAILTO=${real_cron[mailto]}\n\n", content => "#This file is managed by puppet\nMAILTO=${real_cron[mailto]}\n\n",
target => $cronfile, target => $cronfile,

View File

@@ -10,5 +10,18 @@ class rsnapshot::install {
ensure => $rsnapshot::package_ensure, ensure => $rsnapshot::package_ensure,
} }
# ensure run directory exists (systemd clears /var/run, so rsnapshot can't create PID files after reboot - issue#12)
$lockpath = pick($rsnapshot::lockpath, $rsnapshot::params::config_lockpath, '/var/run/rsnapshot')
$tmpfiles_d = '/etc/tmpfiles.d'
file { "${tmpfiles_d}":
ensure => directory,
}
file { "${tmpfiles_d}/rsnapshot.conf":
ensure => present,
content => "D ${lockpath} 0755 root root -",
}
} }

View File

@@ -3,13 +3,17 @@
# default params # default params
class rsnapshot::params { class rsnapshot::params {
$hosts = undef $hosts = undef
$conf_d = '/etc/rsnapshot' # the place where the host specific configs are stored $conf_d = $::osfamily ? {
'FreeBSD' => '/usr/local/etc/rsnapshot', # the place where the host specific configs are stored
default => '/etc/rsnapshot,' # the place where the host specific configs are stored
}
$config_backup_user = 'root' $config_backup_user = 'root'
$package_name = 'rsnapshot' $package_name = 'rsnapshot'
$package_ensure = 'present' $package_ensure = 'present'
$cron_service_name = $::osfamily ? { $cron_service_name = $::osfamily ? {
'RedHat' => 'crond', 'RedHat' => 'crond',
'Debian' => 'cron', 'Debian' => 'cron',
'FreeBSD' => 'cron',
default => '', default => '',
} }
$manage_cron = true $manage_cron = true
@@ -20,11 +24,21 @@ class rsnapshot::params {
$config_check_mk_job = false $config_check_mk_job = false
$config_cmd_cp = '/bin/cp' $config_cmd_cp = '/bin/cp'
$config_cmd_rm = '/bin/rm' $config_cmd_rm = '/bin/rm'
$config_cmd_rsync = '/usr/bin/rsync' $config_cmd_rsync = $::osfamily ? {
'FreeBSD' => '/usr/local/bin/rsync',
default => '/usr/bin/rsync',
}
$config_cmd_ssh = '/usr/bin/ssh' $config_cmd_ssh = '/usr/bin/ssh'
$config_cmd_logger = '/usr/bin/logger' $config_cmd_logger = '/usr/bin/logger'
$config_cmd_du = '/usr/bin/du' $config_cmd_du = '/usr/bin/du'
$config_cmd_rsnapshot_diff = '/usr/bin/rsnapshot-diff' $config_cmd_rsnapshot = $::osfamily ? {
'FreeBSD' => '/usr/local/bin/rsnapshot',
default => '/usr/bin/rsnapshot',
}
$config_cmd_rsnapshot_diff = $::osfamily ? {
'FreeBSD' => '/usr/local/bin/rsnapshot-diff',
default => '/usr/bin/rsnapshot-diff',
}
$config_cmd_preexec = undef $config_cmd_preexec = undef
$config_cmd_postexec = undef $config_cmd_postexec = undef
$config_cronfile_prefix = 'rsnapshot_' $config_cronfile_prefix = 'rsnapshot_'
@@ -96,7 +110,7 @@ class rsnapshot::params {
monthly => { monthly => {
minute => '0..59', minute => '0..59',
hour => '0..23', # you could also do: ['21..23','0..4','5'], hour => '0..23', # you could also do: ['21..23','0..4','5'],
monthday => '0..28', monthday => '1..28',
month => '*', month => '*',
weekday => '*', weekday => '*',
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "loomsen-rsnapshot", "name": "loomsen-rsnapshot",
"version": "1.2.1", "version": "1.2.4",
"author": "loomsen", "author": "loomsen",
"summary": "Configures rsnapshot.", "summary": "Configures rsnapshot.",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -15,7 +15,7 @@
"dependencies": [ "dependencies": [
{ "name": "puppetlabs-stdlib","version_requirement": ">= 1.0.0" }, { "name": "puppetlabs-stdlib","version_requirement": ">= 1.0.0" },
{ "name": "stahnma-epel","version_requirement": ">= 1.0.0" }, { "name": "stahnma-epel","version_requirement": ">= 1.0.0" },
{ "name": "puppetlabs-concat","version_requirement": ">= 2.0.0 < 3.0.0" } { "name": "puppetlabs-concat","version_requirement": ">= 2.0.0" }
], ],
"operatingsystem_support": [ "operatingsystem_support": [
{ {
@@ -28,11 +28,11 @@
}, },
{ {
"operatingsystem": "Ubuntu", "operatingsystem": "Ubuntu",
"operatingsystemrelease": [ "12.04", "10.04", "14.04" ] "operatingsystemrelease": [ "12.04", "12.10", "13.04", "13.10", "14.04", "14.10", "15.04", "15.10", "16.04", "16.10", "17.04" ]
}, },
{ {
"operatingsystem": "Fedora", "operatingsystem": "Fedora",
"operatingsystemrelease": [ "17", "18", "19", "20", "21", "22", "23", "24" ] "operatingsystemrelease": [ "17", "18", "19", "20", "21", "22", "23", "24", "25" ]
} }
] ]
} }

View File

@@ -0,0 +1,63 @@
require 'spec_helper_acceptance'
describe 'rsnapshot' do
context 'with defaults' do
it 'run idempotently' do
pp = <<-EOS
class { 'rsnapshot':
hosts => {
'localhost' => {},
'example.com' => {
backup_defaults => false,
backup => {
'/var/' => './'
}
}
}
}
EOS
apply_manifest(pp, catch_failures: true)
apply_manifest(pp, catch_changes: true)
end
end
context 'packages installed' do
describe package('rsnapshot') do
it { is_expected.to be_installed }
end
end
context 'files provisioned' do
describe file('/etc/tmpfiles.d') do
it { should be_directory }
end
describe file('/etc/tmpfiles.d/rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'D /var/run/rsnapshot 0755 root root -' }
end
describe file('/var/run/rsnapshot') do
it { should be_directory }
end
describe file('/etc/rsnapshot/localhost.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup' }
end
describe file('/etc/rsnapshot/example.com.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup\troot@example.com:/var/\t./' }
end
describe file('/etc/rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'localhost' }
its(:content) { is_expected.to match 'example.com' }
end
describe file('/etc/rsnapshot/localhost.rsnapshot.conf') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'backup' }
end
describe file('/etc/cron.d/example_com') do
it { is_expected.to exist }
its(:content) { is_expected.to match 'example.com' }
end
end
end

View File

@@ -0,0 +1,15 @@
HOSTS:
debian-8-x64:
platform: debian-8-amd64
hypervisor: docker
image: debian:8
docker_container_name: puppet_rsnapshot
docker_preserve_image: true
docker_cmd: '["/sbin/init"]'
docker_image_commands:
- 'echo deb http://ftp.debian.org/debian jessie-backports main >> /etc/apt/sources.list'
- 'apt-get update && apt-get install -y cron locales-all net-tools wget'
- 'rm -f /usr/sbin/policy-rc.d'
CONFIG:
trace_limit: 200
masterless: true

View File

@@ -0,0 +1,26 @@
require 'puppet'
require 'beaker-rspec'
require 'yaml'
install_puppet_agent_on hosts, {}
RSpec.configure do |c|
# Module root and settings
module_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
module_name = module_root.split('/').last.sub('-', '_').split('_').last()
c.formatter = :documentation
c.max_displayed_failure_line_count = 5
c.before :suite do
puts 'Install module'
puppet_module_install(source: module_root, module_name: module_name)
hosts.each do |host|
puts 'Install fixtures'
on host, puppet('module','install','stahnma/epel')
on host, puppet('module','install','puppetlabs/stdlib')
on host, puppet('module','install','puppetlabs/concat')
end
end
end

View File

@@ -1 +1 @@
<%= @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 %> <%= @minute %> <%= @hour %> <%= @monthday %> <%= @month %> <%= @weekday %> root<% if scope['rsnapshot::check_mk_job'] == true -%> mk-job rsnapshot_<%= @host %>_<%= @level %><% end -%> <%= @cmd_rsnapshot %> -c <%= @config %> <%= @level %>