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>
56 lines
2 KiB
YAML
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
|