2016-06-27 22:52:39 +02:00
---
2021-03-19 22:39:30 +01:00
# Use acme.sh instead of certbot because they only support installation via
# snap now.
2018-04-26 10:00:47 +02:00
- block :
2023-08-23 21:22:51 +02:00
- name : Remove certbot
ansible.builtin.apt :
name : certbot
state : absent
2021-03-19 22:39:30 +01:00
2023-08-23 21:22:51 +02:00
- name : Remove old certbot post and pre hooks for nginx
ansible.builtin.file :
dest : "{{ item }}"
state : absent
with_items :
- /etc/letsencrypt/renewal-hooks/pre/stop-nginx.sh
- /etc/letsencrypt/renewal-hooks/post/start-nginx.sh
2021-03-19 22:39:30 +01:00
2023-08-23 21:22:51 +02:00
- name : Check if acme.sh is installed
ansible.builtin.stat :
path : "{{ letsencrypt_acme_home }}"
register : acme_home
2021-09-27 12:40:17 +02:00
2023-08-23 21:22:51 +02:00
- name : Download acme.sh
ansible.builtin.get_url :
url : https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh
dest : "{{ letsencrypt_acme_script_temp }}"
mode : "0700"
register : acme_download
when : not acme_home.stat.exists
2021-03-19 22:39:30 +01:00
2023-08-23 21:22:51 +02:00
# Run the "install" for acme.sh so it creates the .acme.sh dir (currently I
# have to chdir to the /root directory where the script exists or else it
# fails. Ansible runs it, but the script can't find itself...).
- name : Install acme.sh
ansible.builtin.command :
cmd : "{{ letsencrypt_acme_script_temp }} --install --no-profile --no-cron"
creates : "{{ letsencrypt_acme_home }}/acme.sh"
chdir : /root
register : acme_install
when : acme_download is changed
2021-09-27 12:40:17 +02:00
2023-08-23 21:22:51 +02:00
- name : Remove temporary acme.sh script
ansible.builtin.file :
dest : "{{ letsencrypt_acme_script_temp }}"
state : absent
when :
- acme_install.rc is defined
- acme_install.rc == 0
2021-09-27 10:28:02 +02:00
2023-08-23 21:22:51 +02:00
- name : Set default certificate authority for acme.sh
ansible.builtin.command :
cmd : "{{ letsencrypt_acme_home }}/acme.sh --set-default-ca --server letsencrypt"
2021-09-27 10:28:02 +02:00
2023-08-23 21:22:51 +02:00
- name : Prepare Let's Encrypt well-known directory
ansible.builtin.file :
state : directory
path : /var/lib/letsencrypt/.well-known
owner : root
group : nginx
mode : g+s
2021-03-19 22:39:30 +01:00
2023-08-23 21:22:51 +02:00
- name : Copy systemd service to renew Let's Encrypt certs
ansible.builtin.template :
src : renew-letsencrypt.service.j2
dest : /etc/systemd/system/renew-letsencrypt.service
mode : "0644"
owner : root
group : root
2018-04-26 10:00:47 +02:00
2023-08-23 21:22:51 +02:00
- name : Copy systemd timer to renew Let's Encrypt certs
ansible.builtin.copy :
src : renew-letsencrypt.timer
dest : /etc/systemd/system/renew-letsencrypt.timer
mode : "0644"
owner : root
group : root
2021-03-19 22:39:30 +01:00
2023-08-23 21:22:51 +02:00
# always issues daemon-reload just in case the service/timer changed
- name : Start and enable systemd timer to renew Let's Encrypt certs
ansible.builtin.systemd :
name : renew-letsencrypt.timer
state : started
enabled : true
daemon_reload : true
2020-06-06 19:38:08 +02:00
2023-08-23 21:22:51 +02:00
when : (ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('20.04', '==')) or (ansible_distribution == 'Debian' and ansible_distribution_version
is version('11', '>='))
2018-04-25 19:03:32 +02:00
tags : letsencrypt
2016-06-27 22:52:39 +02:00
# vim: set ts=2 sw=2: