Aller au contenu principal

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.yml
  • config/yaml/prod.yml

Puis generees en fichiers .env :

  • centralises : config/env/<env>/*.env
  • miroirs projet :
    • central/saturn/.env
    • central/venus/.env
    • central/mercure/.env
    • central/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.yml
  • infra/definitions/kafka.dev.yml
  • infra/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

  1. Mettre a jour la config applicative dans config/yaml/*.yml.
  2. Generer les .env.
  3. Mettre a jour ou creer les definitions infra dans infra/definitions/*.yml.
  4. Generer les artefacts d'infra (compose/systemd/k8s) selon la cible de deploiement.
  5. Verifier et versionner les definitions YAML et les templates.