Skip to content

Instantly share code, notes, and snippets.

@BrianGallew
Created October 30, 2015 17:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BrianGallew/387289884e48f1f0b670 to your computer and use it in GitHub Desktop.
Save BrianGallew/387289884e48f1f0b670 to your computer and use it in GitHub Desktop.
#!jinja|pyobjects
# Set up logging
import logging
logger = logging.getLogger(__name__)
import os
import yaml
import socket
'''
{% from "pepper/map.jinja" import netblocks %}
'''
include('ds-bacula', 'firewall.standard')
import salt://ds-bacula/map.sls
Firewall.accept('Bacula director port',
both=[[9101, {{netblocks}}]],
require_in=Firewall('firewall_final_reject'),
)
with Pkgrepo('Bacula Repo'):
with Pkg.installed(
'bacula-director-mysql', version=BaculaConfig.version, verify=False):
Service.disabled('bacula-director')
if os.path.ismount('/db'):
File.directory(
'/db/bacula', user='bacula', group='bacula', mode='0755')
# There *may* be a worse/stupider way to do this, but I don't know what
# it is.
for instance in ['bs-dir-1', ]:
config_dir = '/db/bacula/%s' % instance
File.managed('Director defaults file %s' % instance,
name='/etc/default/%s' % instance,
source='salt://ds-bacula/files/defaults_bacula-dir',
template='jinja',
mode='0644',
defaults={'instance': instance},
)
File.managed('Director init file %s' % instance,
name='/etc/init.d/%s' % instance,
source='salt://ds-bacula/files/init_bacula-dir',
template='jinja',
mode='0755',
defaults={'instance': instance},
)
with File.directory(config_dir, user='bacula'):
File.directory('%s/bootstraps' % config_dir, user='bacula')
File.directory('%s/logs' % config_dir, user='bacula')
File.managed('director file %s' % instance,
name='%s/bacula.conf' % config_dir,
source='salt://ds-bacula/files/bacula.conf',
template='jinja',
user='bacula',
mode='0640',
defaults={'instance': instance,
'password': BaculaConfig.credentials['config_password'],
'schema': BaculaConfig.credentials['config_schema'],
'database_server': BaculaConfig.credentials['database_server'],
'prefix': '/db/bacula',
},
)
bconsole_conf = '%s/bconsole.conf' % config_dir
Cron.present('Weekly pruning of "lost" volumes for %s' % instance,
name='pgrep -u bacula && for c in $(/usr/local/bin/manage_catalogs --list | awk \'{print $2}\');do /usr/local/bin/prune_volumes -C $c -c %s > %s/prune.$c.log 2>&1;done' % (bconsole_conf, config_dir),
minute='1',
hour='19',
dayweek='6',
user='bacula')
Cron.present('Weekly pruning of two year old backups %s' % instance,
name='pgrep -u bacula && find %s/logs -mtime +730 -delete > %s/cleanup.log 2>&1' % (config_dir, config_dir),
minute='31',
hour='19',
dayweek='6',
user='bacula')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment