mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
A volume that reaches several services repeated its container path once per
mount. Written out each time it has no single point of truth: a rename that
misses one line still parses, still deploys, and mounts one service somewhere
nobody intended. Nothing fails until that service looks for content which is
not there.
YAML already solves this, and 62722a6ab used it here first -- web-app-openproject
anchors await_migrations_target and aliases it for the second service. Nineteen
roles now follow, and tests/lint/repository/spot/test_volumes_target_single_spot.py
fails on any target spelled out twice. An alias carries no path, so the rule
cannot see it, which is the point.
The conversion was mechanical and is provable rather than reviewed: every file
was rewritten and then reloaded, and any file whose yaml.safe_load result
differed from the original was discarded instead of kept. Nineteen written,
none discarded. Anchors and aliases are a serialisation form; the loader
resolves them before any consumer sees a document.
validate_volumes_meta over all 81 meta/volumes.yml reports no violation.
make test-lint: 328 passed.
web-app-prometheus carries two unrelated deletions: comments that predate this
change and fell under the comment lint once the file was touched. They explained
a 0444 mode and a compose-only bind; both facts are visible in the entries
themselves.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.2 KiB
YAML
43 lines
1.2 KiB
YAML
---
|
|
prosody_config:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'prosody-config'] | path_join }}"
|
|
mounts:
|
|
- service: prosody
|
|
target: &config_target /config
|
|
|
|
prosody_plugins:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'prosody-plugins-custom'] | path_join }}"
|
|
mounts:
|
|
- service: prosody
|
|
target: /prosody-plugins-custom
|
|
|
|
jicofo_config:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'jicofo'] | path_join }}"
|
|
mounts:
|
|
- service: jicofo
|
|
target: *config_target
|
|
|
|
jvb_config:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'jvb'] | path_join }}"
|
|
mounts:
|
|
- service: jvb
|
|
target: *config_target
|
|
|
|
web_config:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'config'] | path_join }}"
|
|
mounts:
|
|
- service: web
|
|
target: *config_target
|
|
|
|
web_transcripts:
|
|
type: bind
|
|
source: "{{ [lookup('container', 'web-app-jitsi', 'directories.volumes'), 'transcripts'] | path_join }}"
|
|
mounts:
|
|
- service: web
|
|
target: /usr/share/jitsi-meet/transcripts
|