Compare commits

..

No commits in common. "master" and "5.1.1" have entirely different histories.

12 changed files with 55 additions and 83 deletions

View File

@ -19,12 +19,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v4 uses: actions/checkout@v2
with: with:
path: 'geerlingguy.certbot' path: 'geerlingguy.certbot'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v2
with: with:
python-version: '3.x' python-version: '3.x'
@ -41,28 +41,35 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- distro: rockylinux9 - distro: centos8
playbook: converge.yml playbook: converge.yml
experimental: false experimental: false
- distro: ubuntu2404 - distro: centos7
playbook: converge.yml playbook: converge.yml
experimental: false experimental: false
- distro: debian12 - distro: ubuntu1804
playbook: converge.yml playbook: converge.yml
experimental: false experimental: false
- distro: debian10
playbook: converge.yml
experimental: false
# Source install started failing recently.
# - distro: centos7
# playbook: playbook-source-install.yml
# experimental: false
- distro: rockylinux9 - distro: centos7
playbook: playbook-snap-install.yml playbook: playbook-snap-install.yml
experimental: true experimental: true
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v4 uses: actions/checkout@v2
with: with:
path: 'geerlingguy.certbot' path: 'geerlingguy.certbot'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v2
with: with:
python-version: '3.x' python-version: '3.x'

View File

@ -22,12 +22,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out the codebase. - name: Check out the codebase.
uses: actions/checkout@v4 uses: actions/checkout@v2
with: with:
path: 'geerlingguy.certbot' path: 'geerlingguy.certbot'
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v2
with: with:
python-version: '3.x' python-version: '3.x'

View File

@ -1,6 +1,6 @@
# Ansible Role: Certbot (for Let's Encrypt) # Ansible Role: Certbot (for Let's Encrypt)
[![CI](https://github.com/geerlingguy/ansible-role-certbot/actions/workflows/ci.yml/badge.svg)](https://github.com/geerlingguy/ansible-role-certbot/actions/workflows/ci.yml) [![CI](https://github.com/geerlingguy/ansible-role-certbot/workflows/CI/badge.svg?event=push)](https://github.com/geerlingguy/ansible-role-certbot/actions?query=workflow%3ACI)
Installs and configures Certbot (for Let's Encrypt). Installs and configures Certbot (for Let's Encrypt).

View File

@ -13,16 +13,13 @@ certbot_hsts: false
# Parameters used when creating new Certbot certs. # Parameters used when creating new Certbot certs.
certbot_create_if_missing: false certbot_create_if_missing: false
certbot_create_method: standalone certbot_create_method: standalone
certbot_create_extra_args: ""
certbot_admin_email: email@example.com certbot_admin_email: email@example.com
certbot_expand: false
# Default webroot, overwritten by individual per-cert webroot directories # Default webroot, overwritten by individual per-cert webroot directories
certbot_webroot: /var/www/letsencrypt certbot_webroot: /var/www/letsencrypt
certbot_certs: [] certbot_certs: []
# - name: example.com # - email: janedoe@example.com
# email: janedoe@example.com
# webroot: "/var/www/html/" # webroot: "/var/www/html/"
# domains: # domains:
# - example1.com # - example1.com
@ -36,22 +33,16 @@ certbot_create_command: >-
{{ '--test-cert' if certbot_testmode else '' }} {{ '--test-cert' if certbot_testmode else '' }}
--noninteractive --agree-tos --noninteractive --agree-tos
--email {{ cert_item.email | default(certbot_admin_email) }} --email {{ cert_item.email | default(certbot_admin_email) }}
{{ '--expand' if certbot_expand else '' }}
{{ '--webroot-path ' if certbot_create_method == 'webroot' else '' }} {{ '--webroot-path ' if certbot_create_method == 'webroot' else '' }}
{{ cert_item.webroot | default(certbot_webroot) if certbot_create_method == 'webroot' else '' }} {{ cert_item.webroot | default(certbot_webroot) if certbot_create_method == 'webroot' else '' }}
{{ certbot_create_extra_args }} {{ certbot_create_extra_args }}
--cert-name {{ cert_item_name }}
-d {{ cert_item.domains | join(',') }} -d {{ cert_item.domains | join(',') }}
{{ '--expand' if certbot_expand else '' }}
{{ '--pre-hook /etc/letsencrypt/renewal-hooks/pre/stop_services' {{ '--pre-hook /etc/letsencrypt/renewal-hooks/pre/stop_services'
if certbot_create_standalone_stop_services and certbot_create_method == 'standalone' if certbot_create_standalone_stop_services and certbot_create_method == 'standalone'
else '' }} else '' }}
{{ '--post-hook /etc/letsencrypt/renewal-hooks/post/start_services' {{ '--post-hook /etc/letsencrypt/renewal-hooks/post/start_services'
if certbot_create_standalone_stop_services and certbot_create_method == 'standalone' if certbot_create_standalone_stop_services and certbot_create_method == 'standalone'
else '' }} else '' }}
{{ "--deploy-hook '" ~ cert_item.deploy_hook ~ "'"
if 'deploy_hook' in cert_item
else '' }}
certbot_create_standalone_stop_services: certbot_create_standalone_stop_services:
- nginx - nginx

View File

@ -1,7 +1,7 @@
--- ---
- name: Converge - name: Converge
hosts: all hosts: all
# become: true become: true
vars: vars:
certbot_auto_renew_user: root certbot_auto_renew_user: root

View File

@ -2,13 +2,11 @@
role_name_check: 1 role_name_check: 1
dependency: dependency:
name: galaxy name: galaxy
options:
ignore-errors: true
driver: driver:
name: docker name: docker
platforms: platforms:
- name: instance - name: instance
image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-ansible:latest" image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
command: ${MOLECULE_DOCKER_COMMAND:-""} command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes: volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw - /sys/fs/cgroup:/sys/fs/cgroup:rw

View File

@ -1,7 +1,7 @@
--- ---
- name: Converge - name: Converge
hosts: all hosts: all
#become: true become: true
vars: vars:
certbot_install_method: 'snap' certbot_install_method: 'snap'

View File

@ -1,7 +1,7 @@
--- ---
- name: Converge - name: Converge
hosts: all hosts: all
#become: true become: true
vars: vars:
certbot_install_method: 'source' certbot_install_method: 'source'

View File

@ -91,8 +91,7 @@
certbot_create_if_missing: true certbot_create_if_missing: true
certbot_create_standalone_stop_services: [] certbot_create_standalone_stop_services: []
certbot_certs: certbot_certs:
- name: certbot-test.servercheck.in - domains:
domains:
- certbot-test.servercheck.in - certbot-test.servercheck.in
nginx_vhosts: nginx_vhosts:
- listen: "443 ssl http2" - listen: "443 ssl http2"

View File

@ -1,11 +1,7 @@
--- ---
- name: Determine certificate name
set_fact:
cert_item_name: "{{ cert_item.name | default(cert_item.domains | first | replace('*.', '')) }}"
- name: Check if certificate already exists. - name: Check if certificate already exists.
stat: stat:
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem path: /etc/letsencrypt/live/{{ cert_item.domains | first | replace('*.', '') }}/cert.pem
register: letsencrypt_cert register: letsencrypt_cert
- name: Ensure pre and post hook folders exist. - name: Ensure pre and post hook folders exist.
@ -41,23 +37,6 @@
- certbot_create_standalone_stop_services is defined - certbot_create_standalone_stop_services is defined
- certbot_create_standalone_stop_services - certbot_create_standalone_stop_services
- name: Check if domains have changed
block:
- name: Register certificate domains
shell: "{{ certbot_script }} certificates --cert-name {{ cert_item_name }} | grep Domains | cut -d':' -f2"
changed_when: false
register: letsencrypt_cert_domains_dirty
- name: Cleanup domain list
set_fact:
letsencrypt_cert_domains: "{{ letsencrypt_cert_domains_dirty.stdout | trim | split(' ') | map('trim') | select('!=', '') | list | sort }}"
- name: Determine if domains have changed
set_fact:
letsencrypt_cert_domains_changed: "{{ letsencrypt_cert_domains != (cert_item.domains | map('trim') | select('!=', '') | list | sort) }}"
when: letsencrypt_cert.stat.exists
- name: Generate new certificate if one doesn't exist. - name: Generate new certificate if one doesn't exist.
command: "{{ certbot_create_command }}" command: "{{ certbot_create_command }}"
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false) when: not letsencrypt_cert.stat.exists

View File

@ -1,11 +1,7 @@
--- ---
- name: Determine certificate name
set_fact:
cert_item_name: "{{ cert_item.name | default(cert_item.domains | first | replace('*.', '')) }}"
- name: Check if certificate already exists. - name: Check if certificate already exists.
stat: stat:
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem path: /etc/letsencrypt/live/{{ cert_item.domains | first }}/cert.pem
register: letsencrypt_cert register: letsencrypt_cert
- name: Create webroot directory if it doesn't exist yet - name: Create webroot directory if it doesn't exist yet
@ -13,23 +9,6 @@
path: "{{ cert_item.webroot | default(certbot_webroot) }}" path: "{{ cert_item.webroot | default(certbot_webroot) }}"
state: directory state: directory
- name: Check if domains have changed
block:
- name: Register certificate domains
shell: "{{ certbot_script }} certificates --cert-name {{ cert_item_name }} | grep Domains | cut -d':' -f2"
changed_when: false
register: letsencrypt_cert_domains_dirty
- name: Cleanup domain list
set_fact:
letsencrypt_cert_domains: "{{ letsencrypt_cert_domains_dirty.stdout | trim | split(' ') | map('trim') | select('!=', '') | list | sort }}"
- name: Determine if domains have changed
set_fact:
letsencrypt_cert_domains_changed: "{{ letsencrypt_cert_domains != (cert_item.domains | map('trim') | select('!=', '') | list | sort) }}"
when: letsencrypt_cert.stat.exists
- name: Generate new certificate if one doesn't exist. - name: Generate new certificate if one doesn't exist.
command: "{{ certbot_create_command }}" command: "{{ certbot_create_command }}"
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false) when: not letsencrypt_cert.stat.exists

View File

@ -1,11 +1,30 @@
--- ---
# See: https://github.com/geerlingguy/ansible-role-certbot/issues/107 # See: https://github.com/geerlingguy/ansible-role-certbot/issues/107
- name: Ensure dnf-plugins are installed on Rocky/AlmaLinux. - block:
- name: Ensure dnf-plugins are installed on CentOS 8+.
yum: yum:
name: dnf-plugins-core name: dnf-plugins-core
state: present state: present
- name: Enable DNF module for Rocky/AlmaLinux. - block:
- name: Enable DNF module for CentOS 8.3+.
shell: | shell: |
dnf config-manager --set-enabled crb dnf config-manager --set-enabled powertools
register: dnf_module_enable
changed_when: false changed_when: false
when: ansible_facts['distribution_version'] is version('8.3', '>=')
- name: Enable DNF module for CentOS 8.08.2.
shell: |
dnf config-manager --set-enabled PowerTools
register: dnf_module_enable
changed_when: false
when: ansible_facts['distribution_version'] is version('8.2', '<=')
when:
- ansible_distribution == 'CentOS'
- ansible_distribution_major_version | int >= 8