mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-10 04:36:40 +00:00
Two wrapper behaviours move onto single sources of truth: Exec timeout: SYS_TIMEOUT_CONTAINER_EXEC (07_schedule.yml, default 7d so a hard kill never beats a production migration; the dev/CI inventory tightens it to 60min) reaches every task host via the play environment as CONTAINER_EXEC_TIMEOUT. The wrapper prefixes only the exec subcommand with coreutils timeout --kill-after=15. Ansible task timeouts are SIGALRM-based and slept through the last wedged docker socket for 4.5 hours; the OS level kill still fires there and returns 124, which until/failed_when and the rescue diagnostics react to. Unset or 0 keeps todays behaviour. CA container paths: the bind-mount targets for the injected root CA and wrapper script lived as string literals in container.py, compose_ca.py and the filter plugin. They now live once in the CA_TRUST group_vars SPOT (inject_cert_container, inject_wrapper_container) and reach container.py as env vars (play environment plus CA_TRUST_SYSTEMD_ENV) and compose_ca.py as CLI arguments built by the compose_ca_inject_cmd lookup. A caller that provides the host CA env but not the container paths is half-migrated and fails loudly instead of silently dropping CA injection; a host without any CA env keeps the soft fallback. All tests read the paths from the SPOT, and a regression test asserts the runtime scripts carry no literal copy. Co-Authored-By: Claude Fable 5 <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.