53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
from bundlewrap.metadata import atomic
|
|
|
|
defaults = {
|
|
'apt': {
|
|
'packages': {
|
|
'samba': {},
|
|
'samba-vfs-modules': {},
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'firewall/port_rules',
|
|
)
|
|
def firewall(metadata):
|
|
return {
|
|
'firewall': {
|
|
'port_rules': {
|
|
'137/udp': atomic(metadata.get('samba/restrict-to', set())),
|
|
'138/udp': atomic(metadata.get('samba/restrict-to', set())),
|
|
'139/tcp': atomic(metadata.get('samba/restrict-to', set())),
|
|
'445/tcp': atomic(metadata.get('samba/restrict-to', set())),
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@metadata_reactor.provides(
|
|
'zfs/datasets',
|
|
)
|
|
def timemachine_zfs(metadata):
|
|
shares = metadata.get('samba/timemachine-shares', set())
|
|
|
|
if not shares:
|
|
return {}
|
|
|
|
assert node.has_bundle('zfs'), f'{node.name}: time machine backups require zfs'
|
|
|
|
datasets = {
|
|
'tank/timemachine': {},
|
|
}
|
|
|
|
for share_name in shares:
|
|
datasets[f'tank/timemachine/{share_name}'] = {
|
|
'mountpoint': f'/srv/timemachine/{share_name}',
|
|
}
|
|
|
|
return {
|
|
'zfs': {
|
|
'datasets': datasets,
|
|
},
|
|
}
|