Files
computer-playbook/plugins/lookup
kevinveenbirkenbach 161a7b0583 fix(oidc-flavor): return empty flavor when services.oidc.enabled is false
Reason: the lookup only consulted services.ldap.enabled, so even with OIDC
fully disabled it would still return "sociallogin" (or "oidc_login" when
LDAP was on). Nextcloud's services.yml then enables the matching OIDC
plugin, which redirects to Keycloak — but the Keycloak client's
redirectUris correctly excludes apps with oidc.enabled=false, so the
handoff dies with "Invalid parameter: redirect_uri". Caused all 3
nextcloud variant-1 Playwright errors (`nextcloud login`,
`nextcloud talk admin settings`, `biber logs into nextcloud via OIDC`).

The lookup now short-circuits to "" when oidc.enabled is falsy, which
makes all three plugin gates (oidc_login, sociallogin, user_oidc) compare
false and 06_setup_plugin.yml's disable branch take over. Existing
flavor-selection paths (oidc.enabled=true) are unchanged. Adds two
regression tests covering the new short-circuit and updates the
`_apps` test helper to default oidc.enabled=true so existing
flavor-selection tests stay focused on the ldap/flavor axis.
2026-05-18 01:09:01 +02:00
..
…

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.

Further Reading