Skip to content

Instantly share code, notes, and snippets.

@glitchcrab
Created August 7, 2018 20:11
Show Gist options
  • Save glitchcrab/73732f317aab9e7cfc19a92636898b0c to your computer and use it in GitHub Desktop.
Save glitchcrab/73732f317aab9e7cfc19a92636898b0c to your computer and use it in GitHub Desktop.
Wildcard LE cert retrieval
---
- hosts: localhost
gather_facts: no
vars:
tmpdir: "/tmp/le/"
account_key: "le-account-key.pem"
keyname: "star-domain-com-key.pem"
csrname: "star-domain-com.csr"
certname: "star-domain-com.pem"
fullchain: "star-domain-com-fullchain.pem"
common_name: "*.domain.com"
tasks:
- name: localhost | create temp dir
file:
path: "{{ tmpdir }}"
state: directory
- name: localhost | create temp account key
openssl_privatekey:
path: "{{ tmpdir }}{{ account_key }}"
- name: localhost | create private key
openssl_privatekey:
path: "{{ tmpdir }}{{ keyname }}"
- name: localhost | create CSR
openssl_csr:
path: "{{ tmpdir }}{{ csrname }}"
privatekey_path: "{{ tmpdir }}{{ keyname }}"
common_name: "{{ common_name }}"
country_name: GB
organization_name: my-OU
email_address: ops@domain.com
- name: LetsEncrypt | submit request
acme_certificate:
account_key_src: "{{ tmpdir }}{{ account_key }}"
account_email: me@domain.com
src: "{{ tmpdir }}{{ csrname }}"
fullchain_dest: "{{ tmpdir }}{{ certname }}"
challenge: dns-01
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
terms_agreed: yes
remaining_days: 60
register: challenge
- name: Memset | create DNS challenge record
memset_zone_record:
api_key: "{{ memset_dns_api_key }}"
state: present
zone: domain.com
type: TXT
record: "{{ challenge['challenge_data']['*.domain.com']['dns-01']['resource'] }}"
data: "{{ challenge['challenge_data']['*.domain.com']['dns-01']['resource_value'] }}"
- name: Memset | request DNS reload
memset_dns_reload:
api_key: "{{ memset_dns_api_key }}"
poll: true
- name: LetsEncrypt | retrieve cert
acme_certificate:
account_key_src: "{{ tmpdir }}{{ account_key }}"
account_email: me@domain.com
src: "{{ tmpdir }}{{ csrname }}"
dest: "{{ tmpdir }}{{ certname }}"
fullchain_dest: "{{ tmpdir }}{{ fullchain }}"
challenge: dns-01
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
terms_agreed: yes
remaining_days: 60
data: "{{ challenge }}"
register: cert_retrieval
- name: Memset | delete DNS challenge record
memset_zone_record:
api_key: "{{ memset_dns_api_key }}"
state: absent
zone: domain.com
type: TXT
record: "{{ challenge['challenge_data']['*.domain.com']['dns-01']['resource'] }}"
data: "{{ challenge['challenge_data']['*.domain.com']['dns-01']['resource_value'] }}"
when: cert_retrieval is changed
- name: localhost | remove the account key
file:
path: "{{ tmpdir }}{{ account_key }}"
state: absent
when: cert_retrieval is changed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment