Useful to control when a cron job runs to avoid all servers backing up
[puppet_backupninja.git] / README
1 Backupninja Module
2 -------------------
3
4 This module helps you configure all of your backups with puppet, using 
5 backupninja!
6
7 ! Upgrade notice !
8
9 If you were previously using this module, some pieces have changed,
10 and you need to carefully change your use of them, or you will find
11 your backups to be duplicated on your backup server. The important
12 part that changed has to do with the rdiff-backup handler, if you
13 weren't using that, you don't need to worry.
14
15 If you were, you will need to make sure you change all of your
16 "$directory" parameters to be "$home" instead, and on your
17 backupserver you will need to move all of your backups into
18 "$home"/rdiff-backup. Previously, they were put in "$directory", which
19 doubled as the home for the user that was created. This caused
20 problems with rdiff-backup because of dot files and other things which
21 were not part of any rdiff-backup.
22
23 Getting started
24 ---------------
25
26 First you will need to import the module:
27
28   import "backupninja"
29
30 Configure your backup server
31 ----------------------------
32
33 Now you will need to configure a backup server by adding the following
34 to your node definition for that server:
35   
36   include backupninja::server
37
38 By configuring a backupninja::server, this module will automatically
39 create sandboxed users on the server for each client for their
40 backups. 
41
42 You may also want to set some variables on your backup server, such as:
43
44   $backupdir = "/backups"
45
46
47 Configure your backup clients
48 -----------------------------
49
50 The backupninja package and the necessary backup software will be
51 installed automatically when you include any of the different handlers
52 (as long as you are not handling it elsewhere in your manifests), for
53 example:
54
55 include backupninja::client::rdiff_backup
56
57 In this case, the module will make sure that the backupninja package
58 and the required rdiff-backup package are 'installed'/'present' (using
59 puppet's ensure parameter language). If you need to specify a specific
60 version of either backupninja itself, or the specific programs that
61 the handler class installs, you can specify the version you need
62 installed by providing a variable, for example:
63
64 $backupninja_ensure_version = "0.9.7~bpo50+1"
65 $rdiff_backup_ensure_version = "1.2.5-1~bpo40+1"
66 $rsync_ensure_version = "3.0.6-1~bpo50+1"
67 $duplicity_ensure_version = "0.6.04-1~bpo50+1"
68 $debconf_utils_ensure_version = "1.5.28"
69 $hwinfo_ensure_version = "16.0-2"
70
71 If you do not specify these variables the default 'installed/present'
72 version will be installed when you include this class.
73
74 Configuring handlers
75 --------------------
76
77 Depending on which backup method you want to use on your client, you
78 can simply specify some configuration options for that handler that are
79 necessary for your client.
80
81 Each handler has its own configuration options necessary to make it
82 work, each of those are available as puppet parameters. You can see
83 the handler documentation, or look at the handler puppet files
84 included in this module to see your different options.
85
86 Included below are some configuration examples for different handlers.
87
88 * An example mysql handler configuration:
89
90 backupninja::mysql { all_databases:
91         user => root,
92         backupdir => '/var/backups',
93         compress => true,
94         sqldump => true
95 }
96
97 * An example rdiff-backup handler configuration:
98
99 backupninja::rdiff { backup_all:
100         directory => '/media/backupdisk',
101         include => ['/var/backups', '/home', '/var/lib/dpkg/status'],
102         exclude => '/home/*/.gnupg'
103 }
104
105 * A remote rdiff-backup handler:
106
107     backupninja::rdiff { "main":
108         host => "backup.example.com",
109         type => "remote",
110         directory => "/backup/$fqdn",
111         user => "backup-$hostname",
112     }
113
114
115 Configuring backupninja itself
116 ------------------------------
117
118 You may wish to configure backupninja itself. You can do that by doing
119 the following, and the /etc/backupninja.conf will be managed by
120 puppet, all the backupninja configuration options are available, you
121 can find them inside this module as well.
122
123 For example:
124
125 backupninja::config { conf:
126         loglvl => 3,
127         usecolors => false,
128         reportsuccess => false,
129         reportwarning => true;
130 }
131
132
133 Nagios alerts about backup freshness
134 ------------------------------------
135
136 If you set the $nagios_server variable to be the name of your nagios
137 server, then a passive nagios service gets setup so that the backup
138 server pushes checks, via a cronjob that calls
139 /usr/local/bin/checkbackups.pl, to the nagios server to alert about
140 relative backup freshness.
141
142 To use this feature a few pre-requisites are necessary:
143
144  . configure nsca on your backup server (not done via puppet yet)
145  . configure nsca on your nagios server (not done via puppet yet)
146  . server backup directories are named after their $fqdn
147  . using nagios2 module, nagios/nagios3 modules/nativetypes not supported yet
148  . using a nagios puppet module that can create passive service checks
149  . backups must be under $home/dup, $home/rdiff-backup depending on method
150  . $nagios_server must be set before the class is included
151
152