2020-11-13 11:36:52 +00:00
|
|
|
from os.path import join
|
|
|
|
|
|
|
|
if node.metadata['backups'].get('exclude_from_backups', False):
|
2021-02-07 19:47:22 +00:00
|
|
|
files['/etc/backup.priv'] = {
|
|
|
|
'delete': True,
|
2020-11-13 11:36:52 +00:00
|
|
|
}
|
|
|
|
else:
|
2020-11-14 11:49:57 +00:00
|
|
|
if ':' in node.metadata['backup-client']['server']:
|
|
|
|
server, port = node.metadata['backup-client']['server'].split(':')
|
|
|
|
else:
|
|
|
|
server = node.metadata['backup-client']['server']
|
|
|
|
port = 22
|
|
|
|
|
2021-02-07 19:47:22 +00:00
|
|
|
files['/usr/local/bin/generate-backup'] = {
|
|
|
|
'content_type': 'mako',
|
|
|
|
'context': {
|
|
|
|
'username': node.metadata['backup-client']['user-name'],
|
|
|
|
'server': server,
|
|
|
|
'port': port,
|
|
|
|
'paths': node.metadata.get('backups', {}).get('paths', {}),
|
2020-11-13 11:36:52 +00:00
|
|
|
},
|
2021-02-07 19:47:22 +00:00
|
|
|
'mode': '0700',
|
|
|
|
}
|
|
|
|
files['/etc/backup.priv'] = {
|
|
|
|
'content': repo.vault.decrypt_file(join('backup', 'keys', f'{node.name}.key.vault')),
|
|
|
|
'mode': '0400',
|
2020-11-13 11:36:52 +00:00
|
|
|
}
|
|
|
|
|
2021-02-07 19:47:22 +00:00
|
|
|
files['/usr/local/share/icinga/plugins/check_backup_last_run'] = {
|
|
|
|
'mode': '0755',
|
|
|
|
}
|
|
|
|
|
|
|
|
directories['/etc/backup-pre-hooks.d'] = {
|
|
|
|
'purge': True,
|
|
|
|
}
|
|
|
|
|
|
|
|
for hname, hcontent in node.metadata['backup-client'].get('pre-hooks', {}).items():
|
|
|
|
files[f'/etc/backup-pre-hooks.d/{hname}'] = {
|
2021-02-13 07:26:46 +00:00
|
|
|
'content': '#!/bin/sh\n\n' + hcontent,
|
2021-02-07 19:47:22 +00:00
|
|
|
'mode': '0700',
|
|
|
|
}
|