mirror of
https://github.com/geerlingguy/ansible-role-certbot.git
synced 2026-08-22 07:50:43 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ab7f2db23 | ||
|
|
1278651f0d | ||
|
|
3d2fbc6202 | ||
|
|
4f1179392e | ||
|
|
e5bfeaf936 | ||
|
|
9045ec5a59 | ||
|
|
98ea3238ed | ||
|
|
06ca208bb6 | ||
|
|
78f4cb5ad5 | ||
|
|
d1cbcde4de | ||
|
|
03f4cc3a99 | ||
|
|
63638f4471 | ||
|
|
4be771f12a | ||
|
|
de52a1f4c8 | ||
|
|
cb3b03f435 | ||
|
|
5a23e85f1c | ||
|
|
08543f45b2 | ||
|
|
84642924df | ||
|
|
3fcd4e0258 |
@@ -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.
|
|
||||||
@@ -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'
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 +13,9 @@ 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
|
||||||
@@ -27,14 +29,18 @@ 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 '' }}
|
||||||
{{ '--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 }}
|
||||||
-d {{ cert_item.domains | join(',') }}
|
-d {{ cert_item.domains | join(',') }}
|
||||||
{{ '--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'
|
||||||
|
|||||||
+1
-5
@@ -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'
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Check if certificate already exists.
|
|
||||||
stat:
|
|
||||||
path: /etc/letsencrypt/live/{{ cert_item.domains | first | replace('*.', '') }}/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 }}
|
||||||
@@ -39,4 +34,5 @@
|
|||||||
|
|
||||||
- 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
|
register: certbot_create
|
||||||
|
changed_when: "'no action taken' not in certbot_create.stdout"
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Check if certificate already exists.
|
|
||||||
stat:
|
|
||||||
path: /etc/letsencrypt/live/{{ cert_item.domains | first }}/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) }}"
|
||||||
@@ -11,4 +6,5 @@
|
|||||||
|
|
||||||
- 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
|
register: certbot_create
|
||||||
|
changed_when: "'no action taken' not in certbot_create.stdout"
|
||||||
|
|||||||
+8
-27
@@ -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.
|
||||||
|
yum:
|
||||||
|
name: dnf-plugins-core
|
||||||
|
state: present
|
||||||
|
|
||||||
- name: Ensure dnf-plugins are installed on CentOS 8+.
|
- name: Enable DNF module for Rocky/AlmaLinux.
|
||||||
yum:
|
shell: |
|
||||||
name: dnf-plugins-core
|
dnf config-manager --set-enabled crb
|
||||||
state: present
|
changed_when: false
|
||||||
|
|
||||||
- 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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user