client_pki : ré-émettre le cert sur dérive de SAN (fin du rm manuel)
Le garde 'creates:' sautait la ré-émission même quand les SAN voulus changeaient (ex: nouvelle exposition -> client_pki_sans mis à jour). Contourné 3× à la main ce soir. Corrigé : on lit les SAN du cert existant (openssl) et on ré-émet si le cert est absent OU si un SAN voulu manque, puis on recharge les consommateurs (client_pki_reload_services). Idempotent (SAN à jour -> sauté) + dérive détectée, prouvés. ansible-lint production : 0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
eee7dbd108
commit
c8ccbb5e97
2 changed files with 30 additions and 2 deletions
|
|
@ -3,3 +3,16 @@
|
|||
ansible.builtin.systemd:
|
||||
daemon_reload: true
|
||||
listen: Recharger systemd
|
||||
|
||||
# Apres une re-emission du cert (ex: nouveau SAN), recharger les services qui le
|
||||
# servent (nginx, postfix, slapd...) sinon ils continuent de servir l'ancien cert.
|
||||
- name: Recharger les consommateurs du cert
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
state: reloaded
|
||||
loop: "{{ client_pki_reload_services }}"
|
||||
loop_control:
|
||||
label: "{{ item }}"
|
||||
when:
|
||||
- not ansible_check_mode
|
||||
- client_pki_reload_services | length > 0
|
||||
|
|
|
|||
|
|
@ -71,7 +71,16 @@
|
|||
path: "{{ client_pki_steppath }}/certs/root_ca.crt"
|
||||
mode: "0644"
|
||||
|
||||
- name: Obtenir le certificat d'hote
|
||||
- name: Lire les SAN du certificat d'hote existant (detection de derive)
|
||||
ansible.builtin.command:
|
||||
cmd: "openssl x509 -in {{ client_pki_cert }} -noout -ext subjectAltName"
|
||||
register: client_pki_san_actuels
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
# Re-emet si le cert est absent OU si un SAN voulu manque (ex: nouvelle exposition
|
||||
# ajoutee au plan -> client_pki_sans mis a jour). Plus de garde 'creates' aveugle.
|
||||
- name: Obtenir / re-emettre le certificat d'hote (absent ou SAN derives)
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
step ca certificate {{ client_pki_nom_cert }}
|
||||
|
|
@ -80,9 +89,15 @@
|
|||
--provisioner-password-file {{ client_pki_steppath }}/provisioner.pass
|
||||
{% for s in client_pki_sans | select | unique %}--san {{ s }} {% endfor %}
|
||||
--force
|
||||
creates: "{{ client_pki_cert }}"
|
||||
environment:
|
||||
STEPPATH: "{{ client_pki_steppath }}"
|
||||
when: >-
|
||||
client_pki_san_actuels.rc != 0
|
||||
or (client_pki_sans | select | unique | reject('equalto', '')
|
||||
| reject('in', client_pki_san_actuels.stdout | default(''))
|
||||
| list | length > 0)
|
||||
changed_when: true
|
||||
notify: Recharger les consommateurs du cert
|
||||
|
||||
- name: Deployer l'unite systemd de renouvellement
|
||||
ansible.builtin.template:
|
||||
|
|
|
|||
Loading…
Reference in a new issue