From 9f2ebc2cce3af0e685677c23f2098c115e034adf Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Thu, 13 Aug 2026 16:35:47 +0100 Subject: move ansible/ dir to root --- roles/tls/files/certbot.fact | 35 +++++++++++++++ roles/tls/files/ovh-dns-credentials.ini | 14 ++++++ roles/tls/tasks/main.yml | 76 +++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 roles/tls/files/certbot.fact create mode 100644 roles/tls/files/ovh-dns-credentials.ini create mode 100644 roles/tls/tasks/main.yml (limited to 'roles/tls') diff --git a/roles/tls/files/certbot.fact b/roles/tls/files/certbot.fact new file mode 100644 index 0000000..baa43bb --- /dev/null +++ b/roles/tls/files/certbot.fact @@ -0,0 +1,35 @@ +#!/bin/sh + +certbot_certificates_output="$(certbot certificates 2>/dev/null)" +certificates="$(echo "$certbot_certificates_output" | grep "Certificate Name:" | sed "s/.*Certificate Name: *//g")" +all_certificates="" +valid_certificates="" +invalid_certificates="" +for certificate in $certificates +do + all_certificates="$all_certificates $certificate" + if [ -n "$(echo "$certbot_certificates_output" | grep "Expiry Date:" | grep -E "VALID:")" ] + then + valid_certificates="$valid_certificates $certificate" + else + invalid_certificates="$invalid_certificates $certificate" + fi +done + +jsonify() +{ + if [ -z "$1" ] + then + echo "[]" + else + echo "[\"$1\"]" | sed "s/ /\", \"/g" + fi +} + +cat < 0 + ansible.builtin.shell: + certbot renew --non-interactive + +- name: Install OVH DNS credentials + ansible.builtin.copy: + src: ovh-dns-credentials.ini + dest: /etc/ovh-dns-credentials.ini + mode: "400" + +- name: Install missing TLS certificates + loop: "{{ subdomains }}" + when: not ( ( item.name ~ ".joeac.net" ) in ansible_local.certbot.certificates ) + ansible.builtin.shell: + certbot certonly \ + --dns-ovh \ + --dns-ovh-credentials /etc/ovh-dns-credentials.ini \ + --cert-name {{ item.name }}.joeac.net \ + --domain {{ item.full_domain }} \ + --non-interactive + +- name: Add joeac.net group + ansible.builtin.group: + name: joeac.net + +- name: Add tls group + ansible.builtin.group: + name: tls + +- name: Add joeac.net user + ansible.builtin.user: + name: joeac.net + group: joeac.net + groups: + - tls + append: false + +- name: Give ownership of /etc/letsencrypt to joeac.net:tls + ansible.builtin.file: + path: /etc/letsencrypt + owner: joeac.net + group: tls + mode: g+rwx + recurse: true + +- name: Install daily crontab to renew TLS certificates + ansible.builtin.cron: + special_time: daily + name: daily crontab to renew all TLS certificates near to expiry + job: + certbot renew --non-interactive; chown -R joeac.net:tls /etc/letsencrypt -- cgit v1.2.3