mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
proxy_hide_header is replaced, not merged, by a location that sets its own, so upstream_strips.conf.j2 only takes effect where a location includes it. The health locations of web-app-prometheus (/healthz/ready, /_live_probe), which every standard vhost includes, and the extra locations of web-app-bluesky (/config, /ipcc) and web-app-opentalk (/v1/, /signaling, /livekit) proxied without it, so X-Powered-By and the upstream's Strict-Transport-Security leaked on those paths. All seven locations now include the strips. A new lint checks every role template without a server block, i.e. every fragment the front proxy renders into a vhost, and fails on a proxying location that lacks them. Templates with their own server block are app-internal nginx configs behind such a location and stay out of scope. Closes #1124 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Jinja Lints 🪄
Lint tests that enforce correct Jinja2 filter and lookup composition in Ansible templates and task definitions.
Tests in this directory MUST only cover Jinja2 expression composition rules.
Rules that validate where dotted-path targets are declared live in the sibling ../variables/ directory.
test_no_lookup_config_jinja_default.pyforbidslookup('config', application_id, 'path') | default(X). The two-termconfiglookup raises on a missing key, so the Jinjadefault(...)filter never fires; the fallback MUST be passed as the lookup's third argument instead.
For framework, directory layout, and make test-lint usage see lint.md.