# # General backup conventions and definitions according to # http://padrao.sarava.org/trac/wiki/Backups/Convencoes # # This module is distributed under the GNU Affero General Public License: # # Backup module for puppet # Copyright (C) 2009 Sarava Group # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . class backup( $when = lookup('backup::when', undef, undef, 'everyday at 01:00'), $audit_rsync = lookup('backup::audit_rsync', undef, undef, true), $reportwarning = lookup('backup::reportwarning', undef, undef, true), $hwinfo = lookup('backup::hwinfo', undef, undef, 'installed') ) { include backup::params class { 'backupninja': loglvl => 4, usecolors => false, keymanage => false, when => $when, reportwarning => $reportwarning, ensure_hwinfo_version => $hwinfo, ensure_backupninja_version => $backup::params::backupninja_ensure_version, } class { 'backupninja::server': backupdir => $backup::params::backupdir, backupdir_ensure => $backup::params::backupdir_ensure, use_storedconfigs => false, } package { "duplicity": ensure => installed, } package { "borgbackup": ensure => latest, } package { "debconf-utils": ensure => installed, } # See http://www.rfc3092.net/2013/09/missing-modules-for-paramiko-and-gio-in-duplicity-foo/ package { "python-gobject-2": ensure => $::lsbdistcodename ? { 'squeeze' => absent, default => present, }, } file { "${backup::params::backupdir_remote}": ensure => directory, owner => root, group => root, mode => '0755', } file { "${backup::params::backupdir_users}": ensure => directory, owner => root, group => root, mode => '0755', } file { "/var/log/backup": ensure => directory, owner => root, group => root, mode => '0755', } file { "/etc/logrotate.d/backup": ensure => present, owner => root, group => root, mode => '0644', source => "puppet:///modules/backup/logrotate.d/backup", } # rdiff-check script file { "/usr/local/sbin/rdiff-check": content => template('backup/rdiff-check.sh.erb'), owner => root, group => root, mode => '0755', ensure => present, } # check rdiff-backups once a week cron { "rdiff_check": command => "/usr/local/sbin/rdiff-check", user => root, hour => "0", minute => "0", weekday => "0", ensure => present, require => File['/usr/local/sbin/rdiff-check'], } # rsync-check script file { "/usr/local/sbin/rsync-check": content => template('backup/rsync-check.sh.erb'), owner => root, group => root, mode => '0755', ensure => present, } # check rsync-backups once a week cron { "rsync_check": command => "/usr/local/sbin/rsync-check", user => root, hour => "0", minute => "0", weekday => $audit_rsync ? { true => '*', default => "0", }, ensure => present, require => File['/usr/local/sbin/rsync-check'], } # we have to keep that as we have custom changes that # might not be merged and released in backupninja file { "/usr/share/backupninja/rsync": ensure => present, owner => "root", group => "root", mode => '0644', source => "puppet:///modules/backup/handlers/rsync", require => Package['backupninja'], } # TODO: remove in the future # sync-backups script file { "/usr/local/sbin/sync-backups": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # sync-media script file { "/usr/local/sbin/sync-media": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # sync-media-export script file { "/usr/local/sbin/sync-media-export": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # sync-media-init script file { "/usr/local/sbin/sync-media-init": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # sync-media-init script file { "/usr/local/sbin/sync-media-initremotes": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # mount-media script file { "/usr/local/sbin/mount-media": owner => root, group => root, mode => '0755', ensure => absent, } # TODO: remove in the future # umount-media script file { "/usr/local/sbin/umount-media": owner => root, group => root, ensure => absent, } }