Files
pg-instance-handler/README.md
JeremyLARDENOIS 9108981868
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
feat: Initial commit
2026-03-01 14:53:04 +01:00

3.1 KiB
Raw Permalink Blame History

pg-instance-handler

Reconcilie des bases PostgreSQL à partir dun fichier YAML et gère leur cycle de vie (bases, utilisateurs, droits CONNECT, ownership).

Sommaire

  • Aperçu rapide
  • Démarrage rapide (Docker Compose)
  • Spécification YAML
  • Variables denvironnement
  • Build local et exécution
  • Opérations et sécurité
  • Dépannage

Aperçu rapide

  • Crée les bases manquantes et supprime celles non listées (sauf postgres).
  • Crée/actualise un utilisateur par base, lui donne laccès et lownership de la base.
  • Définition de létat désiré via un YAML monté dans le conteneur.

Code pertinent:

Démarrage rapide (Docker Compose)

  1. Préparez votre fichier YAML (exemple ci-dessous) à la racine du projet sous database.yaml.
  2. Lancez:
docker compose up --build

Le service va:

  • se connecter à PostgreSQL via DATABASE_URL (admin),
  • réconcilier les bases selon database.yaml,
  • créer/mettre à jour les utilisateurs et donner lownership,

Spécification YAML

Exemple minimal: database.yaml

databases:
  - name: hello
    user: hello_user
    password: hello_password
  • name: nom de la base à gérer
  • user: utilisateur propriétaire/consommateur de la base
  • password: mot de passe de cet utilisateur

Notes:

  • Les noms (name, user) sont validés (lettres, chiffres, underscore; commencent par lettre/underscore).
  • Le programme ne supprime jamais la base postgres.

Variables denvironnement

  • DATABASE_URL: URL admin PostgreSQL pour lorchestrateur (ex: postgres://postgres:postgres@postgres:5432/postgres).

Les exemples dENV sont indiqués dans docker-compose.yml.

Build local et exécution

cargo build

Exécution locale (besoin dun Postgres accessible et dun database.yaml):

export DATABASE_URL="postgres://postgres:postgres@localhost:5432/postgres"

cargo run

Opérations et sécurité

  • Suppression: par défaut, toute base non listée est supprimée (sauf postgres). Pour un MVP, gardez le YAML strict et versionné. On pourra ajouter un mode « dry-run » et/ou restreindre la gestion à un préfixe (ex: managed_).
  • Permissions: lutilisateur est LOGIN PASSWORD, reçoit CONNECT et devient owner de sa base.
  • Droits DB: DATABASE_URL doit pointer une base admin avec droits de création/suppression et gestion des rôles.

Dépannage

  • DROP DATABASE échoue: des connexions actives empêchent la suppression. Le programme essaie de terminer les sessions avant DROP; réessayez.

Contributions bienvenues. Pour toute évolution (dry-run, périmètre géré, migrations), ouvrez une issue/PR.