mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-10 04:36:40 +00:00
The pre-pull task set `async` unconditionally while gating only `poll`. With async disabled, `poll` became `omit` and ansible fell back to its built-in 15s poll while `async` still routed the task through async_wrapper: ansible collected the job itself and then ran `async_status mode=cleanup`, deleting the job file that tasks/utils/async/reap.yml expects to read. The reap reported a successful `ollama pull` as a failed async job, failing web-app-nextcloud 2 in run 30781723102. Both keys are now switched off together, matching all six peer call sites. On the resulting synchronous path the reap's `async_reap_tolerate` list no longer applies, so the tolerated "up to date" answer is carved out in `failed_when` instead. It keys on `failed` rather than `rc`, so a module-level failure that carries no rc is not swallowed. async_failures._which() now honours loop_control.loop_var: the fired result records the chosen name under `ansible_loop_var`, so a batch failure names `smollm2:135m` instead of the bare job id. A second lint case asserts that async and poll carry `omit` together - the rule this call site was the only one of seven to break. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Custom Filter Plugins for Infinito.Nexus
This directory contains custom Ansible filter plugins used within the Infinito.Nexus project.
When to Use a Filter Plugin
- Transform values: Use filters to transform, extract, reformat, or compute values from existing variables or facts.
- Inline data manipulation: Filters are designed for inline use in Jinja2 expressions (in templates, tasks, vars, etc.).
- No external lookups: Filters only operate on data you explicitly pass to them and cannot access external files, the Ansible inventory, or runtime context.
Examples
{{ role_name | get_entity_name }}
{{ my_list | unique }}
{{ user_email | regex_replace('^(.+)@.*$', '\\1') }}
When not to Use a Filter Plugin
- If you need to load data from an external source (e.g., file, environment, API), use a lookup plugin instead.
- If your logic requires access to inventory, facts, or host-level information that is not passed as a parameter.