{"id":15227832,"url":"https://github.com/voxpupuli/puppet-bacula","last_synced_at":"2026-01-05T21:16:27.998Z","repository":{"id":20527952,"uuid":"23807067","full_name":"voxpupuli/puppet-bacula","owner":"voxpupuli","description":"A bacula module recovered from the Puppet Labs Operations team","archived":false,"fork":false,"pushed_at":"2024-09-17T07:51:34.000Z","size":4099,"stargazers_count":12,"open_issues_count":15,"forks_count":32,"subscribers_count":40,"default_branch":"master","last_synced_at":"2024-10-29T14:22:33.150Z","etag":null,"topics":["bsd-puppet-module","centos-puppet-module","debian-puppet-module","freebsd-puppet-module","hacktoberfest","linux-puppet-module","openbsd-puppet-module","puppet","redhat-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":"","language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2014-09-08T20:29:25.000Z","updated_at":"2024-09-17T07:51:36.000Z","dependencies_parsed_at":"2023-11-09T13:03:37.214Z","dependency_job_id":"6ac9a699-6d9e-4f13-a393-72ee830a9fdc","html_url":"https://github.com/voxpupuli/puppet-bacula","commit_stats":{"total_commits":622,"total_committers":34,"mean_commits":"18.294117647058822","dds":0.6286173633440515,"last_synced_commit":"de07ba596f358692d768ec0de52dabddfb482936"},"previous_names":["xaque208/puppet-bacula"],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-bacula","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-bacula/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-bacula/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-bacula/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-bacula/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244894319,"owners_count":20527676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bsd-puppet-module","centos-puppet-module","debian-puppet-module","freebsd-puppet-module","hacktoberfest","linux-puppet-module","openbsd-puppet-module","puppet","redhat-puppet-module","ubuntu-puppet-module"],"created_at":"2024-09-28T23:06:17.803Z","updated_at":"2026-01-05T21:16:27.993Z","avatar_url":"https://github.com/voxpupuli.png","language":"Puppet","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# Bacula\n\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/bacula.svg)](https://forge.puppetlabs.com/puppet/bacula)\n[![Build Status](https://github.com/voxpupuli/puppet-bacula/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-bacula/actions?query=workflow%3ACI)\n[![Donated by xaque208](https://img.shields.io/badge/donated%20by-xaque208-fb7047.svg)](#authors)\n\nA puppet module for the Bacula backup system.\n\n## Supported Platforms\n\n* OpenBSD\n* FreeBSD\n* Linux (Debian, Ubuntu, RedHat, Centos, Fedora, SLES)\n\n# Requirements\n\nThis module requires that [exported resources] have been setup (e.g. with\n[PuppetDB]).  Including manifests on the Bacula client, assumes that it can\nexport bits of data to the director to end up with fully functional configs.\nAs such, to get the benefits of using this module, you should be using it on at\nleast the director and client, and most likely the storage, though this might\nbe gotten around, if one were so inclined.\n\n## Usage\n\nTo understand Bacula, the [Component Overview] in the Bacula documentation is a\nuseful start to begin understanding the moving parts.\n\n### A Minimal Setup\n\nWhat follows here is the bare minimum you would need to get a fully functional\nBacula environment with Puppet.  This setup assumes that the three components\nof Bacula (Director, Storage, and Client) all run on three separate nodes.  If\ndesired, there is no reason this setup can not be built on a single node, just\nupdating the hostnames used below to all point to the same system.\n\n#### Defaults\n\nBacula's functionality depends on connecting several components, together.  Due\nto the number of moving pieces in this module, you will likely want to set some\nsite defaults, and tune more specifically where desired.\n\nAs such, it is reasonable to use the following declaration in a profile used by all your nodes:\n\n```puppet\nclass { 'bacula':\n  storage_name  =\u003e 'mystorage.example.com',\n  director_name =\u003e 'mydirector.example.com',\n}\n```\n\nWhen using the default settings from this module, some resources get provisioned. The provisioning of these default resources can be disabled with the `manage_defaults` parameter.\n\n```puppet\nclass { 'bacula::director':\n  manage_defaults =\u003e false,\n}\n```\n\n##### Classification\n\nThis may be on the same host, or different hosts, but the name you put here\nshould be the fqdn of the target system.  The Director will require the\nclassification of `bacula::director`, and the Storage node will require the\nclassification of `bacula::storage`.  **All nodes will require classification\nof `bacula::client`, and all nodes will require the shared config by being classified `bacula`.**\n\nA common way of using the module in a simple setup is using a single node that act as a director and storage daemon for all other nodes of the fleet.  In such a scenario, you can create two profiles: `profile::bacula_client` and `profile::bacula_server`:\n\n```puppet\nclass profile::bacula_client (\n  Sensitive $password,\n) {\n  class { 'bacula':\n    storage_name  =\u003e 'bacula.example.com',\n    director_name =\u003e 'bacula.example.com',\n    # Other common settings, see below\n  }\n\n  class { 'bacula::client':\n    password =\u003e $password,\n    # File daemon specific settings, see below\n  }\n}\n```\n\n```puppet\nclass profile::bacula_server (\n) {\n  include profile::bacula_client\n\n  class { 'bacula::director':\n    password =\u003e 'director-password',\n    # Director specific settings, see below\n  }\n\n  class { 'bacula::storage':\n    password =\u003e 'storage-password',\n    # File storage specific settings, see below\n  }\n}\n```\n\n##### Upgrading from an older version\n\nUsers of a previous version of this module should refer to the wiki for\n[upgrading\ninstructions](https://github.com/voxpupuli/puppet-bacula/wiki/Upgrading).\n\n#### Communication Encryption (TLS Setup)\n\nRefer to the [TLS\nSetup](https://github.com/voxpupuli/puppet-bacula/wiki/TLS-Setup) page on the\nwiki for instructions about configuring communication encryption.\n\n#### Director Setup\n\nThe director component handles coordination of backups and databasing of\ntransactions.  In its simplest form, the director can be configured with a\nsimple declaration:\n\n```puppet\nclass { 'bacula::director':\n  storage =\u003e 'mystorage.example.com',\n}\n```\n\nThe `storage` parameter here defines which storage server should be used for\nall default jobs.  If left empty, it will default to the `$facts['fqdn']` of the\ndirector. This is not a problem for all in one installations, but in scenarios\nwhere directors to not have the necessary storage devices attached, default\njobs can be pointed elsewhere.\n\nNote that if you expect an SD to be located on the Director, you will also need\nto include the `bacula::storage` class as follows.\n\nBy default a 'Common' fileset is created.\n\n#### Storage Setup\n\nThe storage component allocates disk storage for pools that can be used for\nholding backup data.\n\n```puppet\nclass { 'bacula::storage':\n  director =\u003e 'mydirector.example.com',\n}\n```\n\nYou will also want a storage pool that defines the retention.  You can define\nthis in the Director catalog without exporting it, or you can use an exported\nresource.\n\n```puppet\n  bacula::director::pool { 'Corp':\n    volret      =\u003e '14 days',\n    maxvolbytes =\u003e '5g',\n    maxvols     =\u003e '200',\n    label       =\u003e 'Corp-',\n    storage     =\u003e 'mystorage.example.com',\n  }\n```\n\n#### Client Setup\n\nThe client component is run on each system that needs something backed up.\n\n```puppet\nclass { 'bacula::client':\n  director =\u003e 'mydirector.example.com',\n}\n```\n\nTo direct all jobs to a specific pool like the one defined above set the\nfollowing data.\n\n```puppet\nclass { 'bacula::client':\n  default_pool =\u003e 'Corp',\n}\n```\n\nTo exclude Info messages from the logfile.\n\n```puppet\nclass { 'bacula::client':\n  messages =\u003e {\n    'Standard-fd' =\u003e {\n      daemon   =\u003e 'fd',\n      mname    =\u003e 'Standard',\n      director =\u003e \"${director}-dir = all, !skipped, !restored\",\n      append   =\u003e '\"/var/log/bacula/bacula-fd.log\" = all, !info, !skipped',\n    },\n  },\n}\n```\n\n#### Data Encryption (PKI Setup)\n\nRefer to the [PKI\nSetup](https://github.com/voxpupuli/puppet-bacula/wiki/PKI-Setup) section of the\nwiki to configure data encryption on clients.\n\n## Creating Backup Jobs\n\nIn order for clients to be able to define jobs on the director, exported\nresources are used, thus there was a reliance on PuppetDB availability in the\nenvironment. In the client manifest the `bacula::job` exports a job definition\nto the director. If you deploy multiple directors that use the same PuppetDB\nand you don't want each director to collect every job, specify a job_tag to\ngroup them.\n\n```puppet\nbacula::job { 'obsidian_logs':\n  files =\u003e ['/var/log'],\n}\n```\n\nThis resource will create a new `Job` entry in `/etc/bacula/conf.d/job.conf`\nthe next time the director applies it's catalog that will instruct the system\nto backup the files or directories at the paths specified in the `files`\nparameter.\n\nIf a group of jobs will contain the same files, a [FileSet resource] can be\nused to simplify the `bacula::job` resource. This can be exported from the\nnode (ensuring the resource title will be unique when realized) or a simple\nresource specified on the director using the `bacula::director::fileset`\ndefined type as follows:\n\n```puppet\nbacula::director::fileset { 'Puppet':\n  files   =\u003e ['/etc/puppet'],\n  options =\u003e {'compression' =\u003e 'LZO' }\n}\n```\nIf you set a job_tag on your `bacula::job`, make sure to also set the tag of\nthe `bacula::director::fileset` to the same value.\n\n[Component Overview]: http://www.bacula.org/7.0.x-manuals/en/main/What_is_Bacula.html#SECTION00220000000000000000\n[FileSet resource]: http://www.bacula.org/7.0.x-manuals/en/main/Configuring_Director.html#SECTION001570000000000000000\n[exported resources]: https://docs.puppetlabs.com/puppet/latest/reference/lang_exported.html\n[PuppetDB]: https://docs.puppetlabs.com/puppetdb\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-bacula","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-bacula","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-bacula/lists"}