This repository has been archived on 2026-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
Set-OPS/docs/bases-donnees.yml
Daniel Allaire abd6395a13 Faire de l'application une entite de premiere classe (BD multi-portee)
Une VM peut porter plusieurs applications ; c'est l'application, pas l'hote,
a laquelle une base se lie via son DSN.

- docs/applications.yml : nouveau registre application -> groupe, hote.
- docs/bases-donnees.yml : champ 'portee' (application|groupe|hote, defaut
  groupe). Une application A (groupe G, hote H) recoit les bases ou
  (portee=application ET consommateur=A) OU (portee=groupe ET consommateur=G)
  OU (portee=hote ET consommateur=H). Plusieurs DSN par application.
- inventory_rules.py : charger/valider_applications, applications_de_hote,
  bases_de_application, PORTEES_BD ; valider_bases croise portee=application
  avec le registre des applications.
- CLI : scripts/applications.py + bases_donnees.py --portee ; cibles make
  applications / applications-verifier ; integre a inventaire-verifier.
- GUI : vue Applications (CRUD), portee + consommateur dynamique dans Bases,
  vue Chaine par application (DSN resolus par hote).
- filter_plugins/registres.py : meme regle de resolution exposee a Ansible
  (source unique). Playbooks web_dorsaux/web_frontaux iterent sur les
  applications de l'hote (scaffold ; deploiement applicatif s'y insere).

Services en grappe (keycloak/icingadb/forgejo) restent en portee groupe.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:38:30 -04:00

56 lines
2 KiB
YAML

---
# Registre des bases de donnees applicatives Set-OPS.
#
# Niveaux :
# serveurs_bd : les serveurs de base de donnees (un ou plusieurs), nommes.
# "groupe" relie un serveur nomme au groupe Ansible qui l'heberge.
# bases_donnees: une base = un identifiant unique -> serveur, base, proprietaire, secret.
# consommateur : QUI utilise la base. Interprete selon "portee" :
# portee=application : consommateur = id d'une application (docs/applications.yml)
# portee=groupe : consommateur = groupe operationnel (base PARTAGEE)
# portee=hote : consommateur = hote de l'inventaire
# Defaut : groupe (retrocompatible).
# usage : etiquette libre (principale, partagee, ...). Une appli peut avoir
# plusieurs bases (portee/usage differents).
#
# Une application A (groupe G, hote H) recoit les bases ou :
# (portee=application ET consommateur=A) OU (portee=groupe ET consommateur=G)
# OU (portee=hote ET consommateur=H). Plusieurs DSN par application sont possibles.
#
# La chaine de connexion (DSN) se derive : <type>://<proprietaire>:<secret>@<hote>:<port>/<base>
# C'est le DSN qui lie la bonne instanciation d'application a sa base.
#
# "secret" nomme une variable Ansible Vault (jamais le mot de passe en clair).
serveurs_bd:
pg-principal:
type: postgres
hote: "10.1.13.11"
port: 5432
groupe: serveurs_postgresql
bases_donnees:
keycloak:
serveur: pg-principal
base: keycloak
proprietaire: keycloak
secret: vault_bd_keycloak
consommateur: serveurs_keycloak
portee: groupe
usage: principale
icingadb:
serveur: pg-principal
base: icingadb
proprietaire: icingadb
secret: vault_bd_icingadb
consommateur: serveurs_icinga
portee: groupe
usage: principale
forgejo:
serveur: pg-principal
base: forgejo
proprietaire: forgejo
secret: vault_bd_forgejo
consommateur: serveurs_forgejo
portee: groupe
usage: principale