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:
|
ansible.builtin.systemd:
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
listen: Recharger systemd
|
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"
|
path: "{{ client_pki_steppath }}/certs/root_ca.crt"
|
||||||
mode: "0644"
|
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:
|
ansible.builtin.command:
|
||||||
cmd: >-
|
cmd: >-
|
||||||
step ca certificate {{ client_pki_nom_cert }}
|
step ca certificate {{ client_pki_nom_cert }}
|
||||||
|
|
@ -80,9 +89,15 @@
|
||||||
--provisioner-password-file {{ client_pki_steppath }}/provisioner.pass
|
--provisioner-password-file {{ client_pki_steppath }}/provisioner.pass
|
||||||
{% for s in client_pki_sans | select | unique %}--san {{ s }} {% endfor %}
|
{% for s in client_pki_sans | select | unique %}--san {{ s }} {% endfor %}
|
||||||
--force
|
--force
|
||||||
creates: "{{ client_pki_cert }}"
|
|
||||||
environment:
|
environment:
|
||||||
STEPPATH: "{{ client_pki_steppath }}"
|
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
|
- name: Deployer l'unite systemd de renouvellement
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue