--- # Devis PostgreSQL — RELEVE seul. Ne modifie rien (D-23). # # On interroge l'ETAT EFFECTIF (`pg_settings`), jamais les fichiers. Un `grep` de # `postgresql.conf` annonce `ssl_cert_file = snakeoil` sur cet hote, alors que le # serveur sert bien le certificat de l'AC interne : la valeur vient d'un # `conf.d/99-setops.conf` que le grep ne voyait pas. C'est l'instrument qui etait # incomplet, pas la configuration. Constate le 2026-08-08. # # make postgresql-plan - name: Devis PostgreSQL — chiffrement et portee des accès hosts: serveur_postgresql become: true gather_facts: false tasks: - name: Relever les réglages TLS effectifs ansible.builtin.command: argv: - sudo - -u - postgres - psql - -tAF| - -c - >- select name, setting from pg_settings where name in ('ssl','ssl_cert_file','ssl_key_file','ssl_ca_file') register: devis_pg_tls changed_when: false - name: Relever les règles d'accès effectives ansible.builtin.command: argv: - sudo - -u - postgres - psql - -tAF| - -c # `address` et `netmask` sont du TEXTE dans cette vue, pas des inet : on les # rend tels quels et Python les recompose. - >- select type, coalesce(address,''), coalesce(netmask,''), auth_method from pg_hba_file_rules where error is null order by rule_number register: devis_pg_hba changed_when: false - name: Déposer le relevé sur le contrôleur ansible.builtin.copy: dest: "{{ playbook_dir }}/../../instance/devis-postgresql.json.{{ inventory_hostname }}" mode: "0600" content: >- {{ { 'hote': inventory_hostname, 'supernet': setops_supernet | default(''), 'tls': devis_pg_tls.stdout_lines | default([]), 'hba': devis_pg_hba.stdout_lines | default([]), } | to_nice_json }} delegate_to: localhost become: false