Set-OPS-Public/roles/serveur_postgresql
Daniel Allaire 6e46ace4de sondes : les cinq qui manquaient le plus (autorite, base, annuaire, zones, edge)
CORRECTION DE COMPTE D ABORD. J avais annonce cinq groupes sans sonde. La
mesure en donne VINGT-SEPT : j avais compte ceux que j avais en tete, pas
ceux que le depot contient. Il en reste vingt-deux.

LES CINQ, PAR ORDRE DE DEGAT SILENCIEUX.

autorite (step_ca) — la plus urgente : nos certificats vivent 24 h, une AC
muette ne casse rien aujourd hui et casse TOUT demain, d un coup, sur les
21 machines. Elle surveille aussi l expiration de la RACINE, que personne
ne regarde parce qu elle vit des annees (relevee a 3642 jours).

base (postgresql) — une VRAIE requete, pas pg_isready : celui-ci dit que
le port repond, pas que la base sert. Plus le compte des connexions : a
saturation, chaque application tombe sans que la base ait l air morte.

annuaire (openldap) — elle COMPTE les entrees. Un annuaire vide repond
success a tout : le mensonge des sauvegardes vides, vert et sans contenu.

zones (powerdns) — un autoritatif sans zone repond NXDOMAIN a tout, ce qui
se lit comme « ce nom n existe pas ».

edge (nginx) — elle valide la configuration SUR DISQUE : nginx sert la
derniere valide, et une configuration cassee ne se voit qu au prochain
demarrage, souvent des mois plus tard.

Les cinq eprouvees vertes sur le sain puis rouges PAR PARAMETRE, sans
toucher a un service.

Etat : 20 sondes sur 19 roles, 23 services distincts, 70 instances, 67 au
vert. Les trois autres sont connues : deux sauvegardes sans donnee a
emporter, et Loki en delai de stabilisation apres redeploiement.

make prouver : CONFORME, 64 OK, 0 echec, 0 saute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 03:47:03 -04:00
..
defaults sondes : les cinq qui manquaient le plus (autorite, base, annuaire, zones, edge) 2026-09-10 03:47:03 -04:00
handlers Rendre le dry-run (--check) fiable sur les rôles applicatifs 2026-07-01 21:01:53 -04:00
meta sondes : les cinq qui manquaient le plus (autorite, base, annuaire, zones, edge) 2026-09-10 03:47:03 -04:00
tasks sondes : les cinq qui manquaient le plus (autorite, base, annuaire, zones, edge) 2026-09-10 03:47:03 -04:00
templates sondes : les cinq qui manquaient le plus (autorite, base, annuaire, zones, edge) 2026-09-10 03:47:03 -04:00
README.md Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00

serveur_postgresql

Installe et configure PostgreSQL (paquet Debian 13) comme base relationnelle partagée interne.

Rôle

  • Installe postgresql, postgresql-contrib et python3-psycopg2.
  • Détecte le cluster installé par Debian (/etc/postgresql/<version>/main).
  • Configure via un fichier conf.d/99-setops.conf : listen_addresses, port, password_encryption.
  • Gère pg_hba.conf : socket local en peer (administration), boucle locale et réseaux internes autorisés en scram-sha-256.
  • Active et démarre le service.
  • Provisionne optionnellement comptes et bases applicatifs (vides par défaut).

Réseau et sécurité

  • Écoute par défaut sur 127.0.0.1 et l'IP interne de l'hôte (ansible_host).
  • serveur_postgresql_reseaux_autorises ouvre l'accès aux clients internes (défaut 10.0.0.0/16).
  • Authentification scram-sha-256 (jamais md5/trust).
  • pg_hba.conf et la conf sont entièrement gérés par le rôle ; les modifications manuelles sont écrasées.

Variables principales

Variable Défaut Rôle
serveur_postgresql_version "" (auto) Version majeure du cluster
serveur_postgresql_port 5432 Port d'écoute
serveur_postgresql_ecoute 127.0.0.1 + IP interne listen_addresses
serveur_postgresql_reseaux_autorises ["10.0.0.0/16"] Réseaux clients en pg_hba
serveur_postgresql_methode_auth scram-sha-256 Méthode d'authentification
serveur_postgresql_parametres {} Réglages additionnels
serveur_postgresql_comptes [] Comptes applicatifs (mot de passe via Vault)
serveur_postgresql_bases [] Bases applicatives

Provisionnement applicatif

À déclarer quand un service en a besoin, mots de passe depuis Ansible Vault :

serveur_postgresql_comptes:
  - nom: keycloak
    mot_de_passe: "{{ vault_postgresql_keycloak }}"
serveur_postgresql_bases:
  - nom: keycloak
    proprietaire: keycloak

Registre partagé des bases applicatives

En plus des listes explicites, le rôle lit instance/plan/bases-donnees.yml (registre déclaratif) et crée chaque base + son compte propriétaire dont serveur vaut serveur_postgresql. Le mot de passe vient de la variable Vault nommée par le champ secret. Le rôle applicatif lit le même registre pour bâtir sa chaîne de connexion — secret partagé, source unique. Patron : 1 appli → 1 base → 1 owner → 1 chaîne de connexion. Voir l'en-tête de instance/plan/bases-donnees.yml.

Prérequis

  • Collection community.postgresql (ansible-galaxy collection install community.postgresql).

Hors périmètre

  • Sauvegardes (rôle/concern séparé), réplication, tuning avancé.