fix(traefik): migrate KEEPALIVED_PASSWORD to Pattern C (manifest-driven), stop committing traefik.env #21
+27
-1
@@ -70,6 +70,16 @@ when:
|
||||
# tolerating a failing stack-ps in verify (|| true) so a genuinely missing
|
||||
# stack produces the designed WARNING instead of killing the step. This
|
||||
# hazard was first flagged in July (PR #3, closed unmerged).
|
||||
#
|
||||
# 2026-09-12 MIGRATION: traefik moved from Pattern B (secrets hand-typed
|
||||
# into the host-only traefik.env, no CI involvement at all) to the same
|
||||
# manifest-driven provisioning as ai) below. Root cause of the migration:
|
||||
# traefik.env had been accidentally committed to git with a literal
|
||||
# "***REDACTED***" placeholder as KEEPALIVED_PASSWORD; every git-guard
|
||||
# resync/checkout silently restored that broken value, which diverged from
|
||||
# keepalived-backup's stale-but-correct in-memory value and produced a
|
||||
# continuous VRRP auth failure ("received an invalid passwd!") and VIP
|
||||
# instability. The manifest-driven path never commits the rendered file.
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
steps:
|
||||
@@ -216,6 +226,11 @@ steps:
|
||||
from_secret: flowagent_azure_tenant_id
|
||||
FLOWAGENT_AZURE_CLIENT_SECRET:
|
||||
from_secret: flowagent_azure_client_secret
|
||||
# ── traefik stack (manifest-driven — secrets/secrets-map.yaml +
|
||||
# traefik/traefik.env.template + deploy/provision-stack.py).
|
||||
# Migrated 2026-09-12; see header note above for root cause. ──
|
||||
TRAEFIK_KEEPALIVED_PASSWORD:
|
||||
from_secret: traefik_keepalived_password
|
||||
commands:
|
||||
- apk add --no-cache openssh-client python3 py3-yaml
|
||||
- mkdir -p ~/.ssh
|
||||
@@ -243,8 +258,19 @@ steps:
|
||||
for STACK in $ALL_STACKS; do
|
||||
echo "Provisioning: $STACK"
|
||||
case "$STACK" in
|
||||
maintenance|media|unifi|guacamole|security|auth|traefik|meshcentral|ddm)
|
||||
maintenance|media|unifi|guacamole|security|auth|meshcentral|ddm)
|
||||
echo " No Docker secrets for $STACK — secrets in host .env";;
|
||||
traefik)
|
||||
# MIGRATED (2026-09-12) to manifest-driven provisioning after
|
||||
# discovering traefik.env was committed to git with a literal
|
||||
# "***REDACTED***" placeholder as KEEPALIVED_PASSWORD — every
|
||||
# git-guard resync/checkout restored the broken value, causing
|
||||
# VRRP auth mismatch between keepalived-master/-backup and VIP
|
||||
# instability. All logic lives in deploy/provision-stack.py;
|
||||
# the authoritative key list lives in
|
||||
# traefik/traefik.env.template; the mapping lives in
|
||||
# secrets/secrets-map.yaml. This case is intentionally one line.
|
||||
python3 deploy/provision-stack.py traefik;;
|
||||
immich)
|
||||
ssh -o StrictHostKeyChecking=no root@$${SWARM_MANAGER_IP} "source /tmp/cs.sh
|
||||
create_or_update_secret 'immich_db_password' '$${IMMICH_DB_PASSWORD}'
|
||||
|
||||
Reference in New Issue
Block a user