Files
computer-playbook/roles/web-app-minio/templates/env.j2
kevinveenbirkenbachandClaude Opus 4.8 15e7647d2f refactor(env): central TZ+LANG base included by every role env.j2
New roles/sys-svc-container/templates/env.j2 sets TZ={{ HOST_TIMEZONE }} and LANG=C.UTF-8. Every role env.j2 includes it at the top; it renders via stack_host_template, the same engine that resolves the includes in compose.yml.j2, so it works in both compose and swarm. TZ/LANG are removed from the individual role env.j2 so each value stays single-source.

New lint tests/lint/ansible/test_env_base_include.py verifies every role env.j2 includes the base and never re-sets a base-owned key (keys derived from the base file).

mattermost and gitea meta/volumes.yml drop the /etc/timezone host-path bind: swarm hard-rejects a task whose bind source is missing on the node (Debian-trixie nodes have no /etc/timezone). TZ now comes from the base env. /etc/localtime bind also dropped; the container timezone follows TZ.

Non-directive comments were removed from the touched env.j2 (banners, restatements, reference URLs, narration) so the changed files pass the comment-lint; only tool directives remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 22:13:57 +02:00

24 lines
1.1 KiB
Django/Jinja

{% include 'roles/sys-svc-container/templates/env.j2' %}
MINIO_ROOT_USER={{ lookup('users', 'administrator').username }}
MINIO_ROOT_PASSWORD={{ lookup('users', 'administrator').password | dotenv_quote }}
MINIO_SERVER_URL={{ MINIO_API_URL }}
MINIO_BROWSER_REDIRECT_URL={{ MINIO_CONSOLE_URL }}
{% if MINIO_LDAP_ENABLED | bool %}
MINIO_IDENTITY_LDAP_SERVER_ADDR={{ LDAP.SERVER.DOMAIN }}:{{ LDAP.SERVER.PORT }}
MINIO_IDENTITY_LDAP_SERVER_INSECURE={{ ('off' if (LDAP.SERVER.SECURITY | upper) in ['TLS','SSL'] else 'on') }}
MINIO_IDENTITY_LDAP_SERVER_STARTTLS={{ ('on' if (LDAP.SERVER.SECURITY | upper) == 'TLS' else 'off') }}
MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY=off
MINIO_IDENTITY_LDAP_LOOKUP_BIND_DN={{ LDAP.DN.ADMINISTRATOR.DATA }}
MINIO_IDENTITY_LDAP_LOOKUP_BIND_PASSWORD={{ LDAP.BIND_CREDENTIAL | dotenv_quote }}
MINIO_IDENTITY_LDAP_USER_DN_SEARCH_BASE_DN={{ LDAP.DN.ROOT }}
MINIO_IDENTITY_LDAP_USER_DN_SEARCH_FILTER=({{ LDAP.USER.ATTRIBUTES.ID }}=%s)
MINIO_IDENTITY_LDAP_GROUP_SEARCH_BASE_DN={{ LDAP.DN.ROOT }}
MINIO_IDENTITY_LDAP_GROUP_SEARCH_FILTER=(&(objectClass=groupOfNames)(member=%d))
{% endif %}