roles/certbot: Set up Let's Encrypt certificates
The *certbot* role installs and configures the `certbot` ACME client. It adjusts the default configuration to allow the tool to run as an unprivileged user, and then configures Apache to work with the *webroot* plugin. It registers for an account and requests a certificate for the domains specified by the `certbot_domains` Ansible variable. Finally, it enables the *certbot-renew.timer* systemd unit to schedule automatic renewal of all Let's Encrypt certificates.jenkins-master
parent
efc6b62903
commit
c6a50313dc
|
@ -0,0 +1,9 @@
|
|||
Alias /.well-known/acme-challenge /var/www/certbot/.well-known/acme-challenge
|
||||
|
||||
<IfModule mod_proxy.c>
|
||||
ProxyPass /.well-known/acme-challenge !
|
||||
</IfModule>
|
||||
|
||||
<Directory /var/www/certbot>
|
||||
Require all granted
|
||||
</Directory>
|
|
@ -0,0 +1,4 @@
|
|||
- name: reload httpd
|
||||
service:
|
||||
name=httpd
|
||||
state=reloaded
|
|
@ -0,0 +1,80 @@
|
|||
- name: ensure certbot is installed
|
||||
package:
|
||||
name=certbot
|
||||
state=present
|
||||
|
||||
- name: ensure certbot group exists
|
||||
group:
|
||||
name=certbot
|
||||
system=yes
|
||||
- name: ensure certbot user exists
|
||||
user:
|
||||
name=certbot
|
||||
group=certbot
|
||||
system=yes
|
||||
home=/var/lib/letsencrypt
|
||||
createhome=no
|
||||
state=present
|
||||
|
||||
- name: ensure certbot data directory exists
|
||||
file:
|
||||
path=/var/lib/letsencrypt
|
||||
mode=0755
|
||||
owner=certbot
|
||||
group=certbot
|
||||
state=directory
|
||||
- name: ensure certbot log directory exists
|
||||
file:
|
||||
path=/var/log/letsencrypt
|
||||
mode=0755
|
||||
owner=certbot
|
||||
group=certbot
|
||||
state=directory
|
||||
|
||||
- name: ensure certbot webroot directory exits
|
||||
file:
|
||||
path=/var/www/certbot
|
||||
mode=0755
|
||||
owner=certbot
|
||||
group=certbot
|
||||
state=directory
|
||||
- name: ensure apache is configured for certbot
|
||||
copy:
|
||||
src=certbot.httpd.conf
|
||||
dest=/etc/httpd/conf.d/certbot.conf
|
||||
mode=0644
|
||||
notify: reload httpd
|
||||
|
||||
- name: ensure certbot account is registered
|
||||
become: true
|
||||
become_user: certbot
|
||||
command:
|
||||
certbot register --config-dir /var/lib/letsencrypt
|
||||
--agree-tos --email {{ certbot_account_email }}
|
||||
creates=/var/lib/letsencrypt/accounts/acme-v01.api.letsencrypt.org
|
||||
|
||||
- name: ensure certbot certificate exists
|
||||
become: true
|
||||
become_user: certbot
|
||||
command:
|
||||
certbot certonly --config-dir /var/lib/letsencrypt
|
||||
--webroot --webroot-path /var/www/certbot
|
||||
{% for domain in certbot_domains %}
|
||||
-d {{ domain }}
|
||||
{% endfor %}
|
||||
creates=/var/lib/letsencrypt/live/{{ certbot_domains[0] }}/fullchain.pem
|
||||
|
||||
- name: ensure certbot service is configured
|
||||
template:
|
||||
src=certbot.sysconfig.j2
|
||||
dest=/etc/sysconfig/certbot
|
||||
mode=0644
|
||||
|
||||
- name: ensure certbot timer is enabled
|
||||
service:
|
||||
name=certbot-renew.timer
|
||||
enabled=yes
|
||||
- name: ensure certbot timer is started
|
||||
service:
|
||||
name=certbot-renew.timer
|
||||
state=started
|
|
@ -0,0 +1,49 @@
|
|||
|
||||
## NOTE ##
|
||||
# If a hook is set here then it will be used for all
|
||||
# certificates and will override any per certificate
|
||||
# hook configuration in place.
|
||||
|
||||
# Command to be run in a shell before obtaining any
|
||||
# certificates. Intended primarily for renewal, where it
|
||||
# can be used to temporarily shut down a webserver that
|
||||
# might conflict with the standalone plugin. This will
|
||||
# only be called if a certificate is actually to be
|
||||
# obtained/renewed. When renewing several certificates
|
||||
# that have identical pre-hooks, only the first will be
|
||||
# executed.
|
||||
#
|
||||
# An example to stop the MTA before updating certs would be
|
||||
# PRE_HOOK="--pre-hook 'systemctl stop postfix'"
|
||||
PRE_HOOK=""
|
||||
|
||||
# Command to be run in a shell after attempting to
|
||||
# obtain/renew certificates. Can be used to deploy
|
||||
# renewed certificates, or to restart any servers that
|
||||
# were stopped by --pre-hook. This is only run if an
|
||||
# attempt was made to obtain/renew a certificate. If
|
||||
# multiple renewed certificates have identical post-
|
||||
# hooks, only one will be run.
|
||||
#
|
||||
# An example to restart httpd would be:
|
||||
# POST_HOOK="--post-hook 'systemctl restart httpd'"
|
||||
POST_HOOK=""
|
||||
|
||||
# Command to be run in a shell once for each
|
||||
# successfully renewed certificate. For this command,
|
||||
# the shell variable $RENEWED_LINEAGE will point to the
|
||||
# config live subdirectory containing the new certs and
|
||||
# keys; the shell variable $RENEWED_DOMAINS will contain
|
||||
# a space-delimited list of renewed cert domains
|
||||
#
|
||||
# An example to run a script to alert each cert would be:
|
||||
# RENEW_HOOK="--renew-hook /usr/local/bin/cert-notifier.sh"
|
||||
RENEW_HOOK=""
|
||||
|
||||
# Any other misc arguments for the renewal
|
||||
# See certbot -h renew for full list
|
||||
#
|
||||
# An example to force renewal for certificates not due yet
|
||||
# CERTBOT_ARGS="--force-renewal"
|
||||
CERTBOT_ARGS="--config-dir /var/lib/letsencrypt"
|
||||
|
Loading…
Reference in New Issue