[Infra] Installation PostgreSQL 17 #26
Labels
No labels
Compat/Breaking
EC01
EC02
EC03
EC04
EC05
EC06
Kind/BDD
Kind/Back
Kind/Bug
Kind/CICD
Kind/Cloud
Kind/Contenu
Kind/Data
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Front
Kind/IA
Kind/Infra
Kind/Monitoring
Kind/Security
Kind/Testing
Portée/Post-jury
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
ops/alerte
No milestone
No project
No assignees
2 participants
Notifications
Total time spent: 3 hours
Due date
olivier
3 hours
No due date set.
Blocks
#29 [infra] TimescaleDB, hypertables et compression
g2/enervision
#30 [infra] MLflow, registre de modèles
g2/enervision
Reference
g2/enervision#26
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Exigence couverte
No response
Épreuve servie
EC01 — Architecture
Ce qu'on veut obtenir
Un worker pour la base de donnée PostgreSQL 17 qui va contenir les différentes base de données :
Le but est de ségrégués chaque bdd en fonction de son rôle pour des raisons de sécurité.
Il y a en plus timescaledb en extension afin de garantir la rapidité pour la gestion des données en masse en temps réels
Il faut aussi mettre en place les backups de la bdd en local en cas de corruption de données
Critères d'acceptation
Comment on le vérifie
Cluster PostgreSQL :
Liste des BDD :
Liste des roles :
Preuve de ségrégation des bases :
Preuve de l'extension TimeScaleDB :
Manuel d'exploitation à mettre à jour
No response
Risque et retour arrière
No response
[infra] Installation PostgreSQL 17to [Infra] Installation PostgreSQL 17Relu ce midi, sur le serveur. Le travail est bon et va plus loin que le titre du ticket : la ségrégation base par base avec un rôle par usage,
grafana_roen lecture seule, aucun superutilisateur en dehors depostgres. C'est une vraie décision de conception, elle sert l'ENF-02 et elle se défendra bien à l'oral.Quatre points avant de fermer.
1. La sauvegarde ne passera pas cette nuit
/usr/local/bin/pg-backup.shsauvegardeenervision,keycloaketmlflow. La baseenervisionn'existe plus, elle a été scindée enenervision_prodetenervision_preprodaprès le dernier passage.Le script commence par
set -euo pipefail, donc il s'arrête à la première erreur. Cette nuit à 2h30, nienervision_prodnienervision_preprodne seront sauvegardées, et rien ne le signalera. Les seuls fichiers présents datent de 8h08.Correctif, une ligne :
L'ENF-05 fixe une perte maximale de 24 heures, c'est ce critère qui tombe.
2. L'accès distant est à trancher, pas à corriger
Le critère « remote access par role » est coché, donc l'ouverture réseau est voulue. Sauf qu'elle contredit l'ENF-14, qu'on a ratifiée hier : ce qui ne doit pas sortir écoute sur
127.0.0.1.Aujourd'hui la base répond sur
10.105.200.41:5433, avecufwouvert à tous ethost all all 0.0.0.0/0danspg_hba.conf. Vérifié depuis un poste : la connexion aboutit. Les quatre autres groupes de la salle n'ont qu'un mot de passe à franchir.Le besoin derrière est légitime — se connecter avec un client graphique depuis son portable. Le tunnel le sert sans rien exposer :
puis connexion sur
localhost:5433.Soit on part là-dessus, soit on assume l'ouverture et on révise l'ENF-14 en écrivant pourquoi. Les deux se défendent, mais il faut choisir et l'écrire. Je propose le tunnel.
3. Le port est 5433, pas 5432
Le plan d'adressage de
docs/EXIGENCES-collectives.mdannonce 5432. L'écart vient de l'installation :postgresql-16occupait 5432 quand le cluster 17 a été créé, il a pris le port suivant.Le plus simple est de corriger le document plutôt que de déplacer le cluster, mais il faut le faire avant que quelqu'un code une chaîne de connexion sur 5432.
4. Trois champs restés vides
Exigence couverte : vide. Ce ticket sert ENF-02, ENF-05 et ENF-14. C'est ce lien qui construit la chaîne exigence, ticket, commit, test.
Épreuve servie : marqué EC01. L'EC01 est déjà rendu. Ce travail sert l'EC04 pour la sécurisation et l'EC05 pour la donnée, et ce libellé décide à quelle preuve individuelle il comptera au jour 10.
Manuel d'exploitation : vide, et
docs/runbooks/ne contient que son README. L'ENF-16 demande un manuel par geste sensible : ici la restauration. La baseenervision_restore_testexiste déjà, donc la procédure est à moitié faite, il reste à l'écrire et à la faire rejouer par quelqu'un d'autre.Pour fermer
Le correctif de sauvegarde, l'arbitrage sur l'accès distant, le manuel de restauration, et les deux libellés remis droit. Le reste est acquis.
Dernier point, qui ne t'est pas adressé personnellement : tout a été fait sous le compte
rootpartagé, dont une connexion par mot de passe sans empreinte de clé. Le journal ne permet donc pas de t'attribuer ce travail, alors que l'ENF-15 l'exige. C'est de ma responsabilité, le durcissement SSH n'est pas appliqué. Je m'en occupe demain matin.Fermé. Sept critères sur huit sont tenus, et la documentation est allée plus loin que ce que le ticket demandait :
docs/POSTGRESQL.mdporte l'installation, la configuration, le script de sauvegarde corrigé et les écarts constatés,docs/runbooks/postgresql.mdporte les gestes.Le huitième critère, l'accès distant, sort de ce ticket. Il est repris au #65 : la base repasse en écoute locale et l'accès depuis les postes se fait par tunnel SSH, avec la fiche ADR qui va avec.
Deux suites sont ouvertes ailleurs plutôt que laissées en suspens ici. Le #64 versionne les scripts d'exploitation, qui vivent aujourd'hui uniquement sur le serveur avec une copie recopiée dans une page de documentation. Et l'écart n°4 que tu as identifié, l'absence d'alerte quand la sauvegarde échoue, reste à traiter : c'est ce qui a rendu la panne du 1er septembre muette.
Reste à corriger sur ce ticket avant qu'il serve de preuve au jour 10 : l'épreuve servie est marquée EC01, alors que ce travail sert l'EC04 pour la sécurisation et l'EC05 pour la donnée. Et le champ « exigence couverte » est vide, il devrait porter ENF-02, ENF-05 et ENF-14.