Compare commits

..

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

15 changed files with 37 additions and 104 deletions

View File

@ -26,7 +26,7 @@ jobs:
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x python-version: '3.x'
- name: Install test dependencies. - name: Install test dependencies.
run: pip3 install yamllint run: pip3 install yamllint
@ -50,16 +50,6 @@ jobs:
- distro: debian12 - distro: debian12
playbook: converge.yml playbook: converge.yml
experimental: false experimental: false
<<<<<<< Updated upstream
=======
- distro: debian10
playbook: converge.yml
experimental: false
# Source install started failing recently.
# - distro: centos7
# playbook: playbook-source-install.yml
# experimental: false
>>>>>>> Stashed changes
- distro: rockylinux9 - distro: rockylinux9
playbook: playbook-snap-install.yml playbook: playbook-snap-install.yml
@ -74,7 +64,7 @@ jobs:
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x python-version: '3.x'
- name: Install test dependencies. - name: Install test dependencies.
run: pip3 install ansible molecule molecule-plugins[docker] docker run: pip3 install ansible molecule molecule-plugins[docker] docker

View File

@ -29,7 +29,7 @@ jobs:
- name: Set up Python 3. - name: Set up Python 3.
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x python-version: '3.x'
- name: Install Ansible. - name: Install Ansible.
run: pip3 install ansible-core run: pip3 install ansible-core

View File

@ -21,8 +21,7 @@ certbot_expand: false
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
@ -30,6 +29,8 @@ certbot_certs: []
# - domains: # - domains:
# - example3.com # - example3.com
certbot_create_extra_args: ""
certbot_create_command: >- certbot_create_command: >-
{{ certbot_script }} certonly --{{ certbot_create_method }} {{ certbot_script }} certonly --{{ certbot_create_method }}
{{ '--hsts' if certbot_hsts else '' }} {{ '--hsts' if certbot_hsts else '' }}
@ -40,18 +41,13 @@ certbot_create_command: >-
{{ '--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

@ -9,7 +9,7 @@
pre_tasks: pre_tasks:
- name: Update apt cache. - name: Update apt cache.
apt: update_cache=yes cache_valid_time=600 apt: update_cache=yes cache_valid_time=600
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
changed_when: false changed_when: false
- name: Install dependencies (RedHat). - name: Install dependencies (RedHat).
@ -18,11 +18,11 @@
- cronie - cronie
- epel-release - epel-release
state: present state: present
when: ansible_facts.os_family == 'RedHat' when: ansible_os_family == 'RedHat'
- name: Install cron (Debian). - name: Install cron (Debian).
apt: name=cron state=present apt: name=cron state=present
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
roles: roles:
- geerlingguy.certbot - geerlingguy.certbot

View File

@ -10,16 +10,16 @@
pre_tasks: pre_tasks:
- name: Update apt cache. - name: Update apt cache.
apt: update_cache=yes cache_valid_time=600 apt: update_cache=yes cache_valid_time=600
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
changed_when: false changed_when: false
- name: Install cron (RedHat). - name: Install cron (RedHat).
yum: name=cronie state=present yum: name=cronie state=present
when: ansible_facts.os_family == 'RedHat' when: ansible_os_family == 'RedHat'
- name: Install cron (Debian). - name: Install cron (Debian).
apt: name=cron state=present apt: name=cron state=present
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
roles: roles:
- geerlingguy.git - geerlingguy.git

View File

@ -10,16 +10,16 @@
pre_tasks: pre_tasks:
- name: Update apt cache. - name: Update apt cache.
apt: update_cache=yes cache_valid_time=600 apt: update_cache=yes cache_valid_time=600
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
changed_when: false changed_when: false
- name: Install cron (RedHat). - name: Install cron (RedHat).
yum: name=cronie state=present yum: name=cronie state=present
when: ansible_facts.os_family == 'RedHat' when: ansible_os_family == 'RedHat'
- name: Install cron (Debian). - name: Install cron (Debian).
apt: name=cron state=present apt: name=cron state=present
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
roles: roles:
- geerlingguy.git - geerlingguy.git

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"
@ -111,19 +110,19 @@
pre_tasks: pre_tasks:
- name: Update apt cache. - name: Update apt cache.
apt: update_cache=true cache_valid_time=600 apt: update_cache=true cache_valid_time=600
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
changed_when: false changed_when: false
- name: Install dependencies (RedHat). - name: Install dependencies (RedHat).
yum: name={{ item }} state=present yum: name={{ item }} state=present
when: ansible_facts.os_family == 'RedHat' when: ansible_os_family == 'RedHat'
with_items: with_items:
- cronie - cronie
- epel-release - epel-release
- name: Install cron (Debian). - name: Install cron (Debian).
apt: name=cron state=present apt: name=cron state=present
when: ansible_facts.os_family == 'Debian' when: ansible_os_family == 'Debian'
roles: roles:
- geerlingguy.certbot - geerlingguy.certbot

View File

@ -1,13 +1,4 @@
--- ---
- name: Determine certificate name
set_fact:
cert_item_name: "{{ cert_item.name | default(cert_item.domains | first | replace('*.', '')) }}"
- name: Check if certificate already exists.
stat:
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem
register: letsencrypt_cert
- name: Ensure pre and post hook folders exist. - name: Ensure pre and post hook folders exist.
file: file:
path: /etc/letsencrypt/renewal-hooks/{{ item }} path: /etc/letsencrypt/renewal-hooks/{{ item }}
@ -28,7 +19,7 @@
mode: 0750 mode: 0750
when: when:
- certbot_create_standalone_stop_services is defined - certbot_create_standalone_stop_services is defined
- certbot_create_standalone_stop_services is truthy - certbot_create_standalone_stop_services
- name: Create post hook to start services. - name: Create post hook to start services.
template: template:
@ -39,25 +30,9 @@
mode: 0750 mode: 0750
when: when:
- certbot_create_standalone_stop_services is defined - certbot_create_standalone_stop_services is defined
- certbot_create_standalone_stop_services is truthy - 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) register: certbot_create
changed_when: "'no action taken' not in certbot_create.stdout"

View File

@ -1,35 +1,10 @@
--- ---
- name: Determine certificate name
set_fact:
cert_item_name: "{{ cert_item.name | default(cert_item.domains | first | replace('*.', '')) }}"
- name: Check if certificate already exists.
stat:
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem
register: letsencrypt_cert
- name: Create webroot directory if it doesn't exist yet - name: Create webroot directory if it doesn't exist yet
file: file:
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) register: certbot_create
changed_when: "'no action taken' not in certbot_create.stdout"

View File

@ -2,7 +2,7 @@
- name: Load a variable file based on the OS type, or a default if not found. - name: Load a variable file based on the OS type, or a default if not found.
include_vars: "{{ item }}" include_vars: "{{ item }}"
with_first_found: with_first_found:
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_version }}.yml" - "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
- "{{ ansible_facts.distribution }}.yml" - "{{ ansible_distribution }}.yml"
- "{{ ansible_facts.os_family }}.yml" - "{{ ansible_os_family }}.yml"
- "default.yml" - "default.yml"

View File

@ -1,8 +1,6 @@
--- ---
- name: Install Certbot. - name: Install Certbot.
package: package: "name={{ certbot_package }} state=present"
name: "{{ certbot_package }}"
state: present
- name: Set Certbot script variable. - name: Set Certbot script variable.
set_fact: set_fact:

View File

@ -16,7 +16,7 @@
src: /var/lib/snapd/snap src: /var/lib/snapd/snap
dest: /snap dest: /snap
state: link state: link
when: ansible_facts.os_family != "Debian" when: ansible_os_family != "Debian"
- name: Update snap after install. - name: Update snap after install.
shell: snap install core; snap refresh core shell: snap install core; snap refresh core

View File

@ -2,7 +2,7 @@
- import_tasks: include-vars.yml - import_tasks: include-vars.yml
- import_tasks: setup-RedHat.yml - import_tasks: setup-RedHat.yml
when: ansible_facts.os_family == 'RedHat' when: ansible_os_family == 'RedHat'
- import_tasks: install-with-package.yml - import_tasks: install-with-package.yml
when: certbot_install_method == 'package' when: certbot_install_method == 'package'

View File

@ -3,11 +3,11 @@
{% for item in certbot_create_standalone_stop_services %} {% for item in certbot_create_standalone_stop_services %}
echo "starting service {{ item }}" echo "starting service {{ item }}"
{% if ansible_facts.service_mgr == 'systemd' %} {% if ansible_service_mgr == 'systemd' %}
systemctl start {{ item }} systemctl start {{ item }}
{% elif ansible_facts.service_mgr == 'upstart' %} {% elif ansible_service_mgr == 'upstart' %}
initctl start {{ item }} initctl start {{ item }}
{% elif ansible_facts.service_mgr == 'openrc' %} {% elif ansible_service_mgr == 'openrc' %}
rc-service {{ item }} start rc-service {{ item }} start
{% else %} {% else %}
service {{ item }} start service {{ item }} start

View File

@ -3,11 +3,11 @@
{% for item in certbot_create_standalone_stop_services %} {% for item in certbot_create_standalone_stop_services %}
echo "stopping service {{ item }}" echo "stopping service {{ item }}"
{% if ansible_facts.service_mgr == 'systemd' %} {% if ansible_service_mgr == 'systemd' %}
systemctl stop {{ item }} systemctl stop {{ item }}
{% elif ansible_facts.service_mgr == 'upstart' %} {% elif ansible_service_mgr == 'upstart' %}
initctl stop {{ item }} initctl stop {{ item }}
{% elif ansible_facts.service_mgr == 'openrc' %} {% elif ansible_service_mgr == 'openrc' %}
rc-service {{ item }} stop rc-service {{ item }} stop
{% else %} {% else %}
service {{ item }} stop service {{ item }} stop