Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms


bacula-backup (9) Versions 1.10.2

Installs and autoconfigures bacula backup system

cookbook 'bacula-backup', '~> 1.10.2'
cookbook 'bacula-backup', '~> 1.10.2', :supermarket
knife supermarket install bacula-backup
knife supermarket download bacula-backup
Quality 50%


NOTE: This cookbook is forked from the awesome work done by computerlyrik to add additional features (e.g. tape drive support). Its name has been changed to bacula-backup to allow for a unique cookbook name to be used on the Supermarket. It may be renamed to just bacula again in the future.

Tested on Ubuntu 12.04 server (should also work on Debian - please report!). Also supports file daemon (e.g. 'client') installs on RHEL 5 & Windows.

Supports File backup on a dedicated storage server with a single bacula director and multiple clients to be backed up.

Painlessly autoconfigures itself and the Jobs to be done. Backs up daily incremental, full weekly. (see usage) Also supports installation of bacula console to observe your backup progresses.

Autogenerated Jobs

  • Files
  • LDAP
  • Chef server


Bacula Director (bacula-dir)


Central backup server

Bacula File Daemon (bacula-fd)


Used by each client to be backed up. Currently supports Ubuntu 12.04/14.04, RHEL/CentOS 5, MS Windows, and OS X.

NOTE: OS X support still needs improvement. Currently, the bacula-fd process will need to be manually killed if any changes to the bacula-fd configuration are made.

Bacula Storage Daemon (bacula-sd)

bacula-backup::storage (bacula-sd)

For use on storage system

Bacula Administration Tool BAT (bacula-console-qt)


Used for Systems with graphic environment - installs and configures "bat" Bacula qt-console


See metadata for cookbook dependencies.



Configure the bacula user ruby node['bacula']['user'] node['bacula']['group']


Set general backup properties ruby node['bacula']['dir']['max_concurrent_jobs'] = "1" node['bacula']['dir']['address'] = nil # if set, causes to director to bind to the specified address

Set properties for File based backup ruby node['bacula']['volume_size'] = "1G" node['bacula']['volume_max'] = 20 node['bacula']['label_format'] = "BaculaFile"

Additional storage pools (beyond the built-in File & Default pools) can be specified as arrays in the ['bacula']['dir']['pools'] attribute. E.g.: ruby default['bacula']['dir']['pools'] = [ { "Name": "MyTapePool", "Volume Retention": "365 days", "Storage": "\"mystorage.local-mytapelibrary-LTO-5\"", "Pool Type": "Backup", "RecyclePool": "Scratch", "Recycle Oldest Volume": "yes" } ] The contents of this array will be directly converted into Pool resources in the storage configuration file. E.g., the above example would be translated to: Pool { Name = MyTapePool Volume Retention = 365 days Storage = "mystorage.local-mytapelibrary-LTO-5" Pool Type = Backup RecyclePool = Scratch Recycle Oldest Volume = yes }


Set files to be backed up (see Usage below) ruby node['bacula']['fd']['files']

Client side encryption can be enabled with the attributes: ruby node['bacula']['fd']['encrypt_backups'] = true node['bacula']['fd']['pki_masterkey_public'] = "-----BEGIN CERTIFICATE-----\nMII..." When encrypt_backups is set to true, a SSL keypair is generated automatically for the client (you should back this up separately). If pki_masterkey_public is populated with a public key, it will be deployed to the client as well.


Set up destination of File-Storage ruby default['bacula']['sd']['backup_dir'] = "/backup"

Configures the Maximum Network Buffer Size for the File-Storage device ruby default['bacula']['sd']['file_max_net_buffer'] = "32768"

Additional storage devices (e.g. tape devices and autochangers) can be specified in the ['bacula']['sd']['devices'] or ['bacula']['sd']['autochangers'] attributes (and then again in ['bacula']['sd']['dir-devices'] -- see below). E.g.: ruby default['bacula']['sd']['devices'] = [ { "Name": "LTO5-1", "Media Type": "LTO-5", "RemovableMedia": "yes", "RandomAccess": "no", "Archive Device": "/dev/nst1" } ] The contents of these arrays will be directly converted into Device or Autochanger resources in the storage configuration file. E.g., the above example would be translated to: Device { Name = LTO5-1 Media Type = LTO-5 RemovableMedia = yes RandomAccess = no Archive Device = /dev/nst1 } Because options for the corresponding director Storage resources can vary (e.g., are devices in an autochanger? If yes, don't make their own Storage resource), these need to be manually specified. E.g.: ruby default['bacula']['sd']['dir-devices'] = [ { "Device": "mytapelibrary", "Media Type": "LTO-5", "AllowCompression": "no", "Autochanger": "yes" } ] Note that the Name, Address, SDPort, and Password attributes must be ommitted as they are automatically configured. The contents of this array will be directly converted into Storage resources in the director configuration file. E.g., the above example would be translated to the following (assuming a server with a FQDN of mystorage.local, ip of, and password of 12345): Storage { Name = mystorage.local-mytapelibrary-LTO-5 Address = SDPort = 9103 Password = "12345" Device = mytapelibrary Media Type = LTO-6 AllowCompression = no Autochanger = yes }


Backup Job generation

To autogenerate jobs the following expressions need to be true on bacula-backup::client machine:


node['openldap'] && node['openldap']['slapd_type'] == "master"

Chef Server

node['fqdn'] == "chef.#{node['domain']}"

Default deployment

  • node A => bacula-backup::server
  • node B => bacula-backup::storage (with much storage)
  • node C-Z => bacula-backup::client


Simple file backup

Set on your bacula-backup::client node ruby node.set['bacula']['fd']['files'] = { 'includes' => ['/']], 'excludes' => [ '/dev','sys'] }

Custom Backups

When more granual control over backup jobs/filesets/schedules is needed, they can be specified as arrays on the clients' ['bacula']['fd']['jobs'], ['bacula']['fd']['filesets'], & ['bacula']['fd']['schedules'] attributes. E.g.:

"default_attributes": {
  "bacula": {
    "fd": {
      "filesets": [
          "Name = \"myclient-accurate-opt\"",
          "Ignore FileSet Changes = yes",
          "Include {",
          "  Options {",
          "    signature = MD5",
          "  }",
          "File = /opt",
      "jobs": [
          "Name": "\"myclient-wednesdays\"",
          "Client": "myclient.local",
          "Type": "Backup",
          "Accurate": "yes",
          "Level": "Incremental",
          "Messages": "Standard",
          "FileSet": "\"myclient-accurate-opt\"",
          "Schedule": "\"myclient-wednesday\"",
          "Pool": "Default",
          "Storage": "File"
      "schedules": [
          "Name = \"myclient-wednesday\"",
          "Run = Level=Full 1st wed at 18:00",
          "Run = Level=Incremental 2nd wed at 18:00",
          "Run = Level=Incremental 3rd wed at 18:00",
          "Run = Level=Incremental 4th wed at 18:00",
          "Run = Level=Incremental 5th wed at 18:00"

Note that schedules and filesets are specified as raw arrays under their parent array (because of their varied and often complex structure), and jobs are specified are hashes under their parent array. The above example will generate the following director entries:

FileSet {
  Name = "myclient-accurate-opt"
  Ignore FileSet Changes = yes
  Include {
    Options {
      signature = MD5
  File = /opt

Job {
  Name = "myclient-wednesdays"
  Client = myclient.local
  Type = Backup
  Accurate = yes
  Level = Incremental
  Messages = Standard
  FileSet = "myclient-accurate-opt"
  Schedule = "myclient-wednesday"
  Pool = Default
  Storage = File

Schedule {
  Name = "myclient-wednesday"
  Run = Level=Full 1st wed at 18:00
  Run = Level=Incremental 2nd wed at 18:00
  Run = Level=Incremental 3rd wed at 18:00
  Run = Level=Incremental 4th wed at 18:00
  Run = Level=Incremental 5th wed at 18:00


see metadata.rb

Dependent cookbooks

windows >= 0.0.0
openssl >= 0.0.0
mysql-chef_gem ~> 0.0.2
mysql ~> 5.5
homebrew ~> 1.13
database < 4.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

bacula-backup Cookbook CHANGELOG

This file is used to list changes made in each version of the bacula-backup cookbook.

v1.10.2 (2016-02-08)

  • Add new ['bacula']['fd']['max_concurrent_jobs'] & ['bacula']['sd']['max_concurrent_jobs'] attributes
    • These will configure the FD & SD Maximum Concurrent Jobs

v1.10.1 (2016-02-01)

  • Add new ['bacula']['fd']['file_retention'] & default['bacula']['fd']['job_retention'] attributes
    • Formerly hardcoded to 30 days & 6 months respectively.

Collaborator Number Metric

1.10.2 passed this metric

Contributing File Metric

1.10.2 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Foodcritic Metric

1.10.2 failed this metric

FC075: Cookbook uses to save partial node data to the chef-server mid-run: bacula-backup/recipes/server.rb:36
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

No Binaries Metric

1.10.2 passed this metric

Publish Metric

1.10.2 failed this metric

bacula-backup is up for adoption

Supported Platforms Metric

1.10.2 passed this metric

Testing File Metric

1.10.2 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Version Tag Metric

1.10.2 passed this metric