## ## THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE. ## USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git ## ## # For Bacula release 5.0.1 (24 February 2010) -- debian 5.0.4 ######################################################################## # Bacula Director itself # ######################################################################## Director { Name = <%= bacula_director_name %> Description = <%= hostname %> - <%= domain %> Bacula Director QueryFile = "/etc/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/var/run/bacula" Maximum Concurrent Jobs = 20 Password = "<%= bacula_director_secret %>" Messages = Daemon DirAddresses = { # Always have localhost in, then the configured IP ip = { addr = 127.0.0.1; port = 9101 } ip = { addr = <%=bacula_director_address%>; port = <%=bacula_director_port%> } } TLS Enable = yes TLS Require = yes TLS Verify Peer = yes TLS Allowed CN = "clientcerts/<%= bacula_director_address %>" TLS CA Certificate File = "<%= bacula_ca_path %>" # This is a server certificate, used for incoming console connections. TLS Certificate = "<%= bacula_ssl_server_cert %>" TLS Key = "<%= bacula_ssl_server_key %>" } ######################################################################## # Standard Fileset # ######################################################################## FileSet { Name = "Standard Set" Include { Options { signature = SHA1 compression = GZIP9 } File = "\\|/usr/local/sbin/bacula-backup-dirs" # Dont backup directories that contain .nobackup files Exclude Dir Containing = .nobackup } Exclude { File = /var/lib/bacula File = /var/cache/apt/ File = /nonexistant File = /swapfile File = /proc File = /tmp File = /.journal File = /.fsck File = /sys File = /lib/init/rw File = /var/run File = /var/lock File = /dev File = /srv/chroot File = /home/buildd/build-trees File = "\\|bash -c 'grep -s -v ^# /etc/bacula/local-exclude || true'" } } ######################################################################## # A fileset for the catalog, one sql dump of the db # ######################################################################## FileSet { Name = "Catalog" Include { Options { signature = SHA1 #compression = GZIP9 } File = "/var/lib/bacula/bacula.sql.gz" } } ######################################################################## # The job schedules # ######################################################################## # When to do the backups, full backup on first sunday of the month, # differential (i.e. incremental since full) every other sunday, # and incremental backups other days Schedule { Name = "WeeklyCycle" # fulls are automatically run if the last full backup was 40 days ago # for the current value of 40 look for "Max Full Interval" in this file. # Run = Full 1st sat at 00:35 Run = Differential sat at 00:35 Run = Incremental sun-fri at 00:35 } # This schedule does the catalog. It starts after the WeeklyCycle Schedule { Name = "WeeklyCycleAfterBackup" Run = Full sun-sat at 02:10 } ######################################################################## # Generic catalog service # ######################################################################## Catalog { Name = MyCatalog dbname = "service = bacula"; #DB Address = "<%= bacula_db_address %>"; #DB Port = <%= bacula_db_port %>; dbuser = "bacula"; dbpassword = "<%= bacula_db_secret %>" } ######################################################################## # Message delivery # ######################################################################## Messages { Name = Standard mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r" operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r" #mail on error = <%= bacula_operator_email %> = all, !skipped mail = <%= bacula_operator_email %> = all operator = <%= bacula_operator_email %> = mount console = all, !skipped, !saved append = "/var/lib/bacula/log" = all catalog = all } # Message delivery for daemon messages (no job). Messages { Name = Daemon mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r" mail = <%= bacula_operator_email %> = all console = all, !skipped, !saved append = "/var/lib/bacula/log" = all } ######################################################################## # Console, limited # ######################################################################## Console { Name = <%= bacula_monitor_name %> Password = "<%= bacula_monitor_secret %>" CommandACL = status, .status } ######################################################################## # Jobdefinitions with defaults and stuff # ######################################################################## JobDefs { Name = "Standardbackup" Type = Backup Level = Incremental FileSet = "Standard Set" Schedule = "WeeklyCycle" Messages = Standard Max Full Interval = 40 days Priority = 10 Write Bootstrap = "/var/lib/bacula/%c.bsr" Maximum Concurrent Jobs = 20 Client Run After Job = "/usr/local/sbin/postbaculajob -c \"%c\" -d \"%d\" -i \"%i\" -l \"%l\" -n \"%n\" -o /var/log/bacula/client-after.state" } ######################################################################## # Standard Restore template, to be changed by Console program # # Only one such job is needed for all Jobs/Clients/Storage ... # ######################################################################## Job { Name = "RestoreFiles" Type = Restore Client = <%=bacula_director_address%>-fd FileSet = "Standard Set" Pool = poolfull-<%=bacula_pool_name%>-<%=bacula_director_address%> Messages = Standard Where = /var/tmp/bacula-restores } # Scratch pool definition Pool { Name = Scratch Pool Type = Backup } ######################################################################## # Generic jobs # ######################################################################## # Backup the catalog database (after the nightly save) Storage { Name = "<%= bacula_filestor_name %>-catalog" Address = <%= bacula_storage_address %> SDPort = <%= bacula_storage_port %> Password = "<%= bacula_storage_secret %>" Device = "<%= bacula_filestor_device %>-catalog" Media Type = "<%= bacula_filestor_name %>-catalog" Maximum Concurrent Jobs = 10 TLS Enable = yes TLS Require = yes TLS CA Certificate File = "<%= bacula_ca_path %>" # This is a client certificate, used by the director to connect to the storage daemon TLS Certificate = "<%= bacula_ssl_client_cert %>" TLS Key = "<%= bacula_ssl_client_key %>" } Pool { Name = "poolcatalog-<%=bacula_pool_name%>" Pool Type = Backup Storage = "<%=bacula_filestor_name%>-catalog" AutoPrune = yes Volume Retention = 2 months Label Format = "<%= bacula_pool_name %>-catalog.${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}" Volume Use Duration = 23h Maximum Volume Jobs = 1 Maximum Volume Bytes = 50G Action On Purge = Truncate Recycle = yes RecyclePool = "poolcataloggraveyard-<%=bacula_pool_name%>" } Pool { Name = "poolcataloggraveyard-<%=bacula_pool_name%>" Pool Type = Backup Storage = "<%=bacula_filestor_name%>-catalog" Recycle = yes RecyclePool = "poolcataloggraveyard-<%=bacula_pool_name%>" } Job { Name = "BackupCatalog" JobDefs = "Standardbackup" Client = <%=bacula_director_address%>-fd Level = Full FileSet = "Catalog" Schedule = "WeeklyCycleAfterBackup" # # This creates an ASCII copy of the catalog # # Arguments to make_catalog_backup.pl are: # # make_catalog_backup.pl RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog" # # This deletes the copy of the catalog RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup" Write Bootstrap = "/var/lib/bacula/%n.bsr" Priority = 15 # run after main backup Pool = "poolcatalog-<%=bacula_pool_name%>" } ######################################################################## # And now include all the generated configs # ######################################################################## @|"sh -c 'for f in /etc/bacula/conf.d/*.conf ; do echo @${f} ; done'"