refactor: drop shared-service meta dependencies from service roles

podman, postgres, valkey, and nginx are shared services deployed once
per host. Declaring them in meta/main.yml re-ran them on every service
deploy, adding significant time to targeted runs. Playbooks now list
shared services first (tagged 'infra') and every role entry carries a
group tag plus its own name, so '--tags <role>' deploys just that role.

Roles still fail fast when a shared service is missing (password
asserts, postgresql tasks). Prerequisites are documented in role
READMEs. CLAUDE.md updated to reflect the new convention.
This commit is contained in:
Clément Désiles
2026-07-04 00:15:50 +02:00
parent 7972fe09ad
commit 1970564c8f
10 changed files with 47 additions and 26 deletions
+9 -5
View File
@@ -159,13 +159,17 @@ roles/myservice/
### 2. Meta Dependencies
```yaml
dependencies:
- role: podman # If using containers
- role: postgres # If needs database
- role: redis # If needs cache
dependencies: []
```
**Important:** Only include dependencies that are **always** required. Optional dependencies (like nginx for reverse proxy) should be added explicitly in playbooks, not in `meta/main.yml`.
**Do NOT declare shared services (podman, postgres, valkey, nginx) as meta dependencies.** They are deployed once via playbook role ordering and would otherwise re-run on every service deploy. Instead:
- Playbooks list shared services before service roles, tagged `infra`
- Every role entry in a playbook carries tags: a group tag (`system`, `net`, `infra`, `monitoring`, `services`) plus its own name
- Targeted deploys use `--tags <role>`; fresh installs run the full playbook (or `--tags infra` first)
- Service roles fail fast when a shared service is missing (password asserts, postgresql tasks)
Document prerequisites in the role README instead of `meta/main.yml`.
### 3. Rootless Podman and User Systemd Services