mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-30 07:18:09 +02:00
- Extend certbundle task to ignore 'The service is down for maintenance or had an internal error' as a fatal failure. - Add debug/warning output when this error occurs, so playbook does not stop but logs the issue. - Ensure changed_when does not mark run as changed if only maintenance error was hit. Ref: https://chatgpt.com/share/68af4e15-24cc-800f-b1dd-6a5f2380e35a
39 lines
1.7 KiB
YAML
39 lines
1.7 KiB
YAML
- block:
|
|
- name: Install certbundle
|
|
include_role:
|
|
name: pkgmgr-install
|
|
vars:
|
|
package_name: certbundle
|
|
|
|
- name: Generate SAN certificate with certbundle
|
|
command: >-
|
|
certbundle
|
|
--domains "{{ current_play_domains_all | join(',') }}"
|
|
--certbot-email "{{ users.administrator.email }}"
|
|
--certbot-acme-challenge-method "{{ CERTBOT_ACME_CHALLENGE_METHOD }}"
|
|
--chunk-size 100
|
|
{% if CERTBOT_ACME_CHALLENGE_METHOD != 'webroot' %}
|
|
--certbot-credentials-file "{{ CERTBOT_CREDENTIALS_FILE }}"
|
|
--certbot-dns-propagation-seconds "{{ CERTBOT_DNS_PROPAGATION_WAIT_SECONDS }}"
|
|
{% else %}
|
|
--letsencrypt-webroot-path "{{ LETSENCRYPT_WEBROOT_PATH }}"
|
|
{% endif %}
|
|
{{ '--mode-test' if MODE_TEST | bool else '' }}
|
|
register: certbundle_result
|
|
changed_when: "'Certificate not yet due for renewal' not in certbundle_result.stdout"
|
|
failed_when: >
|
|
certbundle_result.rc != 0
|
|
and 'too many certificates' not in (certbundle_result.stderr | lower | default(''))
|
|
and 'the service is down for maintenance or had an internal error' not in (certbundle_result.stderr | lower | default(''))
|
|
|
|
- name: Warn if LetsEncrypt was down
|
|
when: "'the service is down for maintenance or had an internal error' in (certbundle_result.stderr | lower | default(''))"
|
|
debug:
|
|
msg: >
|
|
WARNING: Let's Encrypt responded with "service down for maintenance / internal error".
|
|
Certificate request skipped; please retry later.
|
|
|
|
- name: run the san tasks once
|
|
set_fact:
|
|
run_once_san_certs: true
|
|
when: run_once_san_certs is not defined |