Files
computer-playbook/roles/web-app-jellyfin/vars/main.yml
kevinveenbirkenbachandClaude Opus 5 30d8671c39 refactor(mcp): let the sidecar entry be the switch, not the topic
Thirteen of sixteen MCP sidecar entries carried no enabled at all, so
collect_role_resources fell back to _looks_like_container and billed every
one of them as running. Three roles already gated theirs on mcp.enabled;
the rest now do the same, gitea twice because it is the only role with a
vendor container behind the adapter.

The fifteen adapter roles then read services.<key>.enabled instead of
mcp.enabled, so the compose block and the task gates follow the services
entry rather than running beside it on a second path. The six plugin and
native roles keep reading the topic: they ship no sidecar entry to point at.

The three-level resolution is not new. KEYCLOAK_LOGOUT_PANEL_ENABLED has
the same shape and depth and gates a task the same way, and the same value
reaches JAVASCRIPT_SERVICE_ENABLED, where service-gating.js throws on
anything but "true" or "false" — an unresolved chain would have been
killing keycloak's Playwright run since 575a5a87ac.

This does not change what the resource model counts: _is_enabled reads the
unrendered Jinja and still treats it as on. What it buys is one switch
instead of two, and a declaration that matches it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 17:42:33 +02:00

53 lines
3.2 KiB
YAML

---
application_id: "web-app-jellyfin"
JELLYFIN_NAME: "{{ lookup('config', application_id, 'services.jellyfin.name') }}"
JELLYFIN_BASE_URL: "{{ lookup('tls', application_id, 'url.base') }}"
JELLYFIN_API: "http://{{ DOCKER_BIND_HOST }}:{{ lookup('config', application_id, 'services.jellyfin.ports.local.http') }}"
JELLYFIN_ADMIN_USERNAME: "{{ lookup('users', 'administrator').username }}"
JELLYFIN_ADMIN_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.administrator_password') }}"
JELLYFIN_SSO_ENABLED: "{{ lookup('config', application_id, 'services.sso.enabled') }}"
JELLYFIN_LDAP_ENABLED: "{{ lookup('config', application_id, 'services.ldap.enabled') }}"
JELLYFIN_SSO_PLUGIN_MANIFEST: "{{ lookup('config', application_id, 'addons.sso-authentication.config.manifest') }}"
JELLYFIN_LDAP_PLUGIN_VERSION: "{{ lookup('config', application_id, 'addons.ldap-authentication.version') }}"
JELLYFIN_LDAP_PLUGIN_URL: "{{ lookup('config', application_id, 'addons.ldap-authentication.config.url') }}"
JELLYFIN_LDAP_PLUGIN_MD5: "{{ lookup('config', application_id, 'addons.ldap-authentication.config.md5') }}"
JELLYFIN_LDAP_SERVER: "{{ LDAP.SERVER.DOMAIN }}"
JELLYFIN_LDAP_PORT: "{{ LDAP.SERVER.PORT }}"
JELLYFIN_LDAP_BIND_DN: "{{ LDAP.DN.ADMINISTRATOR.DATA }}"
JELLYFIN_LDAP_BIND_PASSWORD: "{{ LDAP.BIND_CREDENTIAL }}"
JELLYFIN_LDAP_BASE_DN: "{{ LDAP.DN.OU.USERS }}"
JELLYFIN_LDAP_UID_ATTR: "{{ LDAP.USER.ATTRIBUTES.ID }}"
JELLYFIN_OIDC_ISSUER: "{{ OIDC.CLIENT.ISSUER_URL }}"
JELLYFIN_OIDC_CLIENT_ID: "{{ OIDC.CLIENT.ID }}"
JELLYFIN_OIDC_CLIENT_SECRET: "{{ OIDC.CLIENT.SECRET }}"
JELLYFIN_MCP_ENABLED: "{{ lookup('config', application_id, 'services.jellyfinmcp.enabled') | bool }}"
JELLYFIN_MCP_SERVICE_KEY: "jellyfinmcp"
JELLYFIN_MCP_CONTAINER: "{{ lookup('config', application_id, 'services.jellyfinmcp.name') }}"
JELLYFIN_MCP_PORT: "{{ lookup('config', application_id, 'services.jellyfinmcp.ports.internal.http') }}"
JELLYFIN_MCP_BEARER: "{{ lookup('config', application_id, 'secrets.credentials.mcp_bearer') }}"
JELLYFIN_MCP_INSTANCE_DIR: "{{ [lookup('container', application_id, 'directories.instance'), 'mcp'] | path_join }}"
JELLYFIN_MCP_UPSTREAM_HOST: "{{ lookup('config', application_id, 'services.jellyfin.name') }}"
JELLYFIN_MCP_UPSTREAM_PORT: "{{ lookup('config', application_id, 'services.jellyfin.ports.internal.http') }}"
JELLYFIN_MCP_UPSTREAM_URL: "http://{{ JELLYFIN_MCP_UPSTREAM_HOST }}:{{ JELLYFIN_MCP_UPSTREAM_PORT }}"
JELLYFIN_MCP_CONTRACT:
provider: "{{ application_id }}"
upstream_url: "{{ JELLYFIN_MCP_UPSTREAM_URL }}"
auth_subject: "{{ lookup('config', application_id, 'mcp.auth_subject') }}"
mutating_tools_enabled: "{{ lookup('config', application_id, 'mcp.tools.mutating_tools_enabled') | bool }}"
tools: "{{ lookup('file', 'mcp/tools.json') | from_json }}"
limits: "{{ lookup('config', application_id, 'mcp.limits') }}"
schema_sha256: "{{ lookup('config', application_id, 'mcp.tools.schema_sha256') }}"
JELLYFIN_MCP_ACCOUNT: "{{ lookup('users', 'mcp-web-app-jellyfin') }}"
JELLYFIN_MCP_UPSTREAM_PASSWORD: "{{ JELLYFIN_MCP_ACCOUNT.password }}"
JELLYFIN_MCP_UPSTREAM_USER: "{{ JELLYFIN_MCP_ACCOUNT.username }}"
JELLYFIN_MCP_UPSTREAM_DEVICE_ID: "infinito-mcp-adapter"
JELLYFIN_MCP_UPSTREAM_AUTH_HEADER: "X-Emby-Token"
JELLYFIN_MCP_UPSTREAM_AUTH_FORMAT: "{key}"