60 lines
1.4 KiB
Python
60 lines
1.4 KiB
Python
defaults = {
|
|
'openssh': {
|
|
'allowed_users': {
|
|
# Usernames for backup clients always start with 'c-'
|
|
'c-*',
|
|
},
|
|
},
|
|
}
|
|
|
|
@metadata_reactor.provides(
|
|
'backup-server/clients',
|
|
)
|
|
def get_my_clients(metadata):
|
|
my_clients = {}
|
|
|
|
for rnode in repo.nodes:
|
|
if not rnode.has_bundle('backup-client') or rnode.metadata.get('backups/exclude_from_backups', False):
|
|
continue
|
|
|
|
my_clients[rnode.name] = {
|
|
'user': rnode.metadata.get('backup-client/user-name'),
|
|
}
|
|
|
|
return {
|
|
'backup-server': {
|
|
'clients': my_clients,
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'zfs/datasets',
|
|
'zfs/snapshots/retain_per_dataset',
|
|
)
|
|
def zfs(metadata):
|
|
zfs_datasets = {}
|
|
zfs_retains = {}
|
|
retain_defaults = {
|
|
'weekly': 4,
|
|
'monthly': 6,
|
|
}
|
|
|
|
for client in metadata.get('backup-server/clients', {}).keys():
|
|
dataset = '{}/{}'.format(metadata.get('backup-server/zfs-base'), client)
|
|
|
|
zfs_datasets[dataset] = {
|
|
'mountpoint': '/srv/backups/{}'.format(client),
|
|
'compression': 'on',
|
|
}
|
|
|
|
zfs_retains[dataset] = retain_defaults.copy()
|
|
|
|
return {
|
|
'zfs': {
|
|
'datasets': zfs_datasets,
|
|
'snapshots': {
|
|
'retain_per_dataset': zfs_retains,
|
|
},
|
|
},
|
|
}
|