A puppet module for the Bareos backup system.
- Linux (Debian, Ubuntu)
This module requires that exported resources have been setup (e.g. with PuppetDB). Including manifests on the Bareos client, assumes that it can export bits of data to the director to end up with fully functional configs. As such, to get the benefits of using this module, you should be using it on at least the director and client, and most likely the storage, though this might be gotten around, if one were so inclined.
To understand Bareos, the Component Overview in the Bareos documentation is a useful start to begin understanding the moving parts.
What follows here is the bare minimum you would need to get a fully functional Bareos environment with Puppet. This setup assumes that the three components of Bareos (Director, Storage, and Client) all run on three separate nodes. If desired, there is no reason this setup can not be built on a single node, just updating the hostnames used below to all point to the same system.
Bareos's functionality depends on connecting several components, together. Due to the number of moving pieces in this module, you will likely want to set some site defaults, and tune more specifically where desired.
As such, it is reasonable to set the following hiera data that will allow many of the classes in this module to use those defaults sanely.
bareos::storage_name: 'mystorage.example.com'
bareos::director_name: 'mydirector.example.com'
This may be on the same host, or different hosts, but the name you put here
should be the fqdn of the target system. The Director will require the
classification of bareos::director, and the Storage node will require the
classification of bareos::storage. All nodes will require classification of
bareos::client.
Users should prefer setting hiera data to set class parameter values where possible. A couple calls in this module rely on hiera data present to avoid scoping issues associated with defined types and default values.
The bareos::params class has been completely removed. Any data in your
primary hiera that used these values will need to be updated.
The variables used to specify the Storage and Director host have been moved.
Where previously, bareos::params::director and bareos::params::storage,
replace them with bareos::director_name and bareos::storage_name.
Here are is the list of variables that have moved out of the params class. If any of these are set in an environments hiera data, they will not be respected and should be moved as follows.
-
move bareos::params::file_retention to bareos::client::file_retention
-
move bareos::params::job_retention to bareos::client::job_retention
-
move bareos::params::autoprune to bareos::client::autoprune
-
move bareos::client::director to bareos::client::director_name
-
move bareos::params::monitor to bareos::monitor
-
move bareos::params::device_seltype to bareos::device_seltype
-
move bareos::params::ssl to bareos::use_ssl
-
move bareos::params::ssl_dir to bareos::ssl::ssl_dir
-
users are required to set bareos::ssl::ssl_dir
The following classes have been relocated as well. Please update any references of the former to reference the latter.
- move class bareos::fileset to bareos::director::fileset
Other data changes are as follows.
- remove needless bareos::client::storage
- Relocated many
paramsvariables tobareosclass
Several params have been removed and replaced with the default names. Update your hiera data and parameters as follows.
The following have been replaced with simply bareos::params::director.
bareos::params::director_namebareos::params::bareos_director
The following have been replaced with simply bareos::params::storage.
bareos::params::bareos_storagebareos::params::storage_name
The default 'Full' and 'Inc' pools no longer get created. Only the pool
called 'Default' is created. As such, the following parameter have been
removed from the bareos::storage class.
$volret_full$volret_incremental$maxvolbytes_full$maxvoljobs_full$maxvols_full$maxvolbytes_incremental$maxvoljobs_incremental$maxvols_incremental
This now means that Full jobs are not directed to a 'Full' pool, and Incremental jobs are no longer directed to an 'Inc' pool.
To gain the same functionality available in previous versions using a default pool for a specific level of backup, create a pool as directed below, and set any of the following parameters for your clients.
bareos::client::default_pool_fullbareos::client::default_pool_incbareos::client::default_pool_diff
The value of these parameters should be set to the resource name of the pool.
To enable SSL for the communication between the various components of Bareos, the hiera data for SSL must be set.
bareos::use_ssl: trueThis will ensure that SSL values are processed in the various templates that
are capable of SSL communication. An item of note: this module expects to be
using the SSL directory for Puppet. The default value for the Puppet SSL
directory this module will use is /etc/puppetlabs/puppet/ssl to support the
future unified Puppet deployment.
To change the SSL directory, simply set bareos::ssl::ssl_dir. For
example, to use another module for the data source of which SSL directory to
use for Puppet, something like the following is in order.
bareos::ssl::ssl_dir: "%{scope('puppet::params::puppet_ssldir')}"This example assumes that you are using the ploperations/puppet module, but
this has been removed as a dependency. Users may also wish to look at
theforeman/puppet or just set it to the location known to house your ssl
data, like /etc/puppetlabs/puppet/ssl.
The director component handles coordination of backups and databasing of transactions. In its simplest form, the director can be configured with a simple declaration:
class { 'bareos::director': storage => 'mystorage.example.com' }The storage parameter here defines which storage server should be used for
all default jobs. If left empty, it will default to the $::fqdn of the
director. This is not a problem for all in one installations, but in
scenarios where directors to not have the necessary storage devices attached,
default jobs can be pointed elsewhere.
Note that if you expect an SD to be located on the Director, you will
also need to include the bareos::storage class as follows.
By default a 'Common' fileset is created.
The storage component allocates disk storage for pools that can be used for holding backup data.
class { 'bareos::storage': director => 'mydirector.example.com' }You will also want a storage pool that defines the retention. You can define this in the Director catalog without exporting it, or you can use an exported resource.
bareos::director::pool { 'Corp':
volret => '14 days',
maxvolbytes => '5g',
maxvols => '200',
label => 'Corp-',
storage => 'mystorage.example.com',
}The client component is run on each system that needs something backed up.
class { 'bareos::client': director => 'mydirector.example.com' }To direct all jobs to a specific pool like the one defined above set the following data.
bareos::client::default_pool: 'Corp'In order for clients to be able to define jobs on the director, exported
resources are used, thus there was a reliance on PuppetDB availability in the
environment. In the client manifest the bareos::job exports a job
definition to the director. If you deploy multiple directors that use the
same PuppetDB and you don't want each director to collect every job, specify
a job_tag to group them.
bareos::job { 'obsidian_logs':
files => ['/var/log'],
}This resource will create a new Job entry in /etc/bareos/bareos-dir.conf
the next time the director applies it's catalog that will instruct the system
to backup the files or directories at the paths specified in the files
parameter.
If a group of jobs will contain the same files, a FileSet resource can be
used to simplify the bareos::job resource. This can be exported from the
node (ensuring the resource title will be unique when realized) or a simple
resource specified on the director using the bareos::fileset defined type as
follows:
bareos::fileset { 'Puppet':
files => ['/etc/puppet'],
options => {'compression' => 'LZO' }
}If you set a job_tag on your bareos::job, make sure to also set the tag of
the bareos::fileset to the same value.
Defines a Bareos FileSet resource. Parameters are:
files: string or array of files to backup. BareosFiledirective.excludes: string or array of files to exclude from a backup. Defaults to''. BareosExcludedirective.options: hash of options. Defaults to{'signature' => 'MD5', 'compression' => 'GZIP'}. BareosOptionsdirective.
Define a Bareos Job resource resource which can create new Bareos::Fileset
resources if needed. Parameters are:
files: array of files to backup as part ofBareos::Fileset[$name]Defaults to[].excludes: array of files to exclude inBareos::Fileset[$name]Defaults to[].jobtype: one ofBackup(default),Restore,Admin,Verify,CopyorMigrate. Defaults toBackup. BareosTypedirective.fileset: determines whether to use theCommonfileset (false), define a newBareos::Fileset[$name](true) or use a previously definedBareos::Filesetresource (any other string value). Defaults totrue. BareosFileSetdirective.template: template to use for the fragment. Defaults tobareos/job.conf.erb.pool: name of thebareos::director::poolto use. Defaults tobareos::client::default_pool. BareosPooldirective.pool_full: name of the pool to be used for 'Full' jobs. Defaults tobareos::client::default_pool_full. BareosFull Backup Pooldirective.pool_inc: name of the pool to be used for 'Incremental' jobs. Defaults tobareos::client::default_pool_inc. BareosIncremental Backup Pooldirective.pool_diff: name of the pool to be used for 'Incremental' jobs. Defaults tobareos::client::default_pool_diff. BareosDifferential Backup Pooldirective.jobdef: name of thebareos::jobdefto use. Defaults toDefault. BareosJobDefsdirective.level: default job level to run the job as. BareosLeveldirective.accurate: whether to enable accurate mode. NB, can be memory intensive on the client. Defaults to 'no'. Bareos 'Accurate' directive.messages: the name of the message resource to use for this job. Defaults tofalsewhich disables this directive. BareosMessagesdirective. To ensure compatibility with existing installations, the BareosMessagesdirective is set toStandardwhenJobtypeisRestoreand themessagesparameter isfalse.restoredir: the prefix for restore jobs. Defaults to/tmp/bareos-restores. BareosWheredirective.sched: the name of the scheduler resource to use for this job. Defaults tofalsewhich disables this directive. BareosScheduledirective.priority: the priority of the job. Defaults tofalsewhich disables this directive. BareosPrioritydirective.selection_type: determines how a copy/migration job will go about selecting what JobIds to migrateselection_pattern: gives you fine control over exactly what JobIds are selected for a copy/migration job.
See also bareos::jobdefs.
Define a Bareos JobDefs resource resource. Parameters are:
jobtype: one ofBackup,Restore,Admin,Verify,CopyorMigrate. Defaults toBackup. BareosTypedirective.sched: name of thebareos::scheduleto use. Defaults toDefault. BareosScheduledirective.messages: which messages resource to deliver to. Defaults toStandard. BareosMessagesdirective.priority: priority of the job. Defaults to10. BareosPrioritydirective.pool: name of thebareos::director::poolto use. Defaults toDefault. BareosPooldirective.level: default job level for jobs using this JobDefs. BareosLeveldirective.accurate: whether to enable accurate mode. NB, can be memory intensive on the client. Defaults to 'no'. Bareos 'Accurate' directive.reschedule_on_error: Enable rescheduling of failed jobs. Default: false. BareosReschedule On Errordirective.reschedule_interval: The time between retries for failed jobs. BareosReschedule Intervaldirective.reschedule_times: The number of retries for failed jobs. BareosReschedule Timesdirective.
Define a Bareos Messages resource. Parameters are:
mname: name of theMessagesresource. Defaults toStandard. BareosNamedirective.daemon: Defaults todir.director: BareosDirectordirective. Note this is not just the name of a director, but director string as found in the documentation for Messages resource under the director option. The message type must be included with the proper formatting.append: BareosAppenddirective.Catalog: BareosCatalogdirective.syslog: BareosSyslogdirective.Console: BareosConsoledirective.mail: BareosMaildirective.Operator: BareosOperatordirective.mailcmd: BareosMail Commanddirective.operatorcmd: BareosOperator Commanddirective.
Define a Bareos Schedule resource. Parameter is:
runs: define when a job is run. BareosRundirective.
Define a Bareos Pool resource. Parameters are:
pooltype: Defaults toBackup. BareosPool Typedirective.recycleBareosRecycledirective.autoprune: Defaults toYes. BareosAutoPrunedirective.volret: BareosVolume Retentiondirective.maxvols: BareosMaximum Volumesdirective.maxvoljobs: BareosMaximum Volume Jobsdirective.maxvolbytes: BareosMaximum Volume Bytesdirective.purgeaction: BareosAction On Purgedirective. Defaults toTruncate.label: BareosLabel Formatdirective.voluseduration: BareosVolume Use Durationdirective.storage: name of theStorageresource backing the pool. Defaults to$bareos::storage_name. BareosStoragedirective.next_pool: specifies that data from aCopyorMigratejob should go to the provided pool