Files
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

34 lines
1.7 KiB
Django/Jinja

{% include 'roles/sys-svc-container/templates/env.j2' %}
CONFLUENCE_URL={{ CONFLUENCE_URL }}
CONFLUENCE_HOME={{ CONFLUENCE_HOME }}
ATL_PROXY_NAME={{ CONFLUENCE_HOSTNAME }}
ATL_PROXY_PORT={{ lookup('tls', application_id, 'ports.web') }}
ATL_TOMCAT_SCHEME={{ lookup('tls', application_id, 'protocols.web') }}
ATL_TOMCAT_SECURE={{ lookup('tls', application_id, 'enabled') | bool | lower }}
JVM_MINIMUM_MEMORY={{ CONFLUENCE_JVM_MIN }}
JVM_MAXIMUM_MEMORY={{ CONFLUENCE_JVM_MAX }}
JVM_SUPPORT_RECOMMENDED_ARGS=-Datlassian.home={{ CONFLUENCE_HOME }} -Datlassian.upm.signature.check.disabled={{ CONFLUENCE_TRUST_STORE_ENABLED | ternary('false','true')}}
ATL_DB_TYPE=postgresql
ATL_DB_DRIVER=org.postgresql.Driver
ATL_JDBC_URL=jdbc:postgresql://{{ lookup('database', application_id, 'host') }}:{{ lookup('database', application_id, 'port') }}/{{ lookup('database', application_id, 'name') }}
ATL_JDBC_USER={{ lookup('database', application_id, 'username') }}
ATL_JDBC_PASSWORD={{ lookup('database', application_id, 'password') | dotenv_quote }}
{% if CONFLUENCE_OIDC_ENABLED %}
CONFLUENCE_OIDC_TITLE={{ CONFLUENCE_OIDC_LABEL | dotenv_quote }}
CONFLUENCE_OIDC_ISSUER={{ CONFLUENCE_OIDC_ISSUER }}
CONFLUENCE_OIDC_AUTHORIZATION_ENDPOINT={{ CONFLUENCE_OIDC_AUTH_URL }}
CONFLUENCE_OIDC_TOKEN_ENDPOINT={{ CONFLUENCE_OIDC_TOKEN_URL }}
CONFLUENCE_OIDC_USERINFO_ENDPOINT={{ CONFLUENCE_OIDC_USERINFO_URL }}
CONFLUENCE_OIDC_END_SESSION_ENDPOINT={{ CONFLUENCE_OIDC_LOGOUT_URL }}
CONFLUENCE_OIDC_JWKS_URI={{ CONFLUENCE_OIDC_JWKS_URL }}
CONFLUENCE_OIDC_CLIENT_ID={{ CONFLUENCE_OIDC_CLIENT_ID }}
CONFLUENCE_OIDC_CLIENT_SECRET={{ CONFLUENCE_OIDC_CLIENT_SECRET }}
CONFLUENCE_OIDC_SCOPES={{ CONFLUENCE_OIDC_SCOPES }}
CONFLUENCE_OIDC_UNIQUE_ATTRIBUTE={{ CONFLUENCE_OIDC_UNIQUE_ATTRIBUTE }}
{% endif %}