Files
computer-playbook/plugins/filter
kevinveenbirkenbachandClaude Opus 4.7 c8207a7635 refactor(filter,dns): add on_off filter and NETWORK_PUBLIC_DNS_RESOLVERS SPOT
Two related cleanups extracted from the in-flight req-013 work because
they touch shared config layers (filter plugins, group_vars/all,
unrelated role templates) and deserve their own atomic commit so the
req-013 PR stays focused on the joomla/bluesky integration.

1. `on_off` filter (plugins/filter/on_off.py + unit tests)
   Replaces the verbose `{{ x | bool | ternary('on', 'off') }}` idiom
   that nginx, msmtp, unbound etc. need for their config syntax.
   Coercion mirrors Ansible's `bool` filter; unknown strings raise
   so templates can't silently mis-render. Migrated call sites:
   - roles/sys-svc-mail-msmtp/templates/msmtprc.conf.j2 (4x)
   - roles/sys-svc-proxy/templates/location/html.conf.j2

2. `NETWORK_PUBLIC_DNS_RESOLVERS` SPOT (group_vars/all/08_networks.yml)
   New canonical list of public DNS resolvers used wherever a role
   needs runtime external-hostname lookups (nginx `resolver`
   directives, unbound `forward-addr`, etc.). Default
   `[1.1.1.1, 8.8.8.8]`. Migrated call sites:
   - roles/web-app-mailu/templates/unbound.conf.j2 (forward-zone loop)
   The IPv6 toggle in any nginx `resolver` directive comes from the
   existing `NETWORK_IPV6_ENABLED` flag in the same file.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 17:11:30 +02:00
..
…
…
…
…

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.

Further Reading