diff options
| author | Piotr Parczewski <piotr@stackhpc.com> | 2024-11-19 14:53:49 +0100 |
|---|---|---|
| committer | Piotr Parczewski <piotr@stackhpc.com> | 2024-12-16 11:11:38 +0100 |
| commit | a349ca19a297d4cccd78b2cd04b5e52cfa0792ef (patch) | |
| tree | 818b21daa4559d0f9f951a46f4a1b0330643c37a | |
| parent | 4ac270174070b0b42e32cc005ff04d482d7650d5 (diff) | |
| download | kolla-ansible-a349ca19a297d4cccd78b2cd04b5e52cfa0792ef.tar.gz kolla-ansible-a349ca19a297d4cccd78b2cd04b5e52cfa0792ef.zip | |
Add Let's Encrypt EAB support
Depends-on: https://review.opendev.org/c/openstack/kolla/+/916617
Change-Id: I57f621e5480db7caa7c939b31cb4080d51d02ff0
| -rw-r--r-- | ansible/roles/letsencrypt/defaults/main.yml | 2 | ||||
| -rw-r--r-- | ansible/roles/letsencrypt/tasks/precheck.yml | 11 | ||||
| -rw-r--r-- | ansible/roles/letsencrypt/templates/letsencrypt-lego-run.sh.j2 | 4 | ||||
| -rw-r--r-- | etc/kolla/globals.yml | 7 | ||||
| -rw-r--r-- | releasenotes/notes/add-letsencrypt-eab-support-7951e7a572718ce9.yaml | 4 |
5 files changed, 26 insertions, 2 deletions
diff --git a/ansible/roles/letsencrypt/defaults/main.yml b/ansible/roles/letsencrypt/defaults/main.yml index c839b747b..e0287add4 100644 --- a/ansible/roles/letsencrypt/defaults/main.yml +++ b/ansible/roles/letsencrypt/defaults/main.yml @@ -57,3 +57,5 @@ letsencrypt_external_fqdns: - "{{ kolla_external_fqdn }}" letsencrypt_internal_fqdns: - "{{ kolla_internal_fqdn }}" + +letsencrypt_external_account_binding: "no" diff --git a/ansible/roles/letsencrypt/tasks/precheck.yml b/ansible/roles/letsencrypt/tasks/precheck.yml index b1462dbad..f23245710 100644 --- a/ansible/roles/letsencrypt/tasks/precheck.yml +++ b/ansible/roles/letsencrypt/tasks/precheck.yml @@ -31,3 +31,14 @@ when: - enable_letsencrypt | bool - kolla_enable_tls_external | bool + +- name: Validating letsencrypt EAB variables + run_once: true + assert: + that: + - letsencrypt_eab_key_id != "" + - letsencrypt_eab_hmac != "" + fail_msg: "Both letsencrypt_eab_key_id and letsencrypt_eab_hmac must be set when External account binding is turned on." + when: + - enable_letsencrypt | bool + - letsencrypt_external_account_binding | bool diff --git a/ansible/roles/letsencrypt/templates/letsencrypt-lego-run.sh.j2 b/ansible/roles/letsencrypt/templates/letsencrypt-lego-run.sh.j2 index 5c472f706..743f39094 100644 --- a/ansible/roles/letsencrypt/templates/letsencrypt-lego-run.sh.j2 +++ b/ansible/roles/letsencrypt/templates/letsencrypt-lego-run.sh.j2 @@ -4,11 +4,11 @@ {% if 'external' in letsencrypt_managed_certs and kolla_external_fqdn != kolla_external_vip_address %} # External Certificates -/usr/bin/letsencrypt-certificates --external --fqdns {% for fqdn in letsencrypt_external_fqdns %}{{ fqdn }}{% if not loop.last %},{% endif %}{% endfor %} --days {{ letsencrypt_cert_valid_days }} --port {{ letsencrypt_webserver_port }} --mail {{ letsencrypt_email }} --acme {{ letsencrypt_external_cert_server }} --vips {% if not kolla_same_external_internal_vip %}{{ kolla_external_vip_address }},{% endif %}{{ kolla_internal_vip_address }} --haproxies-ssh {% for host in groups['loadbalancer'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ haproxy_ssh_port }}{% if not loop.last %},{% endif %}{% endfor %} 2>&1 | tee -a /var/log/kolla/letsencrypt/letsencrypt-lego.log +/usr/bin/letsencrypt-certificates --external --fqdns {% for fqdn in letsencrypt_external_fqdns %}{{ fqdn }}{% if not loop.last %},{% endif %}{% endfor %} --days {{ letsencrypt_cert_valid_days }} --port {{ letsencrypt_webserver_port }} --mail {{ letsencrypt_email }} --acme {{ letsencrypt_external_cert_server }} --vips {% if not kolla_same_external_internal_vip %}{{ kolla_external_vip_address }},{% endif %}{{ kolla_internal_vip_address }} --haproxies-ssh {% for host in groups['loadbalancer'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ haproxy_ssh_port }}{% if not loop.last %},{% endif %}{% endfor %}{% if letsencrypt_external_account_binding | bool %} --eab --hmac {{ letsencrypt_eab_hmac }} --kid {{ letsencrypt_eab_key_id }}{% endif %} 2>&1 | tee -a /var/log/kolla/letsencrypt/letsencrypt-lego.log {% endif %} {% if 'internal' in letsencrypt_managed_certs and kolla_internal_fqdn != kolla_internal_vip_address %} # Internal Certificates -/usr/bin/letsencrypt-certificates --internal --fqdns {% for fqdn in letsencrypt_internal_fqdns %}{{ fqdn }}{% if not loop.last %},{% endif %}{% endfor %} --days {{ letsencrypt_cert_valid_days }} --port {{ letsencrypt_webserver_port }} --mail {{ letsencrypt_email }} --acme {{ letsencrypt_internal_cert_server }} --vips {% if not kolla_same_external_internal_vip %}{{ kolla_external_vip_address }},{% endif %}{{ kolla_internal_vip_address }} --haproxies-ssh {% for host in groups['loadbalancer'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ haproxy_ssh_port }}{% if not loop.last %},{% endif %}{% endfor %} 2>&1 | tee -a /var/log/kolla/letsencrypt/letsencrypt-lego.log +/usr/bin/letsencrypt-certificates --internal --fqdns {% for fqdn in letsencrypt_internal_fqdns %}{{ fqdn }}{% if not loop.last %},{% endif %}{% endfor %} --days {{ letsencrypt_cert_valid_days }} --port {{ letsencrypt_webserver_port }} --mail {{ letsencrypt_email }} --acme {{ letsencrypt_internal_cert_server }} --vips {% if not kolla_same_external_internal_vip %}{{ kolla_external_vip_address }},{% endif %}{{ kolla_internal_vip_address }} --haproxies-ssh {% for host in groups['loadbalancer'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ haproxy_ssh_port }}{% if not loop.last %},{% endif %}{% endfor %}{% if letsencrypt_external_account_binding | bool %} --eab --hmac {{ letsencrypt_eab_hmac }} --kid {{ letsencrypt_eab_key_id }}{% endif %} 2>&1 | tee -a /var/log/kolla/letsencrypt/letsencrypt-lego.log {% endif %} {{ cron_cmd }} diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 1c0ee0371..2afc0a155 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -281,6 +281,13 @@ workaround_ansible_issue_8743: yes # attempt to renew Let's Encrypt certificate every 12 hours #letsencrypt_cron_renew_schedule: "0 */12 * * *" +#################### +# LetsEncrypt external account binding options +#################### +#letsencrypt_external_account_binding: "no" +#letsencrypt_eab_hmac: "" +#letsencrypt_eab_key_id: "" + ################ # Region options ################ diff --git a/releasenotes/notes/add-letsencrypt-eab-support-7951e7a572718ce9.yaml b/releasenotes/notes/add-letsencrypt-eab-support-7951e7a572718ce9.yaml new file mode 100644 index 000000000..ac473fb0d --- /dev/null +++ b/releasenotes/notes/add-letsencrypt-eab-support-7951e7a572718ce9.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Adds support for external account binding (EAB) in Let's Encrypt. |
