L'historique d'Icinga DB etait exclu de la restauration (2026-09-30) : son environnement derive de l'AC d'Icinga, recreee a chaque reconstruction. L'AC est desormais un jeu de sauvegarde, remis avant api setup ; la base d'Icinga est restauree, et son schema n'est importe que sur une base vierge. Les temoins comparaient PostgreSQL par nombre de lignes et n'ont pas vu 412 lignes d'historique remplacees par 380 neuves. Ils comparent desormais par cle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
98 lines
4.9 KiB
YAML
98 lines
4.9 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 ;
|
|
#
|
|
# PLUS `icinga` (2026-10-07). On l'excluait : l'historique de supervision etait lie a
|
|
# l'environnement d'Icinga, que l'AC d'Icinga, recreee a chaque reconstruction, renouvelait
|
|
# — restauree, la base serait restee orpheline. L'AC est desormais sauvegardee et remise
|
|
# (jeu `icinga` de client_backup) : l'environnement survit, et l'historique avec lui.
|
|
serveur_postgresql_restauration_consommateurs_exclus:
|
|
- nextcloud
|
|
|
|
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) }}
|