mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2026-08-29 20:13:13 +00:00
Give each Molecule scenario its own Ansible home
Scenarios install their Galaxy dependencies with `force: true`, so two roles running at once re-extract the same collections and roles into ~/.ansible and pull them out from under each other mid-play. It surfaces as a collection that was working moments earlier going missing: the connection plugin 'community.docker.docker' was not found Found while running five scenarios in parallel, where it cost a run. ANSIBLE_HOME relocates both `collections/` and `roles/`, so one variable covers both halves; the scenarios' ANSIBLE_ROLES_PATH workaround now follows it rather than hardcoding ~/.ansible/roles. Left alone if already set, and unset in CI, where each role runs in its own job and has nothing to collide with. Verified by removing var/molecule-ansible-home entirely and running matrix-alertmanager-receiver from cold: green through idempotence, with the collections and roles landing under the per-role directory - which also shows nothing was quietly relying on the shared ~/.ansible being populated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEH3vxYSQ5SV4N5z61eyGT
This commit is contained in:
co-authored by
Claude Opus 5
parent
6bdcddb79a
commit
705f561777
@@ -69,3 +69,24 @@ A suite that only waits for the systemd unit to become `active` proves very litt
|
||||
Give the scenario values that differ from both the role's defaults and the component's own defaults. Otherwise a passing assertion cannot distinguish "the role configured this" from "it would have happened anyway".
|
||||
|
||||
Then try to break it. If a scenario cannot be made to fail by deliberately breaking the thing it checks, it is not testing that thing.
|
||||
|
||||
## Running more than one scenario at once
|
||||
|
||||
`bin/molecule.sh` points `ANSIBLE_HOME` at `var/molecule-ansible-home/<role>/`, so each role gets
|
||||
its own copy of the Galaxy collections and roles.
|
||||
|
||||
This is not an optimisation - it is a correctness fix. Scenarios install their dependencies with
|
||||
`force: true`, so two runs sharing `~/.ansible` re-extract the same collections underneath each
|
||||
other. The symptom is a collection that was working moments earlier going missing mid-play:
|
||||
|
||||
```
|
||||
the connection plugin 'community.docker.docker' was not found
|
||||
```
|
||||
|
||||
If you see that, a concurrent run took the collection out from under you.
|
||||
|
||||
`ANSIBLE_HOME` is left alone if you have already set it, and is unset in CI - each role runs in its
|
||||
own job there, so there is nothing to collide with.
|
||||
|
||||
The directories are disposable; `var/` is gitignored. Delete `var/molecule-ansible-home/` to force
|
||||
a fresh install.
|
||||
|
||||
Reference in New Issue
Block a user