ADR-0002 Phase B. Makes postgres/iac, argocd, and the conventions docs
multi-environment-capable WITHOUT activating any sandbox yet — every app
stays prod-only, so this change is behaviour-neutral:
- postgres/iac `tofu plan` is a no-op (proven: the elision flatten keys
are bare app names, db=<app>, role=<app>_role — identical addresses)
- the argocd apps.yaml render is byte-identical (181→181 lines, diff
empty) since no app declares `envs`
postgres/iac:
- variables.tf: `applications` becomes set(object({name, envs=optional(["prod"])}))
- main.tf: a `local.app_instances` flatten of applications × envs keyed by the
elided instance id (env=prod → "<app>"); per-app resources iterate it and
reference each.key / each.value.{database,role}. For prod-only apps every
resource address + attribute is unchanged. (main.tf also got a full
`tofu fmt` pass — the pgbouncer function block reindents 4→2 spaces, which
is cosmetic; the correctness gate is the CI tofu plan, not the text diff.)
- terraform.tfvars: string entries → { name = "..." } objects.
argocd/templates/apps.yaml:
- after the prod Application, a `range $app_attr.envs` loop renders one extra
Application per non-prod env: name/namespace `<app>-<env>`, shared repoURL,
helm.valueFiles [values.yaml, values-<env>.yaml], per-env syncPolicy override.
Renders nothing while no app sets `envs` → prod render unchanged.
docs:
- doc/runbooks/new-web-app/conventions.md (FR, authoritative): new section
"Plusieurs environnements pour une même app" — elision rule, suffix rule,
snake-case owner-role exception, erp/erp-sandbox table, ADR-0002 link.
- vibe/guidebooks/lab-ecosystem/naming-conventions.md (EN mirror): the env
coordinate section + a "Two sandbox models" section reconciling the
separate-cluster (ADR-0001, names repeat) vs in-cluster sibling (ADR-0002,
<env> suffix) strategies; Last Updated bumped; ADR-0002 cross-links.
Activation (erp gets envs=["prod","sandbox"] in postgres tfvars + argocd
values + erp/iac) is Phase D, gated by its own plan review.
Refs ADR-0002 (factory#15). Phase A = tools#2 (merged). Phase C = erp#11 (merged).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Factory > Doc
Documentation Factory
Last Updated: 2026-05-31 Status: Production · maintenue activement Related: README racine du dépôt · Collection Ansible
arcodange.factory
C'est quoi ?
Le dossier doc/ rassemble la documentation de la plateforme Arcodange (k3s + Gitea + ArgoCD + OpenTofu + Vault + Postgres, auto-hébergée sur 3 Raspberry Pi). On y trouve deux familles :
- les ADR (records de décisions d'architecture), qui expliquent pourquoi la plateforme est faite ainsi ;
- les runbooks, qui expliquent comment exécuter une procédure opérationnelle de bout en bout.
Note
Convention du dépôt (cf. PR #8) : la documentation vit sous
doc/(singulier). Un ancien dossierdocs/(pluriel) a pu traîner non-suivi par git — ne pas y ajouter de contenu.
Sections
| Section | Ce qu'on y trouve | Statut |
|---|---|---|
| Runbooks | Procédures opérationnelles pas-à-pas (créer une app, etc.) | ✅ |
| ADR | Décisions d'architecture + checklist de mise en place de la plateforme | ✅ |
Légende de statut
✅ actif · 🟡 dégradé/beta · 🔴 critique/EOL · ⚠️ problème connu · ❌ désactivé
Comment éditer cette documentation
- Ajouter une page → la créer depuis le template adéquat et ajouter sa ligne dans la table d'index du
README.mdparent. - Supprimer une page → la marquer Décommissionnée (date) d'abord ; supprimer le fichier et sa ligne d'index ensemble une fois qu'elle est vraiment partie.
- Garder les liens croisés bidirectionnels → quand on lie A→B, ajouter B→A.
- Mettre à jour
Last Updated:en tête de la racine concernée après tout changement de structure.