mirror of
https://github.com/geerlingguy/ansible-role-certbot.git
synced 2025-04-19 17:01:37 +02:00
Compare commits
36 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
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 | ||
|
cb3b03f435 | ||
|
5a23e85f1c | ||
|
08543f45b2 | ||
|
84642924df | ||
|
3fcd4e0258 |
57
.github/stale.yml
vendored
57
.github/stale.yml
vendored
@ -1,57 +0,0 @@
|
|||||||
# Configuration for probot-stale - https://github.com/probot/stale
|
|
||||||
|
|
||||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
|
||||||
daysUntilStale: 90
|
|
||||||
|
|
||||||
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
|
|
||||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
|
||||||
daysUntilClose: 30
|
|
||||||
|
|
||||||
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
|
|
||||||
onlyLabels: []
|
|
||||||
|
|
||||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
|
||||||
exemptLabels:
|
|
||||||
- bug
|
|
||||||
- pinned
|
|
||||||
- security
|
|
||||||
- planned
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a project (defaults to false)
|
|
||||||
exemptProjects: false
|
|
||||||
|
|
||||||
# Set to true to ignore issues in a milestone (defaults to false)
|
|
||||||
exemptMilestones: false
|
|
||||||
|
|
||||||
# Set to true to ignore issues with an assignee (defaults to false)
|
|
||||||
exemptAssignees: false
|
|
||||||
|
|
||||||
# Label to use when marking as stale
|
|
||||||
staleLabel: stale
|
|
||||||
|
|
||||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
|
||||||
limitPerRun: 30
|
|
||||||
|
|
||||||
pulls:
|
|
||||||
markComment: |-
|
|
||||||
This pull request has been marked 'stale' due to lack of recent activity. If there is no further activity, the PR will be closed in another 30 days. Thank you for your contribution!
|
|
||||||
|
|
||||||
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark pull requests as stale.
|
|
||||||
|
|
||||||
unmarkComment: >-
|
|
||||||
This pull request is no longer marked for closure.
|
|
||||||
|
|
||||||
closeComment: >-
|
|
||||||
This pull request has been closed due to inactivity. If you feel this is in error, please reopen the pull request or file a new PR with the relevant details.
|
|
||||||
|
|
||||||
issues:
|
|
||||||
markComment: |-
|
|
||||||
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
|
|
||||||
|
|
||||||
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
|
|
||||||
|
|
||||||
unmarkComment: >-
|
|
||||||
This issue is no longer marked for closure.
|
|
||||||
|
|
||||||
closeComment: >-
|
|
||||||
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
|
|
23
.github/workflows/ci.yml
vendored
23
.github/workflows/ci.yml
vendored
@ -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@v2
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: 'geerlingguy.certbot'
|
path: 'geerlingguy.certbot'
|
||||||
|
|
||||||
- name: Set up Python 3.
|
- name: Set up Python 3.
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
@ -41,35 +41,28 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- distro: centos8
|
- distro: rockylinux9
|
||||||
playbook: converge.yml
|
playbook: converge.yml
|
||||||
experimental: false
|
experimental: false
|
||||||
- distro: centos7
|
- distro: ubuntu2404
|
||||||
playbook: converge.yml
|
playbook: converge.yml
|
||||||
experimental: false
|
experimental: false
|
||||||
- distro: ubuntu1804
|
- distro: debian12
|
||||||
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: centos7
|
- distro: rockylinux9
|
||||||
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@v2
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: 'geerlingguy.certbot'
|
path: 'geerlingguy.certbot'
|
||||||
|
|
||||||
- name: Set up Python 3.
|
- name: Set up Python 3.
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@ -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@v2
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
path: 'geerlingguy.certbot'
|
path: 'geerlingguy.certbot'
|
||||||
|
|
||||||
- name: Set up Python 3.
|
- name: Set up Python 3.
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
|
34
.github/workflows/stale.yml
vendored
Normal file
34
.github/workflows/stale.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
name: Close inactive issues
|
||||||
|
'on':
|
||||||
|
schedule:
|
||||||
|
- cron: "55 12 * * 1" # semi-random time
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
close-issues:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v8
|
||||||
|
with:
|
||||||
|
days-before-stale: 120
|
||||||
|
days-before-close: 60
|
||||||
|
exempt-issue-labels: bug,pinned,security,planned
|
||||||
|
exempt-pr-labels: bug,pinned,security,planned
|
||||||
|
stale-issue-label: "stale"
|
||||||
|
stale-pr-label: "stale"
|
||||||
|
stale-issue-message: |
|
||||||
|
This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
|
||||||
|
|
||||||
|
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
|
||||||
|
close-issue-message: |
|
||||||
|
This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
|
||||||
|
stale-pr-message: |
|
||||||
|
This pr has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!
|
||||||
|
|
||||||
|
Please read [this blog post](https://www.jeffgeerling.com/blog/2020/enabling-stale-issue-bot-on-my-github-repositories) to see the reasons why I mark issues as stale.
|
||||||
|
close-pr-message: |
|
||||||
|
This pr has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
@ -10,4 +10,4 @@ rules:
|
|||||||
indent-sequences: consistent
|
indent-sequences: consistent
|
||||||
|
|
||||||
ignore: |
|
ignore: |
|
||||||
.github/stale.yml
|
.github/workflows/stale.yml
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Ansible Role: Certbot (for Let's Encrypt)
|
# 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).
|
Installs and configures Certbot (for Let's Encrypt).
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ A list of domains (and other data) for which certs should be generated. You can
|
|||||||
|
|
||||||
certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"
|
certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"
|
||||||
|
|
||||||
The `certbot_create_command` defines the command used to generate the cert.
|
The `certbot_create_command` defines the command used to generate the cert. See the full default command inside `defaults/main.yml` for a full example—and you can easily add in extra arguments that are not in the default command with the `certbot_create_extra_args` variable.
|
||||||
|
|
||||||
#### Standalone Certificate Generation
|
#### Standalone Certificate Generation
|
||||||
|
|
||||||
|
@ -13,13 +13,16 @@ 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: []
|
||||||
# - email: janedoe@example.com
|
# - name: example.com
|
||||||
|
# email: janedoe@example.com
|
||||||
# webroot: "/var/www/html/"
|
# webroot: "/var/www/html/"
|
||||||
# domains:
|
# domains:
|
||||||
# - example1.com
|
# - example1.com
|
||||||
@ -33,15 +36,22 @@ 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 }}
|
||||||
|
--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
|
||||||
|
@ -7,12 +7,8 @@ galaxy_info:
|
|||||||
description: "Installs and configures Certbot (for Let's Encrypt)."
|
description: "Installs and configures Certbot (for Let's Encrypt)."
|
||||||
company: "Midwestern Mac, LLC"
|
company: "Midwestern Mac, LLC"
|
||||||
license: "license (BSD, MIT)"
|
license: "license (BSD, MIT)"
|
||||||
min_ansible_version: 2.4
|
min_ansible_version: 2.10
|
||||||
platforms:
|
platforms:
|
||||||
- name: EL
|
|
||||||
versions:
|
|
||||||
- 7
|
|
||||||
- 8
|
|
||||||
- name: Fedora
|
- name: Fedora
|
||||||
versions:
|
versions:
|
||||||
- all
|
- all
|
||||||
|
@ -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
|
||||||
|
@ -2,11 +2,13 @@
|
|||||||
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:-centos7}-ansible:latest"
|
image: "geerlingguy/docker-${MOLECULE_DISTRO:-rockylinux9}-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
|
||||||
|
@ -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'
|
||||||
|
@ -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'
|
||||||
|
@ -91,7 +91,8 @@
|
|||||||
certbot_create_if_missing: true
|
certbot_create_if_missing: true
|
||||||
certbot_create_standalone_stop_services: []
|
certbot_create_standalone_stop_services: []
|
||||||
certbot_certs:
|
certbot_certs:
|
||||||
- domains:
|
- name: certbot-test.servercheck.in
|
||||||
|
domains:
|
||||||
- certbot-test.servercheck.in
|
- certbot-test.servercheck.in
|
||||||
nginx_vhosts:
|
nginx_vhosts:
|
||||||
- listen: "443 ssl http2"
|
- listen: "443 ssl http2"
|
||||||
|
@ -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.
|
- name: Check if certificate already exists.
|
||||||
stat:
|
stat:
|
||||||
path: /etc/letsencrypt/live/{{ cert_item.domains | first | replace('*.', '') }}/cert.pem
|
path: /etc/letsencrypt/live/{{ cert_item_name }}/cert.pem
|
||||||
register: letsencrypt_cert
|
register: letsencrypt_cert
|
||||||
|
|
||||||
- name: Ensure pre and post hook folders exist.
|
- name: Ensure pre and post hook folders exist.
|
||||||
@ -37,6 +41,23 @@
|
|||||||
- 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
|
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.
|
- name: Check if certificate already exists.
|
||||||
stat:
|
stat:
|
||||||
path: /etc/letsencrypt/live/{{ cert_item.domains | first }}/cert.pem
|
path: /etc/letsencrypt/live/{{ cert_item_name }}/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
|
||||||
@ -9,6 +13,23 @@
|
|||||||
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
|
when: not letsencrypt_cert.stat.exists or letsencrypt_cert_domains_changed | default(false)
|
||||||
|
@ -1,30 +1,11 @@
|
|||||||
---
|
---
|
||||||
# See: https://github.com/geerlingguy/ansible-role-certbot/issues/107
|
# See: https://github.com/geerlingguy/ansible-role-certbot/issues/107
|
||||||
- block:
|
- name: Ensure dnf-plugins are installed on Rocky/AlmaLinux.
|
||||||
|
|
||||||
- name: Ensure dnf-plugins are installed on CentOS 8+.
|
|
||||||
yum:
|
yum:
|
||||||
name: dnf-plugins-core
|
name: dnf-plugins-core
|
||||||
state: present
|
state: present
|
||||||
|
|
||||||
- block:
|
- name: Enable DNF module for Rocky/AlmaLinux.
|
||||||
|
|
||||||
- name: Enable DNF module for CentOS 8.3+.
|
|
||||||
shell: |
|
shell: |
|
||||||
dnf config-manager --set-enabled powertools
|
dnf config-manager --set-enabled crb
|
||||||
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.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
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user