--- 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//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) }}