62e3f5ce9cc620d4f35e098ff80410517fccd003
[mirror/dsa-puppet.git] / modules / bacula / templates / bacula-dir.conf.erb
1 ##
2 ## THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE.
3 ## USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git
4 ##
5 ##
6 #  For Bacula release 5.0.1 (24 February 2010) -- debian 5.0.4
7
8 ########################################################################
9 # Bacula Director itself                                               #
10 ########################################################################
11
12 Director {
13   Name = <%= @bacula_director_name %>
14   Description = <%= @hostname %> - <%= @domain %> Bacula Director
15   QueryFile = "/etc/bacula/scripts/query.sql"
16   WorkingDirectory = "/var/lib/bacula"
17   PidDirectory = "/run/bacula"
18   Maximum Concurrent Jobs = 20
19   Password = "<%= @bacula_director_secret %>"
20   Messages = Daemon
21   DirAddresses = {
22      # Always have localhost in, then the configured IP
23      ip = { addr = 127.0.0.1; port = 9101 }
24      ip = { addr = <%=@bacula_director_address%>; port = <%=@bacula_director_port%> }
25   }
26
27   TLS Enable = yes
28   TLS Require = yes
29   TLS Verify Peer = yes
30   TLS Allowed CN = "clientcerts/<%= @bacula_director_address %>"
31   TLS CA Certificate File = "<%= @bacula_ca_path %>"
32   # This is a server certificate, used for incoming console connections.
33   TLS Certificate = "<%= @bacula_ssl_server_cert %>"
34   TLS Key = "<%= @bacula_ssl_server_key %>"
35
36   Heartbeat Interval = 60
37 }
38
39 ########################################################################
40 # Standard Fileset                                                     #
41 ########################################################################
42 FileSet {
43   Name = "Standard Set"
44   Ignore FileSet Changes = yes
45   Include {
46     Options {
47       signature = SHA1
48       compression = GZIP9
49       aclsupport = yes
50       xattrsupport = yes
51     }
52     Options {
53       wild = "/swapfile*"
54       exclude = yes
55     }
56     File = "\\|/usr/local/sbin/bacula-backup-dirs"
57     # Dont backup directories that contain .nobackup files
58     Exclude Dir Containing = .nobackup
59   }
60
61   Exclude {
62     File = /.fsck
63     File = /.journal
64     File = /dev
65     File = /home/buildd/build-trees
66     File = /lib/init/rw
67     File = /nonexistant
68     File = /proc
69     File = /srv/chroot
70     File = /sys
71     File = /tmp
72     File = /srv/apache-cache/mod_cache_disk
73     File = /var/cache/apache2/mod_cache_disk
74     File = /var/cache/apt
75     File = /var/lib/apt
76     File = /var/lib/bacula
77     File = /var/lib/munin-async
78     File = /var/lock
79     File = /var/log/samhain
80     File = /var/run
81     File = "\\|bash -c 'grep -s -v ^# /etc/bacula/local-exclude || true'"
82   }
83 }
84
85 ########################################################################
86 # A fileset for the catalog, one sql dump of the db                    #
87 ########################################################################
88 FileSet {
89   Name = "Catalog"
90   Include {
91     Options {
92       signature = SHA1
93       #compression = GZIP9
94     }
95     File = "/var/lib/bacula/bacula.sql.gz"
96   }
97 }
98
99 ########################################################################
100 # The job schedules                                                    #
101 ########################################################################
102
103 # When to do the backups, full backup on first sunday of the month,
104 #  differential (i.e. incremental since full) every other sunday,
105 #  and incremental backups other days
106 Schedule {
107   Name = "WeeklyCycle"
108   # fulls are automatically run if the last full backup was 40 days ago
109   # for the current value of 40 look for "Max Full Interval" in this file.
110   # Run = Full 1st sat at 00:35
111   Run = Differential sat at 00:35
112   Run = Incremental sun-fri at 00:35
113 }
114
115 # This schedule does the catalog. It starts after the WeeklyCycle
116 Schedule {
117   Name = "WeeklyCycleAfterBackup"
118   Run = Full sun-sat at 02:10
119 }
120
121 ########################################################################
122 # Generic catalog service                                              #
123 ########################################################################
124 Catalog {
125   Name = MyCatalog
126   dbname = <%= @db_name %>;
127   dbport = <%= @db_port %>;
128   dbaddress = "<%= @db_address %>";
129   dbsslmode = verify-ca;
130 <% if @db_sslca %>
131   dbsslca = "<%= @db_sslca %>;
132 <% end %>
133   dbuser = "<%= @db_user %>";
134   dbpassword = "<%= @bacula_db_secret %>"
135 }
136
137 ########################################################################
138 # Message delivery                                                     #
139 ########################################################################
140 Messages {
141   Name = Standard
142   mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
143   operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
144   #mail on error = <%= @bacula_operator_email %> = all, !skipped
145   mail = <%= @bacula_operator_email %> = all
146   operator = <%= @bacula_operator_email %> = mount
147   console = all, !skipped, !saved
148   syslog = all
149   append = "/var/lib/bacula/log" = all
150   catalog = all
151 }
152
153 # Message delivery for daemon messages (no job).
154 Messages {
155   Name = Daemon
156   mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r"
157   mail = <%= @bacula_operator_email %> = all
158   console = all, !skipped, !saved
159   syslog = all
160   append = "/var/lib/bacula/log" = all
161 }
162
163 ########################################################################
164 # Console, limited                                                     #
165 ########################################################################
166 Console {
167   Name = <%= @bacula_monitor_name %>
168   Password = "<%= @bacula_monitor_secret %>"
169   CommandACL = status, .status
170 }
171
172 ########################################################################
173 # Jobdefinitions with defaults and stuff                               #
174 ########################################################################
175 JobDefs {
176   Name = "Standardbackup"
177   Type = Backup
178   Level = Incremental
179   FileSet = "Standard Set"
180   Accurate = yes
181   # Schedule = "WeeklyCycle"
182   Messages = Standard
183   Max Full Interval = 50 days
184   Priority = 10
185   Write Bootstrap = "/var/lib/bacula/%c.bsr"
186   Maximum Concurrent Jobs = 20
187   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"
188 }
189
190 ########################################################################
191 # Standard Restore template, to be changed by Console program          #
192 #  Only one such job is needed for all Jobs/Clients/Storage ...        #
193 ########################################################################
194 Job {
195   Name = "RestoreFiles"
196   Type = Restore
197   Client = <%=@bacula_director_address%>-fd
198   FileSet = "Standard Set"
199   Pool = poolfull-<%=@bacula_pool_name%>-<%=@bacula_director_address%>
200   Messages = Standard
201   Where = /var/tmp/bacula-restores
202 }
203
204
205 # Scratch pool definition
206 Pool {
207   Name = Scratch
208   Pool Type = Backup
209 }
210
211 ########################################################################
212 # Generic jobs                                                         #
213 ########################################################################
214 # Backup the catalog database (after the nightly save)
215 Storage {
216   Name = "<%= @bacula_filestor_name %>-catalog"
217   Address = <%= @bacula_storage_address %>
218   SDPort = <%= @bacula_storage_port %>
219   Password = "<%= @bacula_storage_secret %>"
220   Device = "<%= @bacula_filestor_device %>-catalog"
221   Media Type = "<%= @bacula_filestor_name %>-catalog"
222   Maximum Concurrent Jobs = 10
223
224   TLS Enable = yes
225   TLS Require = yes
226   TLS CA Certificate File = "<%= @bacula_ca_path %>"
227   # This is a client certificate, used by the director to connect to the storage daemon
228   TLS Certificate = "<%= @bacula_ssl_client_cert %>"
229   TLS Key = "<%= @bacula_ssl_client_key %>"
230 }
231 Pool {
232   Name = "poolcatalog-<%=@bacula_pool_name%>"
233   Pool Type = Backup
234   Storage = "<%=@bacula_filestor_name%>-catalog"
235   AutoPrune = yes
236   Volume Retention = 2 months
237   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}"
238   Volume Use Duration = 23h
239   Maximum Volume Jobs = 1
240   Maximum Volume Bytes = 500G
241   Action On Purge = Truncate
242   Recycle = yes
243   RecyclePool = "poolcataloggraveyard-<%=@bacula_pool_name%>"
244 }
245 Pool {
246   Name = "poolcataloggraveyard-<%=@bacula_pool_name%>"
247   Pool Type = Backup
248   Storage = "<%=@bacula_filestor_name%>-catalog"
249   Recycle = yes
250   RecyclePool = "poolcataloggraveyard-<%=@bacula_pool_name%>"
251 }
252
253 Job {
254   Name = "BackupCatalog"
255   JobDefs = "Standardbackup"
256   Client = <%=@bacula_director_address%>-fd
257   Level = Full
258   FileSet = "Catalog"
259   Schedule = "WeeklyCycleAfterBackup"
260 #  # This creates an ASCII copy of the catalog
261 #  # Arguments to make_catalog_backup.pl are:
262 #  #  make_catalog_backup.pl <catalog-name>
263   RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog"
264 #  # This deletes the copy of the catalog
265   RunAfterJob  = "/etc/bacula/scripts/delete_catalog_backup"
266   Write Bootstrap = "/var/lib/bacula/%n.bsr"
267   Priority = 15    # run after main backup
268   Pool = "poolcatalog-<%=@bacula_pool_name%>"
269 }
270
271 ########################################################################
272 # And now include all the generated configs                            #
273 ########################################################################
274 @|"sh -c 'for f in /etc/bacula/conf.d/*.conf ; do echo @${f} ; done'"