Backupninja Module ------------------- This module helps you configure all of your backups with puppet, using backupninja! !! UPGRADE NOTICE !! If you were previously using this module, some pieces have changed, and you need to carefully change your use of them, or you will find your backups could stop working or get duplicated. The backupninja::client class has been renamed to backupninja, and is now *required* in all node manifests. Make sure the backupninja class is now declared in all your node manifests! This new class now defines defaults which were previously provided by backupninja::client::defaults, and can now be overridden thanks to the brand new technology of class parameters. This class also manages the backupninja configuration file, replacing the backupninja::config ressource. The backupninja::server class now takes parameters, replacing several global variables such as $backupdir, $backupserver_tag and $nagios_server. The $manage_nagios parameter also replaces the $use_nagios global. As for handlers, they don't include the backupninja::client anymore and now read several default values from the backupninja base class. The $installkey parameter used in several handlers has been renamed to $keymanage, to keep in line with the base class parameter. If you were using the rdiff-backup handler, you need to read the following section carefully. Changes to the rdiff-backup handler ----------------------------------- You will need to make sure you change all of your "$directory" parameters to be "$home" instead, and on your backupserver you will need to move all of your backups into "$home"/rdiff-backup. Previously, they were put in "$directory", which doubled as the home for the user that was created. This caused problems with rdiff-backup because of dot files and other things which were not part of any rdiff-backup. The rdiff resource name is now used as the subdirectory where rdiff backups are sent. This was previously hardcoded to "rdiff-backup", but in order to support multiple rdiff backups per host, we now use the resource name. So if you were using the following resource: backupninja::rdiff { 'main': } You will want to use the following resource: backupninja::rdiff { 'rdiff-backup': } file { '/etc/backup.d/90_main.rdiff': ensure => absent; } Otherwise your backups may be duplicated! Getting started --------------- This module requires Puppet versions 2.7 and up. An up-to-date version of the puppet-stdlib module is also required. Configure your backup server ---------------------------- Now you will need to configure a backup server by adding the following to your node definition for that server: include backupninja::server The default configuration will store backup data in the "/backup" directory. To change this you may declare the class with a "backupdir" parameter: class { 'backupninja::server': backupdir => '/mnt/backupdata' } By configuring a backupninja::server, this module will automatically create sandboxed users on the server for each client for their backups. Configure your backup clients ----------------------------- First, you need to include the backupninja class or declare it with custom parameters: class { 'backupninja': loglvl => 3, usecolors => false, reportsuccess => false, reportwarning => true, ensure_backupninja_version => '1.0.1-1', ensure_rdiffbackup_version => '1.2.8-7' } In this case, the module will make sure that the backupninja package is installed (using puppet's ensure parameter language) and create the /etc/backupninja.conf configuration file. If you need to specify a specific version of either backupninja itself, or the specific programs that the handler class installs, you can specify the version you need installed by providing a class parameter, as shown in the example. Configuring handlers -------------------- Depending on which backup method you want to use on your client, you can simply specify some configuration options for that handler that are necessary for your client. Each handler has its own configuration options necessary to make it work, each of those are available as puppet parameters. You can see the handler documentation, or look at the handler puppet files included in this module to see your different options. Included below are some configuration examples for different handlers. * An example mysql handler configuration: backupninja::mysql { 'all_databases': user => root, backupdir => '/var/backups', compress => true, sqldump => true } * An example rdiff-backup handler configuration: backupninja::rdiff { 'backup_all': directory => '/media/backupdisk', include => ['/var/backups', '/home', '/var/lib/dpkg/status'], exclude => '/home/*/.gnupg' } * A remote rdiff-backup handler: backupninja::rdiff { 'main': host => 'backup.example.com', type => 'remote', directory => "/backup/${::fqdn}", user => "backup-${::hostname}", } Automatic creation of ssh-keys for duplicity -------------------------------------------- backupninja::duplicity can be used to - create an ssh keypair for a client - place the keypair on the puppetmaster in a given location - place the keypair in /root/.ssh on the client i.e.: backupninja::duplicity { "duplicity_${::fqdn}": sshoptions => "-oIdentityFile=/root/.ssh/backupninja_${::hostname}_id_rsa", desthost => 'HOST', destdir => "/var/backup/backupninja/${::fqdn}", destuser => "backupninja_${::hostname}", encryptkey => 'KEYID', password => 'PW', backupkeystore => 'puppet:///keys', backupkeystorefspath => '/etc/puppet/modules/keys/files', backupkeydestname => "backupninja_${::hostname}_id_rsa", createkey => true, installkey => true, ... } Nagios alerts about backup freshness ------------------------------------ If you set the $backupninja::server::nagios_server variable to be the name of your nagios server, then a passive nagios service gets setup so that the backup server pushes checks, via a cronjob that calls /usr/local/bin/checkbackups.pl, to the nagios server to alert about relative backup freshness. To use this feature a few pre-requisites are necessary: . configure nsca on your backup server (not done via puppet yet) . configure nsca on your nagios server (not done via puppet yet) . server backup directories are named after their $fqdn . backups must be under $home/dup, $home/rdiff-backup depending on method