aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Segundo2023-04-20 12:16:02 +0200
committerChristian Segundo2023-04-20 12:16:02 +0200
commit8528ecb1102c9b09d5ad6213790eb1c0768fb7d7 (patch)
tree2b7a2a5e450b5995058fa5f0e7d60aad7ccc29be
downloadcertbot-dns-cloudflare-8528ecb1102c9b09d5ad6213790eb1c0768fb7d7.tar.gz
first commit
-rw-r--r--README.md19
-rw-r--r--defaults/main.yml5
-rw-r--r--meta/main.yml17
-rw-r--r--tasks/main.yaml39
-rw-r--r--vars/main.yaml3
5 files changed, 83 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f04f4c5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,19 @@
+# certbot_dns_cloudflare
+
+Wrapper of `geerlingguy.certbot` to generate certificates using DNS challenges and Cloudflare.
+
+## Example playbook
+
+```yaml
+---
+- hosts: foo
+ roles:
+ - role: someone_stole_my_name.certbot_dns_cloudflare
+ vars:
+ certbot_cloudflare_api_token: xxxxx
+ certbot_admin_email: foo@bar
+ certbot_certs:
+ - domains:
+ - "*.foo.bar"
+ - "foo.bar"
+```
diff --git a/defaults/main.yml b/defaults/main.yml
new file mode 100644
index 0000000..a344f54
--- /dev/null
+++ b/defaults/main.yml
@@ -0,0 +1,5 @@
+---
+certbot_auto_renew_user: root
+certbot_create_if_missing: true
+certbot_install_method: package
+certbot_create_method: standalone
diff --git a/meta/main.yml b/meta/main.yml
new file mode 100644
index 0000000..74b41be
--- /dev/null
+++ b/meta/main.yml
@@ -0,0 +1,17 @@
+galaxy_info:
+ role_name: certbot_dns_cloudflare
+ description: Generate certificates using DNS challenge and Cloudflare
+ namespace: someone_stole_my_name
+ author: Christian Segundo
+ license: BSD-3-Clause
+ min_ansible_version: "2.7"
+ platforms:
+ - name: Debian
+ galaxy_tags:
+ - certbot
+ - dns
+ - letsencrypt
+ - ssl
+ - tls
+dependencies:
+ - src: geerlingguy.certbot
diff --git a/tasks/main.yaml b/tasks/main.yaml
new file mode 100644
index 0000000..6d4e69d
--- /dev/null
+++ b/tasks/main.yaml
@@ -0,0 +1,39 @@
+---
+- name: Install certbot-dns-cloudflare
+ apt:
+ name: python3-certbot-dns-cloudflare
+
+- name: Create letsencrypt directory
+ file:
+ path: /etc/letsencrypt
+ state: directory
+ owner: root
+ group: root
+ mode: "0710"
+
+- name: Create letsencrypt configuration
+ copy:
+ dest: /etc/letsencrypt/cli.ini
+ owner: root
+ group: root
+ mode: "0700"
+ content: |
+ # Let's Encrypt site-wide configuration
+ dns-cloudflare-credentials = /etc/letsencrypt/dns-cloudflare.ini
+ # Use the ACME v2 staging URI for testing things
+ # server = https://acme-staging-v02.api.letsencrypt.org/directory
+ # Production ACME v2 API endpoint
+ server = https://acme-v02.api.letsencrypt.org/directory
+
+- name: Create dns-cloudflare configuration
+ copy:
+ dest: /etc/letsencrypt/dns-cloudflare.ini
+ owner: root
+ group: root
+ mode: "0700"
+ content: |
+ dns_cloudflare_api_token = {{ certbot_cloudflare_api_token }}
+
+- name: Create certificates
+ import_role:
+ name: geerlingguy.certbot
diff --git a/vars/main.yaml b/vars/main.yaml
new file mode 100644
index 0000000..ea1f792
--- /dev/null
+++ b/vars/main.yaml
@@ -0,0 +1,3 @@
+---
+certbot_create_standalone_stop_services: []
+certbot_create_command: "certbot certonly --noninteractive --dns-cloudflare --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"