Skip to content

Commit

Permalink
Merge pull request geerlingguy#14 from geerlingguy/certbot-auto-renew
Browse files Browse the repository at this point in the history
Fixes geerlingguy#13: Certbot auto renew cron job
  • Loading branch information
geerlingguy authored Jan 21, 2017
2 parents 353747a + 7c8e2e5 commit 222d57c
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 3 deletions.
17 changes: 14 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,26 @@ Certbot code repository options. This role clones the agent from the configured

The directory inside which Certbot will be cloned.

certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30

By default, this role configures a cron job to run under the provided user account at the given hour and minute, every day. The defaults run `certbot-auto renew` via cron every day at 03:30:00 by the user you use in your Ansible playbook. It's preferred that you set a custom user/hour/minute so the renewal is during a low-traffic period and done by a non-root user account.

## Dependencies

None.

## Example Playbook

- hosts: servers

vars:
certbot_auto_renew_user: your_username_here
certbot_auto_renew_minute: 20
certbot_auto_renew_hour: 5

roles:
- geerlingguy.certbot

Expand All @@ -38,9 +51,7 @@ After installation, you can create certificates using the `certbot-auto` script,
# Generate certs, but don't modify Apache configuration (safer).
/opt/certbot/certbot-auto --apache certonly

To set up renewals, you should run the following command periodically (e.g. once or twice per day):

/opt/certbot/certbot-auto renew --quiet --no-self-upgrade
By default, this role adds a cron job that will renew all installed certificates once per day at the hour and minute of your choosing.

You can test the auto-renewal (without actually renewing the cert) with the command:

Expand Down
8 changes: 8 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
---
# Where to get Certbot.
certbot_repo: https://github.com/certbot/certbot.git
certbot_version: master
certbot_keep_updated: yes

# Where to put Certbot.
certbot_dir: /opt/certbot

# How to keep Certbot certs up to date.
certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30
9 changes: 9 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,12 @@
file:
path: "{{ certbot_dir }}/certbot-auto"
mode: 0755

- name: Add cron job for 'certbot-auto renew' (if configured).
cron:
name: Certbot automatic renewal.
job: "{{ certbot_dir }}/certbot-auto renew --quiet --no-self-upgrade"
minute: "{{ certbot_auto_renew_minute }}"
hour: "{{ certbot_auto_renew_hour }}"
user: "{{ certbot_auto_renew_user }}"
when: certbot_auto_renew
8 changes: 8 additions & 0 deletions tests/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@
when: ansible_os_family == 'Debian'
changed_when: false

- name: Install cron (RedHat).
yum: name=cronie state=present
when: ansible_os_family == 'RedHat'

- name: Install cron (Debian).
apt: name=cron state=present
when: ansible_os_family == 'Debian'

roles:
- geerlingguy.git
- role_under_test

0 comments on commit 222d57c

Please sign in to comment.