Config centralisee & Infra Generator
Le workspace s'appuie sur deux mecanismes complementaires :
config/pour les variables d'environnement applicatives (saturn,venus,mercure,web,kafka) ;infra/pour generer des configurations d'infrastructure (docker-compose, systemd, kubernetes) par techno.
1) Config centralisee (config/)
Source de verite
Les variables sont declarees en YAML :
config/yaml/dev.ymlconfig/yaml/prod.yml
Puis generees en fichiers .env :
- centralises :
config/env/<env>/*.env - miroirs projet :
central/saturn/.envcentral/venus/.envcentral/mercure/.envcentral/venus/web/.env
Commandes
npm run config:env:generate:dev
npm run config:env:generate:prod
npm run config:env:generate
npm run config:env:generate:all
npm run central:up regenere deja le profil dev avant le docker compose up.
2) Infra Generator (infra/)
But
A partir d'une definition YAML par techno/environnement, le generateur produit :
- un
docker-compose; - des units
systemd; - des manifests Kubernetes.
Definitions
Exemples de definitions :
infra/definitions/elastic.dev.ymlinfra/definitions/kafka.dev.ymlinfra/definitions/postgresql.dev.yml
Convention recommandee : <tech>.<env>.yml.
Moteur de generation
Script Python :
scripts/generate_infra_config.py
Il peut fonctionner :
- par techno/env :
--tech <tech> --env <env> - ou par chemin explicite :
--input <fichier.yml>
Templates par techno
Le generateur cherche d'abord un template specifique :
infra/templates/<type>/<kind>.tpl
Puis applique un fallback generique :
infra/templates/<type>/generic.tpl
Commandes npm
npm run infra:generate:compose -- --tech elastic --env dev
npm run infra:generate:systemd -- --tech kafka --env dev
npm run infra:generate:k8s -- --tech postgresql --env dev
Sorties
Par defaut :
infra/generated/docker-compose/<definition>/infra/generated/systemd/<definition>/infra/generated/kubernetes/<definition>/
3) Flux recommande
- Mettre a jour la config applicative dans
config/yaml/*.yml. - Generer les
.env. - Mettre a jour ou creer les definitions infra dans
infra/definitions/*.yml. - Generer les artefacts d'infra (compose/systemd/k8s) selon la cible de deploiement.
- Verifier et versionner les definitions YAML et les templates.