## ## 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 %>" Heartbeat Interval = 60 } ######################################################################## # Standard Fileset # ######################################################################## FileSet { Name = "Standard Set" Ignore FileSet Changes = yes Include { Options { signature = SHA1 compression = GZIP9 aclsupport = yes xattrsupport = yes } Options { wild = "/swapfile*" exclude = yes } File = "\\|/usr/local/sbin/bacula-backup-dirs" # Dont backup directories that contain .nobackup files Exclude Dir Containing = .nobackup } Exclude { File = /.fsck File = /.journal File = /dev File = /home/buildd/build-trees File = /lib/init/rw File = /nonexistant File = /proc File = /srv/chroot File = /sys File = /tmp File = /srv/apache-cache/mod_cache_disk File = /var/cache/apache2/mod_cache_disk File = /var/cache/apt File = /var/lib/apt File = /var/lib/bacula File = /var/lib/munin-async File = /var/lock File = /var/log/samhain File = /var/run 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 syslog = all 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 syslog = all 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" Accurate = yes # Schedule = "WeeklyCycle" Messages = Standard Max Full Interval = 50 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 = 500G 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'"