diff --git a/bundles/docker-engine/items.py b/bundles/docker-engine/items.py index 7050197..253daff 100644 --- a/bundles/docker-engine/items.py +++ b/bundles/docker-engine/items.py @@ -46,6 +46,10 @@ actions['docker_create_nondefault_network'] = { for app, config in node.metadata.get('docker-engine/containers', {}).items(): volumes = config.get('volumes', {}) user = config.get('user', f'docker-{app}') + directories[f'/var/opt/docker-engine/{app}'] = { + 'owner': user, + 'group': user, + } files[f'/opt/docker-engine/{app}'] = { 'source': 'docker-wrapper', @@ -97,6 +101,7 @@ for app, config in node.metadata.get('docker-engine/containers', {}).items(): svc_systemd[f'docker-{app}'] = { 'needs': { *deps, + f'directory:/var/opt/docker-engine/{app}', f'file:/opt/docker-engine/{app}', f'file:/usr/local/lib/systemd/system/docker-{app}.service', f'user:{user}', diff --git a/bundles/docker-engine/metadata.py b/bundles/docker-engine/metadata.py index 2b9212f..4600233 100644 --- a/bundles/docker-engine/metadata.py +++ b/bundles/docker-engine/metadata.py @@ -13,11 +13,6 @@ defaults = { }, }, }, - 'backups': { - 'paths': { - '/var/opt/docker-engine', - }, - }, 'nftables': { 'forward': { 'docker-engine': [ @@ -39,9 +34,7 @@ defaults = { }, 'zfs': { 'datasets': { - 'tank/docker-data': { - 'mountpoint': '/var/opt/docker-engine', - }, + 'tank/docker-data': {}, }, }, } @@ -72,6 +65,7 @@ def monitoring(metadata): @metadata_reactor.provides( + 'backups/paths', 'zfs/datasets', ) def zfs(metadata): @@ -79,10 +73,19 @@ def zfs(metadata): for app in metadata.get('docker-engine/containers', {}): datasets[f'tank/docker-data/{app}'] = { - 'mountpoint': f'/var/opt/docker-engine/{app}' + 'mountpoint': f'/var/opt/docker-engine/{app}', + 'needed_by': { + f'directory:/var/opt/docker-engine/{app}', + }, } return { + 'backups': { + 'paths': { + v['mountpoint'] + for v in datasets.values() + }, + }, 'zfs': { 'datasets': datasets, },