docs: installation, configuration et manuel d'exploitation de PostgreSQL 17 #52

Merged
florian merged 10 commits from olivier/docs/postgresql-17 into develop 2026-09-01 13:07:12 +00:00
Member

Documente l'installation PostgreSQL 17 du serveur 10.105.200.41 et les gestes d'exploitation qui vont avec. Deux documents, aucun code applicatif touché.

Ce que la branche apporte

Fichier Contenu
docs/POSTGRESQL.md État constaté : paquets et dépôts tiers, cluster 17/main sur 5433, configuration réellement lue, bases et rôles, accès réseau, sauvegarde, procédure de réinstallation, écarts relevés
docs/runbooks/postgresql.md Manuel : se connecter, contrôler, relancer, diagnostiquer, sauvegarder et restaurer, arbre de décision, journal des incidents
docs/runbooks/README.md Index des manuels

Ce qui garantit que la doc est juste

Toutes les commandes publiées ont été exécutées sur le serveur, requêtes SQL de diagnostic comprises. Rien n'est recopié d'une documentation en ligne. La procédure de restauration a été jouée sur une base jetable créée puis supprimée : pg_restore en code 0.

Deux affirmations ont été corrigées après vérification plutôt que laissées au plausible : le réseau de rattachement est un /16 et non un /24, et Postfix est bien installé et livre en local — ce qui change la raison de l'absence d'alerte, pas la conclusion.

Ce que le relecteur devrait regarder en priorité

Le tableau des douze écarts en fin de docs/POSTGRESQL.md. Quatre sont classés hauts et se traitent avant la démonstration :

  1. pg_hba.conf et UFW ouvrent le port 5433 à 0.0.0.0/0.
  2. /var/lib/postgresql/.psql_history contient les mots de passe des cinq rôles en clair.
  3. Aucun magasin de mots de passe partagé : un seul membre du groupe peut se connecter en rôle applicatif.
  4. Aucune alerte si la sauvegarde échoue.

L'écart n°12 concerne l'API : services/api/.env.example et le défaut de config.py visent localhost:5432/enervision — port, base et rôle tous périmés depuis la scission. Le choix du défaut, préproduction ou production, demande un arbitrage et n'est pas tranché ici.

Lien avec le serveur

Le correctif de la sauvegarde (pg-backup.sh nommait encore la base enervision, supprimée à la scission) a été appliqué sur le serveur et vérifié : script rejoué en code 0, les cinq vidages produits, archives lisibles. Il ne figure pas dans cette branche, le script n'étant pas versionné. Son contenu corrigé est reproduit dans docs/POSTGRESQL.md, et l'incident est consigné au journal du manuel.

L'exigence ENF-05 (perte maximale 24 heures) tenait à cette correction.

Vérification attendue du relecteur

  • La liste des écarts est-elle complète et bien priorisée ?
  • L'arbitrage de l'écart n°12 (préproduction ou production par défaut) vous revient-il ou revient-il au Tech Lead ?
  • Faut-il verser pg-backup.sh au dépôt, dans infra/ansible/, plutôt que de le laisser vivre seul sur le serveur ?

🤖 Generated with Claude Code

Documente l'installation PostgreSQL 17 du serveur `10.105.200.41` et les gestes d'exploitation qui vont avec. Deux documents, aucun code applicatif touché. ## Ce que la branche apporte | Fichier | Contenu | |---|---| | `docs/POSTGRESQL.md` | État constaté : paquets et dépôts tiers, cluster 17/main sur 5433, configuration réellement lue, bases et rôles, accès réseau, sauvegarde, procédure de réinstallation, écarts relevés | | `docs/runbooks/postgresql.md` | Manuel : se connecter, contrôler, relancer, diagnostiquer, sauvegarder et restaurer, arbre de décision, journal des incidents | | `docs/runbooks/README.md` | Index des manuels | ## Ce qui garantit que la doc est juste **Toutes les commandes publiées ont été exécutées sur le serveur**, requêtes SQL de diagnostic comprises. Rien n'est recopié d'une documentation en ligne. La procédure de restauration a été jouée sur une base jetable créée puis supprimée : `pg_restore` en code 0. Deux affirmations ont été corrigées après vérification plutôt que laissées au plausible : le réseau de rattachement est un `/16` et non un `/24`, et Postfix est bien installé et livre en local — ce qui change la raison de l'absence d'alerte, pas la conclusion. ## Ce que le relecteur devrait regarder en priorité Le tableau des **douze écarts** en fin de `docs/POSTGRESQL.md`. Quatre sont classés hauts et se traitent avant la démonstration : 1. `pg_hba.conf` et UFW ouvrent le port 5433 à `0.0.0.0/0`. 2. `/var/lib/postgresql/.psql_history` contient les mots de passe des cinq rôles en clair. 3. Aucun magasin de mots de passe partagé : un seul membre du groupe peut se connecter en rôle applicatif. 4. Aucune alerte si la sauvegarde échoue. L'écart n°12 concerne l'API : `services/api/.env.example` et le défaut de `config.py` visent `localhost:5432/enervision` — port, base et rôle tous périmés depuis la scission. Le choix du défaut, préproduction ou production, demande un arbitrage et n'est pas tranché ici. ## Lien avec le serveur Le correctif de la sauvegarde (`pg-backup.sh` nommait encore la base `enervision`, supprimée à la scission) **a été appliqué sur le serveur** et vérifié : script rejoué en code 0, les cinq vidages produits, archives lisibles. Il ne figure pas dans cette branche, le script n'étant pas versionné. Son contenu corrigé est reproduit dans `docs/POSTGRESQL.md`, et l'incident est consigné au journal du manuel. L'exigence **ENF-05** (perte maximale 24 heures) tenait à cette correction. ## Vérification attendue du relecteur - La liste des écarts est-elle complète et bien priorisée ? - L'arbitrage de l'écart n°12 (préproduction ou production par défaut) vous revient-il ou revient-il au Tech Lead ? - Faut-il verser `pg-backup.sh` au dépôt, dans `infra/ansible/`, plutôt que de le laisser vivre seul sur le serveur ? 🤖 Generated with [Claude Code](https://claude.com/claude-code)
État constaté du cluster 17/main sur 10.105.200.41 : paquets et dépôts
tiers, port 5433, les trois fichiers de configuration réellement lus,
bases, rôles et accès réseau. Chaque réglage porte son motif.
Script, planification, rétention et format des vidages. Dit aussi ce que
le dispositif ne couvre pas, au regard de l'exigence ENF-05.
Séquence complète, des dépôts tiers jusqu'à la première sauvegarde.
L'ordre compte : la configuration est posée avant la création des rôles.
Douze écarts, chacun avec sa gravité et son correctif. Les quatre premiers
touchent l'exposition réseau, les mots de passe et l'absence d'alerte de
sauvegarde.
Se connecter, contrôler l'état en quatre commandes, et relancer le
service. Toutes les commandes du manuel ont été exécutées sur le serveur.
Connexions, requêtes longues, verrous bloquants, transactions oubliées,
disque, VACUUM, tâches TimescaleDB et lecture du journal.
Contrôler qu'un vidage est valide, le relancer à la main, et restaurer :
à côté d'abord, en écrasement ensuite.
Du 503 de l'API jusqu'à la cause, pour ne pas chercher au hasard en
pleine panne.
La boucle du script nommait encore la base enervision, supprimée à la
scission en enervision_prod et enervision_preprod. Symptôme, portée,
correctif appliqué et preuve d'exécution.
docs: indexe le manuel PostgreSQL dans les runbooks
All checks were successful
Intégration / Qualité du code Python (pull_request) Successful in 3s
Intégration / Tests unitaires (pull_request) Successful in 3s
Intégration / Aucun secret commité (pull_request) Successful in 3s
43e893c239
Table des manuels disponibles et liste de ce qui reste à écrire.
florian added this to the EnerVision project 2026-09-01 12:52:34 +00:00
Member

LGTM

LGTM
florian merged commit e7d6cae92b into develop 2026-09-01 13:07:12 +00:00
gabriel removed this from the EnerVision project 2026-09-03 16:11:22 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
g2/enervision!52
No description provided.