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/serveur_postgresql/README.md
Daniel Allaire ca0f95da28 Mettre les noms de roles et playbooks au singulier
serveurs_* -> serveur_, clients_ -> client_, suffixes pluriels au
singulier (serveur_web_dorsal/frontal, client_metrique, client_journal).

Renommage par tokens exacts : repertoires de roles, playbooks de groupes,
group_vars, variables internes des roles (serveur_nginx_*, conformite
ansible-lint), groupes du plan, constantes de code, docs. Faux-amis
preserves (serveurs_bd, scripts/serveurs.py, fonctions Python). Groupes
d'etat gardes au pluriel (hotes_actifs/planifies, modeles_vm).

Valide : ansible-lint 0 echec (0 var-naming), diff vide de la generation,
node --check, tous les registres. Ajout de .ansible-lint excluant docs/
(registres de donnees, pas du contenu Ansible).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 23:18:52 -04:00

2.7 KiB

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-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).
  • serveur_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
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.1.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 docs/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 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é.