+# our bacula client configuration
+#
+# this mostly configures the file daemon, but also firewall rules and
+# fragments to sent to the other servers.
+#
+# @param director_server director server (address) that controls this client's backups
+# @param storage_server storage server (address) to use for this client
+# @param port_fd port that bacula-fd listens on
+# @param client_name bacula client name for this instance
+# @param ensure present or absent
+# @param volume_retention_full how long to keep volumes with full backups
+# @param volume_retention_diff how long to keep volumes with differential backups
+# @param volume_retention_inc how long to keep volumes with incremental backups
+# @param file_retention how long to keep information about which files are in which volumes/jobs
+# @param job_retention how long to keep job records
+class bacula::client(
+ Stdlib::Host $director_server,
+ Stdlib::Host $storage_server,
+ Integer $port_fd = 9102,
+ String $client_name = "${::fqdn}-fd",
+ Enum['present', 'absent'] $ensure = defined(Class['bacula::not_a_client']) ? { true => 'absent', default => 'present' },
+ String $volume_retention_full = '100 days',
+ String $volume_retention_diff = '50 days',
+ String $volume_retention_inc = '30 days',
+ String $file_retention = '30 days',
+ String $job_retention = $volume_retention_full,
+) inherits bacula {
+ $package_ensure = $ensure ? { 'present' => 'installed', 'absent' => 'purged' }
+ $service_ensure = $ensure ? { 'present' => 'running', 'absent' => 'stopped' }
+ $service_enable = $ensure ? { 'present' => true, 'absent' => false }
+ $reverse_ensure = $ensure ? { 'present' => 'absent', 'absent' => 'present' }
+ $directory_ensure = $ensure ? { 'present' => 'directory', 'absent' => 'absent' }