Set-OPS-Public/roles/serveur_postgresql/defaults/main.yml
Daniel Allaire 8a9da0c31a restauration : la reconstruction remet l'etat de l'incarnation precedente
Chaque role proprietaire (AC, bases, annuaire, Nextcloud, rspamd/DKIM,
courriel, forge, web) remet son etat au moment ou il le creerait neuf,
depuis le dernier instantane anterieur a la naissance de la machine.
La sauvegarde refuse de deposer tant qu'un etat d'avant attend.
Outil de noeud setops-restaurer ; cibles sauvegarder-maintenant,
restauration-etat, restauration-renoncer ; test_restauration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 02:39:22 -04:00

96 lines
4.7 KiB
YAML

---
serveur_postgresql_packages:
- postgresql
- postgresql-contrib
- python3-psycopg2 # requis par community.postgresql sur la cible
serveur_postgresql_service_name: "postgresql"
# Version majeure du cluster. Vide => detection automatique du cluster installe
# par Debian (repertoire sous /etc/postgresql/<version>/main).
serveur_postgresql_version: ""
# Reseau et acces.
serveur_postgresql_port: 5432
serveur_postgresql_ecoute:
- "127.0.0.1"
- "{{ ansible_host | default(ansible_default_ipv4.address, true) }}"
serveur_postgresql_reseaux_autorises:
- "10.0.0.0/16"
serveur_postgresql_methode_auth: "scram-sha-256"
# Reglages additionnels (vide => valeurs par defaut de Debian).
# Exemple : { shared_buffers: "256MB", work_mem: "16MB" }
serveur_postgresql_parametres: {}
# Nom du groupe serveur (pour filtrer le registre des bases applicatives).
# Le registre lui-meme (bases_donnees) est charge depuis instance/plan/bases-donnees.yml.
serveur_postgresql_groupe: "serveur_postgresql"
# Provisioning applicatif explicite. Vide par defaut : aucune base ni compte cree.
# Les mots de passe doivent venir d'Ansible Vault, jamais en clair.
serveur_postgresql_comptes: []
# - nom: keycloak
# mot_de_passe: "{{ vault_postgresql_keycloak }}"
# attributs: "LOGIN"
serveur_postgresql_bases: []
# - nom: keycloak
# proprietaire: keycloak
# --- TLS via le certificat d'hote step_ca (client_pki requis sur le noeud) ---
# Cote serveur : PostgreSQL sert le cert step_ca (verifiable contre root_ca), au lieu
# du snakeoil auto-signe. Non-bloquant : le TLS reste optionnel tant que pg_hba ne le force pas.
serveur_postgresql_tls_actif: false
serveur_postgresql_tls_source_cert: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.crt"
serveur_postgresql_tls_source_cle: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.key"
serveur_postgresql_tls_source_ca: "/etc/step/certs/root_ca.crt"
serveur_postgresql_tls_dir: "/var/lib/postgresql/tls"
# Verrou zero-confiance : hostssl dans pg_hba => refuse toute connexion NON-TLS.
# N'activer qu'apres avoir confirme que TOUS les clients sont en TLS (sinon coupure).
serveur_postgresql_tls_force: false
# --- Sonde de supervision -----------------------------------------------------------
serveur_postgresql_sonde_pct_avert: 70
serveur_postgresql_sonde_pct_crit: 90
# --- L'EXPORTATEUR DE METRIQUES -------------------------------------------------------
#
# Le pendant de la sonde : elle dit « est-ce casse ? », il dit « depuis quand, et vers
# ou ? ». Voir `meta/metriques.yml`, qui declare ce que le moteur en derive.
#
# UN COMPTE DEDIE, EN LECTURE SEULE, ET RIEN D'AUTRE. `pg_monitor` est un role fourni par
# PostgreSQL depuis la version 10 : il donne acces aux vues de statistiques et A ELLES
# SEULES — aucune donnee applicative. Faire tourner un exportateur en `postgres` serait
# donner les cles de la base pour lire des compteurs.
#
# LE MOT DE PASSE VIENT DE LA VOUTE, comme tous les autres. Vide, l'exportateur n'est pas
# pose du tout — degrader, jamais deviner, et surtout jamais un mot de passe par defaut.
serveur_postgresql_exportateur_actif: "{{ (vault_pg_exportateur | default('')) | length > 0 }}"
serveur_postgresql_exportateur_paquet: prometheus-postgres-exporter
serveur_postgresql_exportateur_service: prometheus-postgres-exporter
serveur_postgresql_exportateur_port: 9187
serveur_postgresql_exportateur_utilisateur: setops_metriques
serveur_postgresql_exportateur_mot_de_passe: "{{ vault_pg_exportateur | default('') }}"
# --- RESTAURATION (2026-09-30) — voir tasks/main.yml ---------------------------------
#
# Les bases que CE role ne rejoue pas, designees par leur `consommateur` au registre :
# - nextcloud : il se remet LUI-MEME, en fin de son role. Sa base, ses fichiers et sa
# configuration vont ensemble, et le code de ses applications (user_oidc,
# richdocuments) n'est pas sauvegarde : restauree avant son installation, la base
# les dirait installees sans qu'elles le soient, et `occ app:install` refuserait ;
# - icinga : l'historique de supervision, lie a l'environnement d'Icinga, que rien ne
# sauvegarde. Il repart de zero, comme le reste de la supervision.
serveur_postgresql_restauration_consommateurs_exclus:
- nextcloud
- icinga
serveur_postgresql_bases_restaurables: >-
{{ ((serveur_postgresql_registre | default([]))
| rejectattr('value.consommateur', 'defined') | map(attribute='value.base') | list)
+ ((serveur_postgresql_registre | default([]))
| selectattr('value.consommateur', 'defined')
| rejectattr('value.consommateur', 'in', serveur_postgresql_restauration_consommateurs_exclus)
| map(attribute='value.base') | list)
+ (serveur_postgresql_bases | map(attribute='nom') | list) }}