Clone this repo:
  1. 31a043d crank up client timeout for large systems by Chris Lambertus · 1 year, 9 months ago master
  2. 03ce19c stop hard-restarting backuppc on config change by Chris Lambertus · 1 year, 9 months ago
  3. ca29688 typo by Chris Lambertus · 2 years, 4 months ago
  4. e6bcb42 Merge pull request #2 from apache/link_ensure by Greg Stein · 2 years, 4 months ago
  5. 5df982a don't force creation of a link if ensure => absent by Chris Lambertus · 2 years, 4 months ago link_ensure

BackupPC Module

Build Status Code Coverage Puppet Forge Puppet Forge - downloads Puppet Forge - scores

Table of Contents

  1. Overview
  2. Module Description
  3. Usage
  4. Reference


This module will install and configure a BackupPC server and allow you to add other puppet managed nodes as clients/hosts. It uses exported resources to create the client's configuration file, add it to the hosts file and setup ssh access if needed.

This module started as a fork of

Module Description

BackupPC has many configuration options and this module should provide you access to most of them. BackupPC's global configuration file is managed by backuppc::server and is intended to setup useful defaults that can be overridden by the client if needed.

Where BackupPC‘s configuration file uses camel case for the config variables the module’s class parameters would use the same names but replacing the uppercase characters with lowercase and an underscore prefix.

For xfer methods that require ssh the module can:

  • Create a non-privledged account on the client and allow it access to rsync or tar via sudo.
  • Install the server's ssh key.
  • Add the client's ssh key to the list of known hosts.

By default the account name is ‘backup’. You can choose to do the ssh configuration yourself if it doesn't suit your environment (see the client.pp file for notes on system_account).

The module is designed to work alongside the BackupPC web administration interface, meaning hosts that are configured but not managed by this module will still work.


Minimal server configuration

class { 'backuppc::server':
  backuppc_password => 'somesecret'

This will do the typical install, configure and service management. The module does not manage apache. It will, if the apache_configuation parameter is true, install an apache configuration file that creates an alias from the /backuppc url to the backuppc files on the system. Additionally it will create a htpasswd file with the default backuppc user and the password that you provide for access to the web based administration. You will however need to inform the apache service that something has changed. Alternatively you can install backuppc as a virtual host or whatever else suits your needs.

Additional login accounts

backuppc::server::user { 'john':
  password => 'mypassword'

The default path to the htpasswd file is in the [config_directory]/htpasswd. You can add additional login accounts and assign these to hosts (see client examples for this).

More server configuration

class { 'backuppc::server':
  backuppc_password => 'somesecret'
  wakeup_schedule   => [1, 2, 3, 4, 5, 21, 22, 23],
  max_backups       => 3,
  max_user_backups  => 1,

Please consult the BackupPC documentation for explanations on configuration options:

Some configuration options, like xfer_method, is more useful to set when adding a client. Where a configuration parameter is ommited backuppc's default is applied in the main/global configuration file.

Client configuration

class { 'backuppc::client':
  backuppc_hostname     => '',
  rsync_share_name      => ['/home', '/etc'],
  hosts_file_more_users => 'john',

You'll need to specify the hostname of the node on which you installed backuppc server. This value should be the same as the facter value for fqdn. By default the xfer_method is rsync and you can specify the paths to backup with the parameter rsync_share_name. With rsync and tar methods the module will create on the client an system account and allow the server access to it (see the description section in this readme).

Backuping up the backuppc server itself

class { 'backuppc::client':
  backuppc_hostname => $::fqdn,
  xfer_method       => 'tar',
  tar_share_name    => ['/home', '/etc', '/var/log'],
  tar_client_cmd    => '/usr/bin/sudo $tarPath -c -v -f - -C $shareName --totals',
  tar_full_args     => '$fileList',
  tar_incr_arge     => '--newer=$incrDate $fileList',

Debian by default installs a ‘localhost’ host, but if you want to managed it with puppet or if you're on Centos/RHEL this example will use the tar method to backup the paths you sepcify. The example uses sudo which is not configured in the module itself.



Public Classes

  • backuppc:server: Class used to install backuppc.
  • backuppc::client: Configures host for backup through backuppc.

Private Classes

  • backuppc::params: Default values.