mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 02:54:26 +00:00
`vars:` on an `include_role` is in scope for everything the include pulls in, and the expression is evaluated where it is read rather than where it is written. `sys-stk-full` pulls in the proxy and the database, and each of those roles sets `application_id` to its own id, so a value written with `application_id` answers a different question by the time anyone asks for it. It surfaced as a missing key in a role that never declared the value: a repository url written by one app was looked up on `svc-prx-openresty`, and the git task died on an unresolvable argument rather than on anything to do with the url. The seven definitions here are the ones the included chain actually reads, all of them `compose_repository_url` / `compose_repository_ref` sources. Naming the application literally makes each expression answer the same in every scope it travels through. Values that stay inside their own role keep reading `application_id`; nothing downstream evaluates them. `4ce4236585` fixed the other half of the same mechanism a while back, in `meta/services.yml`, where a role-var was referenced from a value the compose role resolves. Same failure, opposite end of the lookup. The lint fixes the form. It judges only the `compose_*` keys, because matching every handed-over key reported thirteen values, six of which nobody downstream reads. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>