mirror of
https://github.com/geerlingguy/ansible-role-certbot.git
synced 2026-08-25 01:05:36 +02:00
Compare commits
41
Commits
5.1.1
..
a544d9761d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a544d9761d | ||
|
|
c5967d6b75 | ||
|
|
1011113914 | ||
|
|
95afe409cc | ||
|
|
97e3fdc6ec | ||
|
|
3eaa55b81e | ||
|
|
f8e02e1e83 | ||
|
|
d35de757e0 | ||
|
|
ef85f3e63d | ||
|
|
3b3cc546d1 | ||
|
|
1749d0ace0 | ||
|
|
d2e42ea198 | ||
|
|
d5a1f4df3c | ||
|
|
de02f52275 | ||
|
|
6ab7f2db23 | ||
|
|
32d18724a6 | ||
|
|
11ac393df5 | ||
|
|
1278651f0d | ||
|
|
3d2fbc6202 | ||
|
|
4f1179392e | ||
|
|
b3ae28fb77 | ||
|
|
943abd882d | ||
|
|
2fde934223 | ||
|
|
851d2b9855 | ||
|
|
2d3cf2ad13 | ||
|
|
999372cc7e | ||
|
|
811fa11044 | ||
|
|
e5bfeaf936 | ||
|
|
9045ec5a59 | ||
|
|
98ea3238ed | ||
|
|
06ca208bb6 | ||
|
|
49e18182a7 | ||
|
|
48941fe2a0 | ||
|
|
6230e82ba9 | ||
|
|
0b414a9d74 | ||
|
|
78f4cb5ad5 | ||
|
|
d1cbcde4de | ||
|
|
03f4cc3a99 | ||
|
|
63638f4471 | ||
|
|
4be771f12a | ||
|
|
de52a1f4c8 |
+13
-10
@@ -19,14 +19,14 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'geerlingguy.certbot'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v2
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x
|
||||
|
||||
- name: Install test dependencies.
|
||||
run: pip3 install yamllint
|
||||
@@ -41,15 +41,17 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- distro: centos8
|
||||
- distro: rockylinux9
|
||||
playbook: converge.yml
|
||||
experimental: false
|
||||
- distro: centos7
|
||||
- distro: ubuntu2404
|
||||
playbook: converge.yml
|
||||
experimental: false
|
||||
- distro: ubuntu1804
|
||||
- distro: debian12
|
||||
playbook: converge.yml
|
||||
experimental: false
|
||||
<<<<<<< Updated upstream
|
||||
=======
|
||||
- distro: debian10
|
||||
playbook: converge.yml
|
||||
experimental: false
|
||||
@@ -57,21 +59,22 @@ jobs:
|
||||
# - distro: centos7
|
||||
# playbook: playbook-source-install.yml
|
||||
# experimental: false
|
||||
>>>>>>> Stashed changes
|
||||
|
||||
- distro: centos7
|
||||
- distro: rockylinux9
|
||||
playbook: playbook-snap-install.yml
|
||||
experimental: true
|
||||
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'geerlingguy.certbot'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v2
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x
|
||||
|
||||
- name: Install test dependencies.
|
||||
run: pip3 install ansible molecule molecule-plugins[docker] docker
|
||||
|
||||
@@ -22,14 +22,14 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the codebase.
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: 'geerlingguy.certbot'
|
||||
|
||||
- name: Set up Python 3.
|
||||
uses: actions/setup-python@v2
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
python-version: '3.13' # Can't go to 3.14+ until Ansible 13.x
|
||||
|
||||
- name: Install Ansible.
|
||||
run: pip3 install ansible-core
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Ansible Role: Certbot (for Let's Encrypt)
|
||||
|
||||
[](https://github.com/geerlingguy/ansible-role-certbot/actions?query=workflow%3ACI)
|
||||
[](https://github.com/geerlingguy/ansible-role-certbot/actions/workflows/ci.yml)
|
||||
|
||||
Installs and configures Certbot (for Let's Encrypt).
|
||||
|
||||
@@ -26,7 +26,12 @@ By default, this role configures a cron job to run under the provided user accou
|
||||
|
||||
### Automatic Certificate Generation
|
||||
|
||||
Currently the `standalone` and `webroot` method are supported for generating new certificates using this role.
|
||||
Current methods supported for generating new certificates using this role:
|
||||
|
||||
- `standalone`
|
||||
- `webroot`
|
||||
- `nginx`
|
||||
- `dns-cloudflare`
|
||||
|
||||
**For a complete example**: see the fully functional test playbook in [molecule/default/playbook-standalone-nginx-aws.yml](molecule/default/playbook-standalone-nginx-aws.yml).
|
||||
|
||||
@@ -36,7 +41,7 @@ Set `certbot_create_if_missing` to `yes` or `True` to let this role generate cer
|
||||
|
||||
certbot_create_method: standalone
|
||||
|
||||
Set the method used for generating certs with the `certbot_create_method` variable — current allowed values are: `standalone` or `webroot`.
|
||||
Set the method used for generating certs with the `certbot_create_method` variable — current allowed values are: `standalone`, `webroot` or 'dns-cloudflare'.
|
||||
|
||||
certbot_testmode: false
|
||||
|
||||
@@ -86,6 +91,15 @@ This install method is currently experimental and may or may not work across all
|
||||
|
||||
When using the `webroot` creation method, a `webroot` item has to be provided for every `certbot_certs` item, specifying which directory to use for the authentication. Also, make sure your webserver correctly delivers contents from this directory.
|
||||
|
||||
### nginx Certificate Generation
|
||||
|
||||
When using the `nginx` creation method, `nginx` package will be installed as a dependency of `python3-certbot-nginx`.
|
||||
|
||||
#### dns-cloudflare Certificate Generation
|
||||
|
||||
When using the `dns-cloudflare` creation method, set `certbot_dns_cloudflare_api_token` with your Cloudflare API token.
|
||||
The process will generate a `dns-01` challenge (*DNS01*) by creating, and subsequently removing, TXT records using the Cloudflare API. See [certbot-dns-cloudflare documentation](https://certbot-dns-cloudflare.readthedocs.io/en/stable/) for details.
|
||||
|
||||
### Source Installation from Git
|
||||
|
||||
You can install Certbot from it's Git source repository if desired with `certbot_install_method: source`. This might be useful in several cases, but especially when older distributions don't have Certbot packages available (e.g. CentOS < 7, Ubuntu < 16.10 and Debian < 8).
|
||||
|
||||
+17
-3
@@ -13,13 +13,16 @@ certbot_hsts: false
|
||||
# Parameters used when creating new Certbot certs.
|
||||
certbot_create_if_missing: false
|
||||
certbot_create_method: standalone
|
||||
certbot_create_extra_args: ""
|
||||
certbot_admin_email: email@example.com
|
||||
certbot_expand: false
|
||||
|
||||
# Default webroot, overwritten by individual per-cert webroot directories
|
||||
certbot_webroot: /var/www/letsencrypt
|
||||
|
||||
certbot_certs: []
|
||||
# - email: janedoe@example.com
|
||||
# - name: example.com
|
||||
# email: janedoe@example.com
|
||||
# webroot: "/var/www/html/"
|
||||
# domains:
|
||||
# - example1.com
|
||||
@@ -33,15 +36,24 @@ certbot_create_command: >-
|
||||
{{ '--test-cert' if certbot_testmode else '' }}
|
||||
--noninteractive --agree-tos
|
||||
--email {{ cert_item.email | default(certbot_admin_email) }}
|
||||
{{ '--expand' if certbot_expand else '' }}
|
||||
{{ '--webroot-path ' if certbot_create_method == 'webroot' else '' }}
|
||||
{{ cert_item.webroot | default(certbot_webroot) if certbot_create_method == 'webroot' else '' }}
|
||||
{{ certbot_create_extra_args }}
|
||||
{{ '--dns-cloudflare-credentials /etc/letsencrypt/dnscloudflare.ini'
|
||||
if certbot_create_method == 'dns-cloudflare'
|
||||
else '' }}
|
||||
--cert-name {{ cert_item_name }}
|
||||
-d {{ cert_item.domains | join(',') }}
|
||||
{{ '--expand' if certbot_expand else '' }}
|
||||
{{ '--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 in ['standalone', 'nginx']
|
||||
else '' }}
|
||||
{{ '--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 in ['standalone', 'nginx']
|
||||
else '' }}
|
||||
{{ "--deploy-hook '" ~ cert_item.deploy_hook ~ "'"
|
||||
if 'deploy_hook' in cert_item
|
||||
else '' }}
|
||||
|
||||
certbot_create_standalone_stop_services:
|
||||
@@ -49,6 +61,8 @@ certbot_create_standalone_stop_services:
|
||||
# - apache
|
||||
# - varnish
|
||||
|
||||
certbot_dns_cloudflare_api_token: fakeone
|
||||
|
||||
# Available options: 'package', 'snap', 'source'.
|
||||
certbot_install_method: 'package'
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
become: true
|
||||
# become: true
|
||||
|
||||
vars:
|
||||
certbot_auto_renew_user: root
|
||||
@@ -9,7 +9,7 @@
|
||||
pre_tasks:
|
||||
- name: Update apt cache.
|
||||
apt: update_cache=yes cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
changed_when: false
|
||||
|
||||
- name: Install dependencies (RedHat).
|
||||
@@ -18,11 +18,11 @@
|
||||
- cronie
|
||||
- epel-release
|
||||
state: present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
|
||||
- name: Install cron (Debian).
|
||||
apt: name=cron state=present
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
roles:
|
||||
- geerlingguy.certbot
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
role_name_check: 1
|
||||
dependency:
|
||||
name: galaxy
|
||||
options:
|
||||
ignore-errors: true
|
||||
driver:
|
||||
name: docker
|
||||
platforms:
|
||||
- name: instance
|
||||
image: "geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest"
|
||||
image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-ansible:latest"
|
||||
command: ${MOLECULE_DOCKER_COMMAND:-""}
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:rw
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
become: true
|
||||
#become: true
|
||||
|
||||
vars:
|
||||
certbot_install_method: 'snap'
|
||||
@@ -10,16 +10,16 @@
|
||||
pre_tasks:
|
||||
- name: Update apt cache.
|
||||
apt: update_cache=yes cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
changed_when: false
|
||||
|
||||
- name: Install cron (RedHat).
|
||||
yum: name=cronie state=present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
|
||||
- name: Install cron (Debian).
|
||||
apt: name=cron state=present
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
roles:
|
||||
- geerlingguy.git
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
become: true
|
||||
#become: true
|
||||
|
||||
vars:
|
||||
certbot_install_method: 'source'
|
||||
@@ -10,16 +10,16 @@
|
||||
pre_tasks:
|
||||
- name: Update apt cache.
|
||||
apt: update_cache=yes cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
changed_when: false
|
||||
|
||||
- name: Install cron (RedHat).
|
||||
yum: name=cronie state=present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
|
||||
- name: Install cron (Debian).
|
||||
apt: name=cron state=present
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
roles:
|
||||
- geerlingguy.git
|
||||
|
||||
@@ -91,7 +91,8 @@
|
||||
certbot_create_if_missing: true
|
||||
certbot_create_standalone_stop_services: []
|
||||
certbot_certs:
|
||||
- domains:
|
||||
- name: certbot-test.servercheck.in
|
||||
domains:
|
||||
- certbot-test.servercheck.in
|
||||
nginx_vhosts:
|
||||
- listen: "443 ssl http2"
|
||||
@@ -110,19 +111,19 @@
|
||||
pre_tasks:
|
||||
- name: Update apt cache.
|
||||
apt: update_cache=true cache_valid_time=600
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
changed_when: false
|
||||
|
||||
- name: Install dependencies (RedHat).
|
||||
yum: name={{ item }} state=present
|
||||
when: ansible_os_family == 'RedHat'
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
with_items:
|
||||
- cronie
|
||||
- epel-release
|
||||
|
||||
- name: Install cron (Debian).
|
||||
apt: name=cron state=present
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
roles:
|
||||
- geerlingguy.certbot
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
- 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
|
||||
become: true
|
||||
|
||||
- name: Generate new certificate if one doesn't exist.
|
||||
command: "{{ certbot_create_command }}"
|
||||
when: not letsencrypt_cert.stat.exists
|
||||
become: true
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
- 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
|
||||
become: true
|
||||
|
||||
- name: Ensure pre and post hook folders exist.
|
||||
file:
|
||||
path: /etc/letsencrypt/renewal-hooks/{{ item }}
|
||||
state: directory
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
with_items:
|
||||
- pre
|
||||
- post
|
||||
|
||||
- name: Create pre hook to stop services.
|
||||
template:
|
||||
src: stop_services.j2
|
||||
dest: /etc/letsencrypt/renewal-hooks/pre/stop_services
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0750
|
||||
when:
|
||||
- certbot_create_standalone_stop_services is defined
|
||||
- certbot_create_standalone_stop_services is truthy
|
||||
|
||||
- name: Create post hook to start services.
|
||||
template:
|
||||
src: start_services.j2
|
||||
dest: /etc/letsencrypt/renewal-hooks/post/start_services
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0750
|
||||
when:
|
||||
- certbot_create_standalone_stop_services is defined
|
||||
- certbot_create_standalone_stop_services is truthy
|
||||
|
||||
- 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.
|
||||
command: "{{ certbot_create_command }}"
|
||||
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false)
|
||||
become: true
|
||||
@@ -1,7 +1,11 @@
|
||||
---
|
||||
- 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.domains | first | replace('*.', '') }}/cert.pem
|
||||
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem
|
||||
register: letsencrypt_cert
|
||||
|
||||
- name: Ensure pre and post hook folders exist.
|
||||
@@ -24,7 +28,7 @@
|
||||
mode: 0750
|
||||
when:
|
||||
- certbot_create_standalone_stop_services is defined
|
||||
- certbot_create_standalone_stop_services
|
||||
- certbot_create_standalone_stop_services is truthy
|
||||
|
||||
- name: Create post hook to start services.
|
||||
template:
|
||||
@@ -35,8 +39,25 @@
|
||||
mode: 0750
|
||||
when:
|
||||
- certbot_create_standalone_stop_services is defined
|
||||
- certbot_create_standalone_stop_services
|
||||
- certbot_create_standalone_stop_services is truthy
|
||||
|
||||
- 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.
|
||||
command: "{{ certbot_create_command }}"
|
||||
when: not letsencrypt_cert.stat.exists
|
||||
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
---
|
||||
- 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.domains | first }}/cert.pem
|
||||
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem
|
||||
register: letsencrypt_cert
|
||||
|
||||
- name: Create webroot directory if it doesn't exist yet
|
||||
@@ -9,6 +13,23 @@
|
||||
path: "{{ cert_item.webroot | default(certbot_webroot) }}"
|
||||
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.
|
||||
command: "{{ certbot_create_command }}"
|
||||
when: not letsencrypt_cert.stat.exists
|
||||
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
- name: Load a variable file based on the OS type, or a default if not found.
|
||||
include_vars: "{{ item }}"
|
||||
with_first_found:
|
||||
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
||||
- "{{ ansible_distribution }}.yml"
|
||||
- "{{ ansible_os_family }}.yml"
|
||||
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_version }}.yml"
|
||||
- "{{ ansible_facts.distribution }}.yml"
|
||||
- "{{ ansible_facts.os_family }}.yml"
|
||||
- "default.yml"
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
---
|
||||
- name: Install Certbot.
|
||||
package: "name={{ certbot_package }} state=present"
|
||||
package:
|
||||
name: "{{ certbot_package }}"
|
||||
state: present
|
||||
|
||||
- name: Install Certbot dependencies.
|
||||
package:
|
||||
name: "{{ cert_item }}"
|
||||
state: present
|
||||
when:
|
||||
- certbot_create_method in certbot_create_packages
|
||||
loop: "{{ certbot_create_packages[certbot_create_method] }}"
|
||||
loop_control:
|
||||
loop_var: cert_item
|
||||
|
||||
- name: Set Certbot script variable.
|
||||
set_fact:
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
src: /var/lib/snapd/snap
|
||||
dest: /snap
|
||||
state: link
|
||||
when: ansible_os_family != "Debian"
|
||||
when: ansible_facts.os_family != "Debian"
|
||||
|
||||
- name: Update snap after install.
|
||||
shell: snap install core; snap refresh core
|
||||
|
||||
+28
-1
@@ -2,7 +2,7 @@
|
||||
- import_tasks: include-vars.yml
|
||||
|
||||
- import_tasks: setup-RedHat.yml
|
||||
when: ansible_os_family == 'RedHat'
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
|
||||
- import_tasks: install-with-package.yml
|
||||
when: certbot_install_method == 'package'
|
||||
@@ -13,6 +13,17 @@
|
||||
- import_tasks: install-from-source.yml
|
||||
when: certbot_install_method == 'source'
|
||||
|
||||
- name: Cloudflare API token
|
||||
ansible.builtin.template:
|
||||
src: dnscloudflare.ini.j2
|
||||
dest: "/etc/letsencrypt/dnscloudflare.ini"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
when:
|
||||
- certbot_create_method == 'dns-cloudflare'
|
||||
become: true
|
||||
|
||||
- include_tasks: create-cert-standalone.yml
|
||||
with_items: "{{ certbot_certs }}"
|
||||
when:
|
||||
@@ -29,5 +40,21 @@
|
||||
loop_control:
|
||||
loop_var: cert_item
|
||||
|
||||
- include_tasks: create-cert-nginx.yml
|
||||
with_items: "{{ certbot_certs }}"
|
||||
when:
|
||||
- certbot_create_if_missing
|
||||
- certbot_create_method == 'nginx'
|
||||
loop_control:
|
||||
loop_var: cert_item
|
||||
|
||||
- include_tasks: create-cert-dns-cloudflare.yml
|
||||
with_items: "{{ certbot_certs }}"
|
||||
when:
|
||||
- certbot_create_if_missing
|
||||
- certbot_create_method == 'dns-cloudflare'
|
||||
loop_control:
|
||||
loop_var: cert_item
|
||||
|
||||
- import_tasks: renew-cron.yml
|
||||
when: certbot_auto_renew
|
||||
|
||||
+8
-27
@@ -1,30 +1,11 @@
|
||||
---
|
||||
# See: https://github.com/geerlingguy/ansible-role-certbot/issues/107
|
||||
- block:
|
||||
- name: Ensure dnf-plugins are installed on Rocky/AlmaLinux.
|
||||
yum:
|
||||
name: dnf-plugins-core
|
||||
state: present
|
||||
|
||||
- name: Ensure dnf-plugins are installed on CentOS 8+.
|
||||
yum:
|
||||
name: dnf-plugins-core
|
||||
state: present
|
||||
|
||||
- block:
|
||||
|
||||
- name: Enable DNF module for CentOS 8.3+.
|
||||
shell: |
|
||||
dnf config-manager --set-enabled powertools
|
||||
register: dnf_module_enable
|
||||
changed_when: false
|
||||
|
||||
when: ansible_facts['distribution_version'] is version('8.3', '>=')
|
||||
|
||||
- name: Enable DNF module for CentOS 8.0–8.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
|
||||
- name: Enable DNF module for Rocky/AlmaLinux.
|
||||
shell: |
|
||||
dnf config-manager --set-enabled crb
|
||||
changed_when: false
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
dns_cloudflare_api_token = {{ certbot_dns_cloudflare_api_token }}
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
{% for item in certbot_create_standalone_stop_services %}
|
||||
echo "starting service {{ item }}"
|
||||
{% if ansible_service_mgr == 'systemd' %}
|
||||
{% if ansible_facts.service_mgr == 'systemd' %}
|
||||
systemctl start {{ item }}
|
||||
{% elif ansible_service_mgr == 'upstart' %}
|
||||
{% elif ansible_facts.service_mgr == 'upstart' %}
|
||||
initctl start {{ item }}
|
||||
{% elif ansible_service_mgr == 'openrc' %}
|
||||
{% elif ansible_facts.service_mgr == 'openrc' %}
|
||||
rc-service {{ item }} start
|
||||
{% else %}
|
||||
service {{ item }} start
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
{% for item in certbot_create_standalone_stop_services %}
|
||||
echo "stopping service {{ item }}"
|
||||
{% if ansible_service_mgr == 'systemd' %}
|
||||
{% if ansible_facts.service_mgr == 'systemd' %}
|
||||
systemctl stop {{ item }}
|
||||
{% elif ansible_service_mgr == 'upstart' %}
|
||||
{% elif ansible_facts.service_mgr == 'upstart' %}
|
||||
initctl stop {{ item }}
|
||||
{% elif ansible_service_mgr == 'openrc' %}
|
||||
{% elif ansible_facts.service_mgr == 'openrc' %}
|
||||
rc-service {{ item }} stop
|
||||
{% else %}
|
||||
service {{ item }} stop
|
||||
|
||||
@@ -1,2 +1,7 @@
|
||||
---
|
||||
certbot_package: certbot
|
||||
certbot_create_packages:
|
||||
nginx:
|
||||
- python3-certbot-nginx
|
||||
'dns-cloudflare':
|
||||
- python3-certbot-dns-cloudflare
|
||||
|
||||
Reference in New Issue
Block a user