2020-05-21 20:25:55 +02:00
|
|
|
- name: Install ACME dependencies
|
2020-12-02 18:40:25 +01:00
|
|
|
package:
|
2020-05-21 20:25:55 +02:00
|
|
|
name: python3-acme
|
|
|
|
state: present
|
|
|
|
tags: acme_install
|
|
|
|
|
2020-12-02 18:40:25 +01:00
|
|
|
- name: Install SSL dependencies
|
|
|
|
package:
|
|
|
|
name: ssl-cert
|
|
|
|
state: present
|
|
|
|
|
2020-05-21 20:25:55 +02:00
|
|
|
- name: Create Let's Encrypt config directories
|
|
|
|
file:
|
|
|
|
path: "{{ config_dir }}"
|
|
|
|
state: directory
|
|
|
|
owner: root
|
|
|
|
group: "{{ acme_ssl_group }}"
|
|
|
|
mode: "711"
|
|
|
|
loop:
|
|
|
|
- "{{ acme_config_dir }}"
|
|
|
|
- "{{ acme_keys_dir }}"
|
|
|
|
- "{{ acme_accounts_dir }}"
|
|
|
|
- "{{ acme_csr_dir }}"
|
|
|
|
loop_control:
|
|
|
|
loop_var: config_dir
|
|
|
|
tags: acme_install
|
|
|
|
|
|
|
|
- name: Create challenge directory
|
|
|
|
file:
|
|
|
|
path: "{{ acme_challenge_dir }}/.well-known/acme-challenge"
|
|
|
|
state: directory
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "755"
|
|
|
|
tags: acme_install
|
|
|
|
|
|
|
|
- name: Perform ACME challenge for each domain
|
|
|
|
include_tasks:
|
|
|
|
file: acme_challenge.yml
|
|
|
|
apply:
|
|
|
|
tags: acme_challenge
|
|
|
|
loop: "{{ acme_domains | unique }}"
|
|
|
|
loop_control:
|
|
|
|
loop_var: domain_name
|
|
|
|
tags: acme_challenge
|
|
|
|
|
|
|
|
- name: Create directory for certificate renewal tool
|
|
|
|
file:
|
|
|
|
path: /opt/acme
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "755"
|
|
|
|
state: directory
|
|
|
|
tags: acme_renew
|
|
|
|
|
|
|
|
- name: Copy script to renew ACME certificates
|
|
|
|
copy:
|
|
|
|
src: acme_renew_cert.py
|
|
|
|
dest: /opt/acme/acme_renew_cert.py
|
|
|
|
owner: root
|
|
|
|
group: root
|
|
|
|
mode: "755"
|
|
|
|
tags: acme_renew
|
|
|
|
|
|
|
|
- name: Setup cron job for ACME certificates renewal of {{ domain_name }}
|
|
|
|
cron:
|
|
|
|
name: acme renew {{ domain_name }} cert
|
|
|
|
job: >-
|
|
|
|
bash -c 'sleep $((RANDOM \% 3600))' && /opt/acme/acme_renew_cert.py {{ domain_name }} -q
|
|
|
|
-a {{ (acme_accounts_dir + '/' + acme_account_key) | quote }}
|
|
|
|
-p {{ acme_keys_dir | quote }}/{domain}.pem
|
|
|
|
-r {{ acme_csr_dir | quote }}/{domain}.csr
|
|
|
|
-o {{ acme_certs_dir | quote }}/{domain}.d
|
|
|
|
-c {{ acme_challenge_dir | quote }}/.well-known/acme-challenge
|
|
|
|
minute: "30"
|
|
|
|
hour: "2"
|
|
|
|
state: present
|
|
|
|
loop: "{{ acme_domains | unique }}"
|
|
|
|
loop_control:
|
|
|
|
loop_var: domain_name
|
|
|
|
tags: acme_renew
|