mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-13 22:26:49 +00:00
`docker stack deploy` names services `<stack>_<compose-yaml-key>` and silently ignores the compose `name:` field (that field maps to the compose-only `container_name`). The lookup was returning `<stack>_<services.<key>.name>` instead, which only happened to be correct when the YAML key and the `name:` field matched. The matomo bootstrap service is the failure case: services.bootstrap.name is `matomo-bootstrap` but the YAML key (and therefore the swarm service name) is `bootstrap`. The lookup returned `matomo_matomo-bootstrap`, the bootstrap-wait task polled an absent service, and the wait timed out after 7 empty retries -- root cause of the act-39 swarm bootstrap stall. - plugins/lookup/container_service.py: swarm branch returns `<stack>_<service_key>`; compose branch unchanged. - tests/unit/plugins/lookup/test_container_service.py: flip the two swarm assertions to the corrected expectations and rename `test_swarm_mode_uses_resolved_service_name` -> `test_swarm_mode_ignores_services_name_field` so the contract is visible from the test name.
Custom Lookup Plugins for Infinito.Nexus
This directory contains custom Ansible lookup plugins used within the Infinito.Nexus project.
When to Use a Lookup Plugin
- Load external data: Use lookups to retrieve data from files, APIs, databases, environment variables, or other external sources.
- Context-aware data access: Lookups can access the full Ansible context, including inventory, facts, and runtime variables.
- Generate dynamic lists: Lookups are often used to build inventories, secrets, or host lists dynamically.
Examples
# Load the contents of a file as a variable
my_secret: "{{ lookup('file', '/path/to/secret.txt') }}"
# Retrieve a list of hostnames from an external source
host_list: "{{ lookup('infinito_inventory_hosts', 'group_name') }}"
When not to Use a Lookup Plugin
- If you only need to manipulate or transform data already available in your playbook, prefer a filter plugin instead.