summaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
authorAntoine Beaupré <anarcat+gitlab@anarc.at>2015-04-23 18:33:14 +0000
committerAntoine Beaupré <anarcat+gitlab@anarc.at>2015-04-23 18:33:14 +0000
commitfbddc25ee6e813ceffa88192fb607e63cebf8bba (patch)
treef0be23671b501770c091bafb13ae73d43cdaebda /manifests
parent74ce68bcf6f1fbf938e4a161f7c6305f67378b7d (diff)
parentb24afc7ffbe844984e7a46a205e7f04d312fd04c (diff)
Merge branch 'march2015-refactor' into 'master'
March2015 refactor This branch is an attempt to bring the backupninja module in the 21st century. See the upgrade notice in the README for details. See merge request !4
Diffstat (limited to 'manifests')
-rw-r--r--manifests/client.pp179
-rw-r--r--manifests/config.pp38
-rw-r--r--manifests/cron.pp17
-rw-r--r--manifests/duplicity.pp (renamed from manifests/dup.pp)20
-rw-r--r--manifests/init.pp101
-rw-r--r--manifests/labelmount.pp9
-rw-r--r--manifests/maildir.pp12
-rw-r--r--manifests/mysql.pp5
-rw-r--r--manifests/pgsql.pp6
-rw-r--r--manifests/rdiff.pp18
-rw-r--r--manifests/rsync.pp18
-rw-r--r--manifests/server.pp201
-rw-r--r--manifests/sh.pp5
-rw-r--r--manifests/svn.pp5
-rw-r--r--manifests/sys.pp15
15 files changed, 234 insertions, 415 deletions
diff --git a/manifests/client.pp b/manifests/client.pp
deleted file mode 100644
index c41f6e7..0000000
--- a/manifests/client.pp
+++ /dev/null
@@ -1,179 +0,0 @@
-class backupninja::client::defaults {
- $configdir = $cfg_override ? {
- '' => "/etc/backup.d",
- default => $cfg_override,
- }
- $real_keystore = $backupkeystore ? {
- '' => "$fileserver/keys/backupkeys",
- default => $backupkeystore,
- }
- $real_keytype = $backupkeytype ? {
- '' => 'rsa',
- false => 'rsa',
- default => $backupkeytype,
- }
- $real_keydestination = $keydestination ? {
- '' => '/root/.ssh',
- default => $keydestination,
- }
- $real_keyowner = $keyowner ? {
- '' => 0,
- default => $keyowner,
- }
- $real_keygroup = $keygroup ? {
- '' => 0,
- default => $keygroup,
- }
- $real_keymanage = $keymanage ? {
- '' => true,
- default => $keymanage
- }
- $real_ssh_dir_manage = $ssh_dir_manage ? {
- '' => true,
- default => $ssh_dir_manage
- }
- if !defined(Package["backupninja"]) {
- if $backupninja_ensure_version == '' { $backupninja_ensure_version = 'installed' }
- package { 'backupninja':
- ensure => $backupninja_ensure_version
- }
- }
- file { $configdir:
- ensure => directory,
- mode => 750, owner => 0, group => 0;
- }
-}
-
-class backupninja::client inherits backupninja::client::defaults {
- define key(
- $user = false, $host = false, $createkey=false, $installkey=false,
- $keyowner=false, $keygroup=false, $keystore=false, $keystorefspath='',
- $keytype=false,
- $keydest=false, $keydestname=false )
- {
- $real_user = $user ? {
- false => $name,
- default => $user
- }
- $real_host = $host ? {
- false => $user,
- default => $host
- }
- $install_key = $installkey ? {
- false => "${backupninja::client::defaults::real_keymanage}",
- default => $installkey,
- }
- $key_owner = $keyowner ? {
- false => "${backupninja::client::defaults::real_keyowner}",
- default => $keyowner,
- }
- $key_group = $keygroup ? {
- false => "${backupninja::client::defaults::real_keygroup}",
- default => $keygroup,
- }
- $key_store = $keystore ? {
- false => "${backupninja::client::defaults::real_keystore}",
- default => $keystore,
- }
- $key_type = $keytype ? {
- '' => "${backupninja::client::defaults::real_keytype}",
- false => "${backupninja::client::defaults::real_keytype}",
- default => $keytype,
- }
- $key_dest = $keydest ? {
- false => "${backupninja::client::defaults::real_keydestination}",
- default => $keydest,
- }
- $key_dest_name = $keydestname ? {
- false => "id_$key_type",
- default => $keydestname,
- }
- $key_dest_file = "${key_dest}/${key_dest_name}"
-
- if $createkey == true {
- if $keystorefspath == false {
- err("need to define a destination directory for sshkey creation!")
- }
- $ssh_keys = ssh_keygen("${keystorefspath}/${key_dest_name}")
- }
-
-
- case $install_key {
- true: {
- if !defined(File["$key_dest"]) {
- file { "$key_dest":
- ensure => directory,
- mode => 0700, owner => $key_owner, group => $key_group,
- }
- }
- if !defined(File["$key_dest_file"]) {
- file { "$key_dest_file":
- source => "${key_store}/${key_dest_name}",
- mode => 0400, owner => $key_owner, group => $key_group,
- require => File["$key_dest"],
- }
- }
- }
- }
- }
-}
-
-class backupninja::client::maildir inherits backupninja::client::defaults {
-
- if !defined(Package["rsync"]) {
- if $rsync_ensure_version == '' { $rsync_ensure_version = 'installed' }
- package { 'rsync':
- ensure => $rsync_ensure_version,
- }
- }
-}
-
-class backupninja::client::rdiff_backup inherits backupninja::client::defaults {
-
- if !defined(Package["rdiff-backup"]) {
- if $rdiff_backup_ensure_version == '' { $rdiff_backup_ensure_version = 'installed' }
- package { 'rdiff-backup':
- ensure => $rdiff_backup_ensure_version,
- }
- }
-}
-
-class backupninja::client::duplicity inherits backupninja::client::defaults {
-
- if !defined(Package["duplicity"]) {
- if $duplicity_ensure_version == '' { $duplicity_ensure_version = 'installed' }
- package { 'duplicity':
- ensure => $duplicity_ensure_version,
- }
- }
-}
-
-class backupninja::client::sys inherits backupninja::client::defaults {
- case $operatingsystem {
- debian,ubuntu: {
- if !defined(Package["debconf-utils"]) {
- if $debconf_utils_ensure_version == '' { $debconf_utils_ensure_version = 'installed' }
- package { 'debconf-utils':
- ensure => $debconf_utils_ensure_version,
- }
- }
- if !defined(Package["hwinfo"]) {
- if $hwinfo_ensure_version == '' { $hwinfo_ensure_version = 'installed' }
- package { 'hwinfo':
- ensure => $hwinfo_ensure_version,
- }
- }
- }
- default: {}
- }
-}
-
-class backupninja::client::rsync inherits backupninja::client::defaults {
-
- if !defined(Package["rsync"]) {
- if $rsync_ensure_version == '' { $rsync_ensure_version = 'installed' }
- package { 'rsync':
- ensure => $rsync_ensure_version,
- }
- }
-}
diff --git a/manifests/config.pp b/manifests/config.pp
deleted file mode 100644
index 89105b3..0000000
--- a/manifests/config.pp
+++ /dev/null
@@ -1,38 +0,0 @@
-# Write a "main" configuration file for backupninja. Effectively, it does
-# little more than just take the config options you specify in the define and
-# write them to the config file as-is.
-#
-define backupninja::config(
- $configfile = '/etc/backupninja.conf', $loglvl = 4, $when = 'everyday at 01:00',
- $reportemail = 'root', $reportsuccess = false, $reportwarning = true,
- $reporthost = $reporthost, $reportuser = $reportuser,
- $reportdirectory = $reportdirectory,
- $logfile = '/var/log/backupninja.log', $configdir = '/etc/backup.d',
- $scriptdir = '/usr/share/backupninja', $libdir = '/usr/lib/backupninja',
- $usecolors = true, $vservers = false)
-{
- file { $configfile:
- content => template('backupninja/backupninja.conf.erb'),
- owner => root,
- group => root,
- mode => 0644
- }
-}
-
-# Write the backupninja cron job, allowing you to specify an alternate backupninja
-# command (if you want to wrap it in any other commands, e.g. to allow it to use
-# the monkeysphere for authentication), or a different schedule to run it on.
-define backupninja::cron(
- $backupninja_cmd = '/usr/sbin/backupninja',
- $backupninja_test_cmd = $backupninja_cmd,
- $cronfile = "/etc/cron.d/backupninja",
- $min = "0", $hour = "*", $dom = "*", $month = "*",
- $dow = "*")
-{
- file { $cronfile:
- content => template('backupninja/backupninja.cron.erb'),
- owner => root,
- group => root,
- mode => 0644
- }
-}
diff --git a/manifests/cron.pp b/manifests/cron.pp
new file mode 100644
index 0000000..bd4e857
--- /dev/null
+++ b/manifests/cron.pp
@@ -0,0 +1,17 @@
+# Write the backupninja cron job, allowing you to specify an alternate backupninja
+# command (if you want to wrap it in any other commands, e.g. to allow it to use
+# the monkeysphere for authentication), or a different schedule to run it on.
+define backupninja::cron(
+ $backupninja_cmd = '/usr/sbin/backupninja',
+ $backupninja_test_cmd = $backupninja_cmd,
+ $cronfile = "/etc/cron.d/backupninja",
+ $min = "0", $hour = "*", $dom = "*", $month = "*",
+ $dow = "*")
+{
+ file { $cronfile:
+ content => template('backupninja/backupninja.cron.erb'),
+ owner => root,
+ group => root,
+ mode => 0644
+ }
+}
diff --git a/manifests/dup.pp b/manifests/duplicity.pp
index 99b64f8..058945d 100644
--- a/manifests/dup.pp
+++ b/manifests/duplicity.pp
@@ -81,11 +81,11 @@ define backupninja::duplicity( $order = 90,
$destuser = false,
$desturl = false,
# configs to backupninja client
- $backupkeystore = false,
- $backupkeystorefspath = '',
- $backupkeytype = "rsa",
- $backupkeydest = false,
- $backupkeydestname = false,
+ $backupkeystore = $backupninja::keystore,
+ $backupkeystorefspath = $backupninja::keystorefspath,
+ $backupkeytype = $backupninja::keytype,
+ $backupkeydest = $backupninja::keydest,
+ $backupkeydestname = $backupninja::keydestname,
# options to backupninja server sandbox
$ssh_dir_manage = true,
$ssh_dir = false,
@@ -96,8 +96,8 @@ define backupninja::duplicity( $order = 90,
$createkey = false,
$installkey = true ) {
- # the client with configs for this machine
- include backupninja::client::duplicity
+ # install client dependencies
+ ensure_resource('package', 'duplicity', {'ensure' => $backupninja::ensure_duplicity_version})
case $desthost { false: { err("need to define a destination host for remote backups!") } }
case $destdir { false: { err("need to define a destination directory for remote backups!") } }
@@ -118,7 +118,7 @@ define backupninja::duplicity( $order = 90,
}
# the client's ssh key
- backupninja::client::key { "${destuser}-${name}":
+ backupninja::key { "${destuser}-${name}":
user => $destuser,
host => $desthost,
createkey => $createkey,
@@ -131,13 +131,13 @@ define backupninja::duplicity( $order = 90,
}
# the backupninja rule for this duplicity backup
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.dup":
+ file { "${backupninja::configdir}/${order}_${name}.dup":
ensure => $ensure,
content => template('backupninja/dup.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/init.pp b/manifests/init.pp
index fba8cc4..17f83df 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,17 +1,90 @@
-import "client.pp"
-import "config.pp"
-import "dup.pp"
-import "labelmount.pp"
-import "maildir.pp"
-import "mysql.pp"
-import "pgsql.pp"
-import "rdiff.pp"
-import "server.pp"
-import "sh.pp"
-import "svn.pp"
-import "sys.pp"
+class backupninja (
+ $ensure_backupninja_version = 'installed',
+ $ensure_rsync_version = 'installed',
+ $ensure_rdiffbackup_version = 'installed',
+ $ensure_debconfutils_version = 'installed',
+ $ensure_hwinfo_version = 'installed',
+ $ensure_duplicity_version = 'installed',
+ $configdir = '/etc/backup.d',
+ $keystore = "${::fileserver}/keys/backupkeys",
+ $keystorefspath = false,
+ $keytype = 'rsa',
+ $keydest = '/root/.ssh',
+ $keyowner = 0,
+ $keygroup = 0,
+ $keymanage = true,
+ $configfile = '/etc/backupninja.conf',
+ $loglvl = 4,
+ $when = 'everyday at 01:00',
+ $reportemail = 'root',
+ $reportsuccess = false,
+ $reportwarning = true,
+ $reporthost = undef,
+ $reportuser = undef,
+ $reportdirectory = undef,
+ $logfile = '/var/log/backupninja.log',
+ $configdir = '/etc/backup.d',
+ $scriptdir = '/usr/share/backupninja',
+ $libdir = '/usr/lib/backupninja',
+ $usecolors = true,
+ $vservers = false
+) {
-class backupninja {
+ # install client dependencies
+ ensure_resource('package', 'backupninja', {'ensure' => $ensure_backupninja_version})
-}
+ # set up backupninja config directory
+ file { $configdir:
+ ensure => directory,
+ mode => 750, owner => 0, group => 0;
+ }
+
+ define key(
+ $user = $name,
+ $createkey = false,
+ $keymanage = $backupninja::keymanage,
+ $keyowner = $backupninja::keyowner,
+ $keygroup = $backupninja::keygroup,
+ $keystore= $backupninja::keystore,
+ $keystorefspath = $backupninja::keystorefspath,
+ $keytype = $backupninja::keytype,
+ $keydest = $backupninja::keydest,
+ $keydestname = "id_${backupninja::keytpe}" )
+ {
+
+ # generate the key
+ if $createkey == true {
+ if $keystorefspath == false {
+ err("need to define a destination directory for sshkey creation!")
+ }
+ $ssh_keys = ssh_keygen("${keystorefspath}/${keydestname}")
+ }
+ # deploy/manage the key
+ if $keymanage == true {
+ $keydestfile = "${keydest}/${keydestname}"
+ ensure_resource('file', $keydest, {
+ 'ensure' => 'directory',
+ 'mode' => '0700',
+ 'owner' => $keyowner,
+ 'group' => $keygroup
+ })
+ ensure_resource('file', $keydestfile, {
+ 'ensure' => 'present',
+ 'source' => "${keystore}/${keydestname}",
+ 'mode' => '0700',
+ 'owner' => $keyowner,
+ 'group' => $keygroup,
+ 'require' => 'File["$key_dest"]'
+ })
+ }
+ }
+
+ file { $configfile:
+ content => template('backupninja/backupninja.conf.erb'),
+ owner => root,
+ group => 0,
+ mode => '0644'
+ }
+
+}
diff --git a/manifests/labelmount.pp b/manifests/labelmount.pp
index 6b1f772..8974cec 100644
--- a/manifests/labelmount.pp
+++ b/manifests/labelmount.pp
@@ -23,23 +23,22 @@ define backupninja::labelmount($order = 10,
$label,
$dest
) {
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.labelmount":
+ file { "${backupninja::configdir}/${order}_${name}.labelmount":
ensure => $ensure,
content => template('backupninja/labelmount.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
- file { "${backupninja::client::defaults::configdir}/99_${name}.umount":
+ file { "${backupninja::configdir}/99_${name}.umount":
ensure => $ensure,
content => template('backupninja/umount.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
# Copy over the handler scripts themselves, since they're not in the
diff --git a/manifests/maildir.pp b/manifests/maildir.pp
index ab7ff55..2454b82 100644
--- a/manifests/maildir.pp
+++ b/manifests/maildir.pp
@@ -17,25 +17,27 @@
#
#
define backupninja::maildir(
- $order = 99, $ensure = present, $when = 'everyday at 21:00', $srcdir = false,
+ $order = 99, $ensure = present,
+ $when = 'everyday at 21:00', $srcdir = false,
$destdir = false, $desthost = false, $destuser = false, $destid_file = false,
$remove = false, $multiconnection = yes, $keepdaily='4', $keepweekly='2',
$keepmonthly='2')
{
- include backupninja::client::maildir
-
+ # install client dependencies
+ ensure_resource('package', 'rsync', {'ensure' => $backupninja::ensure_rsync_version})
+
case $srcdir { false: { err("need to define a source directory to backup!") } }
case $destdir { false: { err("need to define a destination directory to backup!") } }
case $desthost { false: { err("need to define a destination host for backups!") } }
case $destuser { false: { err("need to define a destination user for backups!") } }
case $destid_file { false: { err("need to define a ssh key id file to use!") } }
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.maildir":
+ file { "${backupninja::configdir}/${order}_${name}.maildir":
ensure => $ensure,
content => template('backupninja/maildir.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/mysql.pp b/manifests/mysql.pp
index 8e33e8e..b8877c0 100644
--- a/manifests/mysql.pp
+++ b/manifests/mysql.pp
@@ -27,13 +27,12 @@ define backupninja::mysql(
default => $configfile,
}
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.mysql":
+ file { "${backupninja::configdir}/${order}_${name}.mysql":
ensure => $ensure,
content => template('backupninja/mysql.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/pgsql.pp b/manifests/pgsql.pp
index 07fab32..d4814be 100644
--- a/manifests/pgsql.pp
+++ b/manifests/pgsql.pp
@@ -16,14 +16,12 @@
define backupninja::pgsql(
$order = 10, $ensure = present, $databases = 'all', $backupdir = "/var/backups/postgres", $compress = true, $vsname = false)
{
-
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.pgsql":
+ file { "${backupninja::configdir}/${order}_${name}.pgsql":
ensure => $ensure,
content => template('backupninja/pgsql.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/rdiff.pp b/manifests/rdiff.pp
index 6c692c7..6a602ea 100644
--- a/manifests/rdiff.pp
+++ b/manifests/rdiff.pp
@@ -16,8 +16,8 @@
# directories.
#
define backupninja::rdiff(
- $order = 90, $ensure = present, $user = false,
- $home = "/home/${user}-${name}", $host = false,
+ $order = 90, $ensure = present,
+ $user = false, $home = "/home/${user}-${name}", $host = false,
$type = 'local',
$exclude = [ "/home/*/.gnupg", "/home/*/.local/share/Trash", "/home/*/.Trash",
"/home/*/.thumbnails", "/home/*/.beagle", "/home/*/.aMule",
@@ -26,9 +26,11 @@ define backupninja::rdiff(
"/home", "/usr/local/*bin", "/var/lib/dpkg/status*" ],
$vsinclude = false, $keep = 30, $sshoptions = false, $options = '--force', $ssh_dir_manage = true,
$ssh_dir = false, $authorized_keys_file = false, $installuser = true, $installkey = true, $key = false,
- $backuptag = false, $backupkeytype = "rsa", $backupkeystore = false, $extras = false, $nagios2_description = 'backups')
+ $backuptag = false, $backupkeytype = $backupninja::keytype, $backupkeystore = $backupninja::keystore,
+ $extras = false, $nagios_description = 'backups')
{
- include backupninja::client::rdiff_backup
+ # install client dependencies
+ ensure_resource('package', 'rdiff-backup', {'ensure' => $backupninja::ensure_rdiffbackup_version})
$directory = "$home/rdiff-backup/"
@@ -46,10 +48,10 @@ define backupninja::rdiff(
manage_ssh_dir => $ssh_dir_manage, ssh_dir => $ssh_dir, key => $key,
authorized_keys_file => $authorized_keys_file, installuser => $installuser,
backuptag => $real_backuptag, keytype => $backupkeytype, backupkeys => $backupkeystore,
- nagios2_description => $nagios2_description
+ nagios_description => $nagios_description
}
- backupninja::client::key
+ backupninja::key
{
"${user}-${name}": user => $user, host => $host,
installkey => $installkey,
@@ -60,13 +62,13 @@ define backupninja::rdiff(
}
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.rdiff":
+ file { "${backupninja::configdir}/${order}_${name}.rdiff":
ensure => $ensure,
content => template('backupninja/rdiff.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/rsync.pp b/manifests/rsync.pp
index 1c82889..160fad7 100644
--- a/manifests/rsync.pp
+++ b/manifests/rsync.pp
@@ -2,11 +2,12 @@
# Based on backupninja::rdiff
define backupninja::rsync(
- $order = 90, $ensure = present, $user = false, $home = false, $host = false,
+ $order = 90, $ensure = present,
+ $user = false, $home = false, $host = false,
$ssh_dir_manage = true, $ssh_dir = false, $authorized_keys_file = false,
$installuser = true, $installkey = true, $key = false, $backuptag = false,
- $home = false, $backupkeytype = "rsa", $backupkeystore = false, $extras = false,
- $nagios2_description = 'backups', $subfolder = 'rsync',
+ $home = false, $backupkeytype = $backupninja::keytype, $backupkeystore = $backupninja::keystore, $extras = false,
+ $nagios_description = 'backups', $subfolder = 'rsync',
$log = false, $partition = false, $fscheck = false, $read_only = false,
$mountpoint = false, $backupdir = false, $format = false, $days = false,
@@ -29,7 +30,8 @@ define backupninja::rsync(
$rm = false, $cp = false, $touch = false, $mv = false, $fsck = false)
{
- include backupninja::client::rsync
+ # install client dependencies
+ ensure_resource('package', 'rsync', {'ensure' => $backupninja::ensure_rsync_version})
# Right now just local origin with remote destination is supported.
$from = 'local'
@@ -63,10 +65,10 @@ define backupninja::rsync(
backuptag => $real_backuptag,
keytype => $backupkeytype,
backupkeys => $backupkeystore,
- nagios2_description => $nagios2_description
+ nagios_description => $nagios_description
}
- backupninja::client::key { "${user}-${name}":
+ backupninja::key { "${user}-${name}":
user => $user,
host => $host,
installkey => $installkey,
@@ -76,12 +78,12 @@ define backupninja::rsync(
}
}
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.rsync":
+ file { "${backupninja::configdir}/${order}_${name}.rsync":
ensure => $ensure,
content => template('backupninja/rsync.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/server.pp b/manifests/server.pp
index f702056..6346a62 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -5,40 +5,33 @@ define backupninja_server_realize($host) {
Ssh_authorized_key <<| tag == "backupninja-$host" |>>
}
-class backupninja::server {
+class backupninja::server (
+ $backupdir = '/backup',
+ $backupdir_ensure = 'directory',
+ $backupserver_tag = $::fqdn,
+ $manage_nagios = false,
+ $nagios_server = undef
+) {
- $real_backupdir = $backupdir ? {
- '' => "/backup",
- default => $backupdir,
- }
- $real_usermanage = $usermanage ? {
- '' => 'doit',
- default => $usermanage
- }
- $real_backupserver_tag = $backupserver_tag ? {
- '' => $fqdn,
- default => $backupserver_tag
- }
- $real_backupdir_ensure = $backupdir_ensure ? {
- '' => "directory",
- default => $backupdir_ensure,
- }
-
group { "backupninjas":
ensure => "present",
gid => 700
}
- file { "$real_backupdir":
- ensure => "$real_backupdir_ensure",
+ file { $backupdir:
+ ensure => $backupdir_ensure,
mode => 0710, owner => root, group => "backupninjas",
- require => $real_backupdir_ensure ? {
+ require => $backupdir_ensure ? {
'directory' => undef,
- default => File["$real_backupdir_ensure"],
+ default => File["$backupdir_ensure"],
}
}
- if $use_nagios {
+ if $manage_nagios {
+
+ if $nagios_server == undef {
+ fail('Cannot manage nagios with undefined nagios_server parameter!')
+ }
include nagios::nsca::client
@@ -49,7 +42,7 @@ class backupninja::server {
}
cron { checkbackups:
- command => "/usr/local/bin/checkbackups -d $real_backupdir | /usr/sbin/send_nsca -H $nagios_server -c /etc/send_nsca.cfg | grep -v 'sent to host successfully'",
+ command => "/usr/local/bin/checkbackups -d $backupdir | /usr/sbin/send_nsca -H $nagios_server -c /etc/send_nsca.cfg | grep -v 'sent to host successfully'",
user => "root",
hour => "8-23",
minute => 59,
@@ -58,148 +51,92 @@ class backupninja::server {
}
# collect all resources from hosted backups
- Backupninja_server_realize <<| tag == "$real_backupserver_tag" |>>
-
- if !defined(Package["rsync"]) {
- if $rsync_ensure_version == '' { $rsync_ensure_version = 'installed' }
- package { 'rsync':
- ensure => $rsync_ensure_version,
- }
- }
+ Backupninja_server_realize <<| tag == "$backupserver_tag" |>>
# this define allows nodes to declare a remote backup sandbox, that have to
# get created on the server
define sandbox(
- $user = false, $host = false, $installuser = true, $dir = false, $manage_ssh_dir = true,
- $ssh_dir = false, $authorized_keys_file = false, $key = false, $keytype = 'dss', $backupkeys = false, $uid = false,
- $gid = "backupninjas", $backuptag = false, $nagios2_description = "backups")
+ $user = $name, $host = $::fqdn, $installuser = true, $dir = "${backupninja::server::backupdir}/${::fqdn}", $manage_ssh_dir = true,
+ $ssh_dir = false, $authorized_keys_file = 'authorized_keys', $key = false, $keytype = 'dss', $backupkeys = "${fileserver}/keys/backupkeys", $uid = false,
+ $gid = "backupninjas", $backuptag = "backupninja-${::fqdn}", $nagios_description = 'backups')
{
-
- $real_user = $user ? {
- false => $name,
- default => $user,
- '' => $name,
- }
- $real_host = $host ? {
- false => $fqdn,
- default => $host,
- }
- $real_backupkeys = $backupkeys ? {
- false => "$fileserver/keys/backupkeys",
- default => $backupkeys,
- }
- $real_dir = $dir ? {
- false => "${backupninja::server::real_backupdir}/$fqdn",
- default => $dir,
- }
- $real_ssh_dir = $ssh_dir ? {
- false => "${real_dir}/.ssh",
- default => $ssh_dir,
- }
- $real_authorized_keys_file = $authorized_keys_file ? {
- false => "authorized_keys",
- default => $authorized_keys_file,
- }
- $real_backuptag = $backuptag ? {
- false => "backupninja-$fqdn",
- default => $backuptag,
- }
- $real_nagios2_description = $nagios2_description ? {
- false => "backups",
- default => $nagios2_description,
+ if $ssh_dir == false {
+ $ssh_dir = "${dir}/.ssh"
}
- if $use_nagios {
+ if $manage_nagios {
# configure a passive service check for backups
- nagios::service::passive { $nagios2_description: }
+ nagios::service::passive { $nagios_description: }
}
- if !defined(Backupninja_server_realize["${fqdn}@${real_host}"]) {
- # this defines just maps that $real_host host backups for $fdqn
- @@backupninja_server_realize { "${fqdn}@${real_host}":
- host => $fqdn,
- tag => $real_host,
+ if !defined(Backupninja_server_realize["${::fqdn}@${host}"]) {
+ @@backupninja_server_realize { "${::fqdn}@${host}":
+ host => $::fqdn,
+ tag => $host,
}
}
- if !defined(File["$real_dir"]) {
- @@file { "$real_dir":
- ensure => directory,
- mode => 0750, owner => $real_user, group => 0,
- tag => "$real_backuptag",
- }
- }
+ ensure_resource('file', $dir, {
+ 'ensure' => 'directory',
+ 'mode' => '0750',
+ 'owner' => $user,
+ 'group' => 0,
+ 'tag' => $backuptag
+ })
+
case $installuser {
true: {
- case $manage_ssh_dir {
- true: {
- if !defined(File["$real_ssh_dir"]) {
- @@file { "${real_ssh_dir}":
- ensure => directory,
- mode => 0700, owner => $real_user, group => 0,
- require => [User[$real_user], File["$real_dir"]],
- tag => "$real_backuptag",
- }
+ if $manage_ssh_dir == true {
+ if !defined(File["$ssh_dir"]) {
+ @@file { "${ssh_dir}":
+ ensure => directory,
+ mode => 0700, owner => $user, group => 0,
+ require => [User[$user], File["$dir"]],
+ tag => "$backuptag",
}
}
}
case $key {
false: {
- if !defined(File["${real_ssh_dir}/${real_authorized_keys_file}"]) {
- @@file { "${real_ssh_dir}/${real_authorized_keys_file}":
+ if !defined(File["${ssh_dir}/${authorized_keys_file}"]) {
+ @@file { "${ssh_dir}/${authorized_keys_file}":
ensure => present,
mode => 0644, owner => 0, group => 0,
- source => "$real_backupkeys/${real_user}_id_${keytype}.pub",
- require => File["${real_ssh_dir}"],
- tag => "$real_backuptag",
+ source => "${backupkeys}/${user}_id_${keytype}.pub",
+ require => File["${ssh_dir}"],
+ tag => "$backuptag",
}
}
}
default: {
if !defined(Ssh_autorized_key["$real_user"]) {
- @@ssh_authorized_key{ "$real_user":
+ @@ssh_authorized_key{ "$user":
type => $keytype,
key => $key,
- user => $real_user,
- target => "${real_ssh_dir}/${real_authorized_keys_file}",
- tag => "$real_backuptag",
- require => User[$real_user],
+ user => $user,
+ target => "${ssh_dir}/${authorized_keys_file}",
+ tag => "$backuptag",
+ require => User[$user],
}
}
}
}
- case $uid {
- false: {
- if !defined(User["$real_user"]) {
- @@user { "$real_user":
- ensure => "present",
- gid => "$gid",
- comment => "$real_user backup sandbox",
- home => "$real_dir",
- managehome => true,
- shell => "/bin/bash",
- password => '*',
- require => Group['backupninjas'],
- tag => "$real_backuptag"
- }
- }
- }
- default: {
- if !defined(User["$real_user"]) {
- @@user { "$real_user":
- ensure => "present",
- uid => "$uid",
- gid => "$gid",
- comment => "$real_user backup sandbox",
- home => "$real_dir",
- managehome => true,
- shell => "/bin/bash",
- password => '*',
- require => Group['backupninjas'],
- tag => "$real_backuptag"
- }
- }
+ if !defined(User["$user"]) {
+ @@user { "$user":
+ ensure => "present",
+ uid => $uid ? {
+ false => undef,
+ default => $uid
+ },
+ gid => "$gid",
+ comment => "$user backup sandbox",
+ home => "$dir",
+ managehome => true,
+ shell => "/bin/bash",
+ password => '*',
+ require => Group['backupninjas'],
+ tag => "$backuptag"
}
}
}
diff --git a/manifests/sh.pp b/manifests/sh.pp
index fa6aca5..4a60e5f 100644
--- a/manifests/sh.pp
+++ b/manifests/sh.pp
@@ -14,13 +14,12 @@ define backupninja::sh($order = 50,
$ensure = present,
$command_string
) {
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.sh":
+ file { "${backupninja::configdir}/${order}_${name}.sh":
ensure => $ensure,
content => template('backupninja/sh.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/svn.pp b/manifests/svn.pp
index 3ab59c9..1ab0597 100644
--- a/manifests/svn.pp
+++ b/manifests/svn.pp
@@ -17,13 +17,12 @@ define backupninja::svn($order = 20,
$tmp = '/var/backups/svn.tmp',
$vsname = false
) {
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.svn":
+ file { "${backupninja::configdir}/${order}_${name}.svn":
ensure => $ensure,
content => template('backupninja/svn.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}
diff --git a/manifests/sys.pp b/manifests/sys.pp
index 7de319c..946a525 100644
--- a/manifests/sys.pp
+++ b/manifests/sys.pp
@@ -24,13 +24,22 @@ define backupninja::sys($order = 30,
$doluks = false,
$dolvm = false
) {
- include backupninja::client::defaults
- file { "${backupninja::client::defaults::configdir}/${order}_${name}.sys":
+
+ # install client dependencies
+ case $operatingsystem {
+ debian,ubuntu: {
+ ensure_resource('package', 'debconf-utils', {'ensure' => $backupninja::ensure_debconfutils_version})
+ ensure_resource('package', 'hwinfo', {'ensure' => $backupninja::ensure_hwinfo_version})
+ }
+ default: {}
+ }
+
+ file { "${backupninja::configdir}/${order}_${name}.sys":
ensure => $ensure,
content => template('backupninja/sys.conf.erb'),
owner => root,
group => root,
mode => 0600,
- require => File["${backupninja::client::defaults::configdir}"]
+ require => File["${backupninja::configdir}"]
}
}