This repository has been archived on 2026-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
Set-OPS/roles/serveurs_postgresql
Daniel Allaire 25d0c73275 Gerer les bases de donnees par chaines de connexion (GUI + CLI)
Registre multi-serveurs (docs/bases-donnees.yml):
- Section serveurs_bd: serveurs de BD nommes (type/hote/port/groupe).
- Chaque base reference un serveur nomme; la chaine de connexion derivee fait
  le lien appli <-> BD. L'hote n'est plus code en dur dans les roles applicatifs.

Regles partagees (scripts/inventory_rules.py):
- charger_bases_donnees, valider_bases, chaine_connexion (GUI et CLI s'appuient dessus).

GUI (make inventaire-ui):
- Vue "Bases": serveurs, bases et chaines de connexion (mot de passe masque),
  gestion complete (ajout/edition/retrait), endpoint POST /api/bases (valide, jeton).

CLI (scripts/bases_donnees.py):
- lister/verifier/ajouter-serveur/ajouter-base/retirer-*; cibles make bases et
  bases-verifier; registre valide dans make inventaire-verifier.

Roles migres: serveurs_postgresql (filtre par serveur nomme relie a son groupe),
serveurs_keycloak / serveurs_forgejo / serveurs_icinga (hote et port depuis le registre).

Valide: ansible-lint (roles migres), node --check (JS), round-trips GUI et CLI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 19:14:12 -04:00
..
defaults Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00
handlers Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00
tasks Gerer les bases de donnees par chaines de connexion (GUI + CLI) 2026-06-22 19:14:12 -04:00
templates Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00
README.md Construire l'ecosysteme de services et outiller l'inventaire 2026-06-22 18:06:11 -04:00

serveurs_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-chezlepro.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).
  • serveurs_postgresql_reseaux_autorises ouvre l'accès aux clients internes (défaut 10.1.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
serveurs_postgresql_version "" (auto) Version majeure du cluster
serveurs_postgresql_port 5432 Port d'écoute
serveurs_postgresql_ecoute 127.0.0.1 + IP interne listen_addresses
serveurs_postgresql_reseaux_autorises ["10.1.0.0/16"] Réseaux clients en pg_hba
serveurs_postgresql_methode_auth scram-sha-256 Méthode d'authentification
serveurs_postgresql_parametres {} Réglages additionnels
serveurs_postgresql_comptes [] Comptes applicatifs (mot de passe via Vault)
serveurs_postgresql_bases [] Bases applicatives

Provisionnement applicatif

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

serveurs_postgresql_comptes:
  - nom: keycloak
    mot_de_passe: "{{ vault_postgresql_keycloak }}"
serveurs_postgresql_bases:
  - nom: keycloak
    proprietaire: keycloak

Registre partagé des bases applicatives

En plus des listes explicites, le rôle lit docs/bases-donnees.yml (registre déclaratif) et crée chaque base + son compte propriétaire dont serveur vaut serveurs_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 docs/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é.