91 lines
3.2 KiB
YAML
91 lines
3.2 KiB
YAML
|
- name: Create {{ domain_name }} certificates directory
|
||
|
file:
|
||
|
path: "{{ acme_certs_dir }}/{{ domain_name }}.d"
|
||
|
state: directory
|
||
|
owner: root
|
||
|
group: "{{ acme_ssl_group }}"
|
||
|
mode: "755"
|
||
|
tags: acme_install
|
||
|
|
||
|
- name: Generate Let's Encrypt account key
|
||
|
openssl_privatekey:
|
||
|
path: "{{ acme_accounts_dir }}/{{ acme_account_key }}"
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: "600"
|
||
|
type: RSA
|
||
|
size: 4096
|
||
|
tags: acme_account
|
||
|
|
||
|
- name: Generate Let's Encrypt private key for {{ domain_name }}
|
||
|
openssl_privatekey:
|
||
|
path: "{{ acme_keys_dir }}/{{ domain_name }}.pem"
|
||
|
owner: root
|
||
|
group: "{{ acme_ssl_group }}"
|
||
|
mode: "640"
|
||
|
type: RSA
|
||
|
size: 4096
|
||
|
|
||
|
- name: Generate Let's Encrypt CSR for {{ domain_name }}
|
||
|
openssl_csr:
|
||
|
path: "{{ acme_csr_dir }}/{{ domain_name }}.csr"
|
||
|
owner: root
|
||
|
group: "{{ acme_ssl_group }}"
|
||
|
mode: "644"
|
||
|
privatekey_path: "{{ acme_keys_dir }}/{{ domain_name }}.pem"
|
||
|
common_name: "{{ domain_name }}"
|
||
|
|
||
|
# - name: Check if Let's Encrypt certificate already exists for {{ domain_name }}
|
||
|
# stat:
|
||
|
# path: "{{ acme_certs_dir }}/{{ domain_name }}.d/cert.pem"
|
||
|
# register: _acme_cert_file
|
||
|
|
||
|
# - name: Check Let's Encrypt certificate expiration date for {{ domain_name }}
|
||
|
# openssl_certificate_info:
|
||
|
# path: "{{ acme_certs_dir }}/{{ domain_name }}.d/cert.pem"
|
||
|
# valid_at:
|
||
|
# thirty_days: "+30d"
|
||
|
# register: _acme_cert_validity
|
||
|
# when: _acme_cert_file.stat.isreg is defined and _acme_cert_file.stat.isreg
|
||
|
|
||
|
- name: Begin Let's Encrypt challenges for {{ domain_name }}
|
||
|
acme_certificate:
|
||
|
acme_directory: "{{ acme_directory }}"
|
||
|
acme_version: "{{ acme_version }}"
|
||
|
account_key_src: "{{ acme_accounts_dir }}/{{ acme_account_key }}"
|
||
|
account_email: "{{ acme_email }}"
|
||
|
terms_agreed: yes
|
||
|
challenge: http-01
|
||
|
csr: "{{ acme_csr_dir }}/{{ domain_name }}.csr"
|
||
|
dest: "{{ acme_certs_dir }}/{{ domain_name }}.d/cert.pem"
|
||
|
fullchain_dest: "{{ acme_certs_dir }}/{{ domain_name }}.d/fullchain.pem"
|
||
|
remaining_days: 30
|
||
|
register: _acme_challenge
|
||
|
# when: _acme_cert_validity is skipped or not _acme_cert_validity.valid_at.thirty_days
|
||
|
|
||
|
- debug:
|
||
|
var: _acme_challenge
|
||
|
|
||
|
# - name: Implement and complete Let's Encrypt challenge for {{ domain_name }}
|
||
|
# when: _acme_challenge is not skipped
|
||
|
# block:
|
||
|
# - name: Implement http-01 challenge files for {{ domain_name }}
|
||
|
# copy:
|
||
|
# content: "{{ _acme_challenge.challenge_data[domain_name]['http-01'].resource_value }}"
|
||
|
# dest: "{{ acme_challenge_dir }}/{{ _acme_challenge.challenge_data[domain_name]['http-01'].resource }}"
|
||
|
# owner: root
|
||
|
# group: root
|
||
|
# mode: "644"
|
||
|
|
||
|
# - name: Complete Let's Encrypt challenges for {{ domain_name }}
|
||
|
# acme_certificate:
|
||
|
# acme_directory: "{{ acme_directory }}"
|
||
|
# acme_version: "{{ acme_version }}"
|
||
|
# account_key_src: "{{ acme_accounts_dir }}/{{ acme_account_key }}"
|
||
|
# account_email: "{{ acme_email }}"
|
||
|
# challenge: http-01
|
||
|
# csr: "{{ acme_csr_dir }}/{{ domain_name }}.csr"
|
||
|
# dest: "{{ acme_certs_dir }}/{{ domain_name }}.d/cert.pem"
|
||
|
# chain_dest: "{{ acme_certs_dir }}/{{ domain_name }}.d/chain.pem"
|
||
|
# fullchain_dest: "{{ acme_certs_dir }}/{{ domain_name }}.d/fullchain.pem"
|
||
|
# data: "{{ _acme_challenge }}"
|