Compare commits

...
16 Commits
Author SHA1 Message Date
Jeff GeerlingandGitHub 3dedd45961 Merge pull request #16 from Kaurin/master
Git force: yes
2017-01-30 22:34:53 -06:00
Kaurin 806d612fab Adding 'force: yes' to the git section
to prevent 'local changes in working tree'
messages
2017-01-31 02:09:32 +00:00
Jeff Geerling 52dbc87e22 Update the author's URL. Now with more HTTPS! 2017-01-21 19:59:54 -06:00
Jeff GeerlingandGitHub 222d57cb2e Merge pull request #14 from geerlingguy/certbot-auto-renew
Fixes #13: Certbot auto renew cron job
2017-01-21 15:37:44 -06:00
Jeff Geerling 7c8e2e5735 Install correct package on Debian. 2017-01-21 15:33:06 -06:00
Jeff Geerling b5ff8d4886 Update README regarding example usage. 2017-01-21 15:31:40 -06:00
Jeff Geerling bca9164582 Install cron in test environments so tests pass. 2017-01-21 15:28:26 -06:00
Jeff GeerlingandGitHub 353747a915 Merge pull request #7 from Brunty/patch-1
Updated README.md to reference geerlingguy.certbot
2017-01-21 15:17:46 -06:00
Jeff Geerling d76e3915fe Fixes #13: Add certbot-auto renew cron job. 2017-01-21 15:16:45 -06:00
Jeff Geerling a2f63847fd Fixes #9: Add more Galaxy tags. 2017-01-21 15:08:03 -06:00
Jeff Geerling 18e2752f0e Fix test failures on Ubuntu 12.04. 2016-11-23 09:27:48 -06:00
Jeff Geerling ea45b22546 Fix Ubuntu test failures due to apt update. 2016-11-23 09:04:28 -06:00
Jeff Geerling 565678e559 Remove sudo requirement from Travis build. 2016-09-25 15:49:13 -05:00
Jeff Geerling c84f967a08 Update travisfile to not require sudo. 2016-09-25 15:02:10 -05:00
Jeff Geerling 373fa29f60 Adjust Travis file for easier maintenance. 2016-08-31 20:25:44 -05:00
Matt BruntandGitHub eece6540a2 Updated README.md to reference geerlingguy.certbot
It now references geerlingguy.certbot - previously it was referencing geerlingguy.letsencrypt
2016-07-26 16:07:06 +01:00
6 changed files with 63 additions and 30 deletions
+12 -23
View File
@@ -1,60 +1,49 @@
---
sudo: required
services: docker
env:
- repository: geerlingguy/docker-centos7-ansible
version: latest
- distro: centos7
init: /usr/lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
- repository: geerlingguy/docker-centos6-ansible
version: latest
- distro: centos6
init: /sbin/init
run_opts: ""
- repository: geerlingguy/docker-ubuntu1604-ansible
version: latest
- distro: ubuntu1604
init: /lib/systemd/systemd
run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
- repository: geerlingguy/docker-ubuntu1404-ansible
version: latest
- distro: ubuntu1404
init: /sbin/init
run_opts: ""
- repository: geerlingguy/docker-ubuntu1204-ansible
version: latest
- distro: ubuntu1204
init: /sbin/init
run_opts: ""
services:
- docker
before_install:
# Pull container.
- 'sudo docker pull ${repository}:${version}'
- 'docker pull geerlingguy/docker-${distro}-ansible:latest'
script:
- container_id=$(mktemp)
# Run container in detached state.
- 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} ${repository}:${version} "${init}" > "${container_id}"'
- 'docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"'
# Install dependencies.
- 'sudo docker exec "$(cat ${container_id})" ansible-galaxy install -r /etc/ansible/roles/role_under_test/tests/requirements.yml'
- 'docker exec "$(cat ${container_id})" ansible-galaxy install -r /etc/ansible/roles/role_under_test/tests/requirements.yml'
# Ansible syntax check.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check'
# Test role.
- 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml'
- 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml'
# Test role idempotence.
- idempotence=$(mktemp)
- sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | tee -a ${idempotence}
- docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | tee -a ${idempotence}
- >
tail ${idempotence}
| grep -q 'changed=0.*failed=0'
&& (echo 'Idempotence test: pass' && exit 0)
|| (echo 'Idempotence test: fail' && exit 1)
# Clean up.
- 'sudo docker stop "$(cat ${container_id})"'
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
+16 -5
View File
@@ -20,6 +20,13 @@ 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.
@@ -27,8 +34,14 @@ 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.letsencrypt
- geerlingguy.certbot
After installation, you can create certificates using the `certbot-auto` script, which by default is installed inside the configured `certbot_dir`, so by default, `/opt/certbot/certbot-auto`. Here are some example commands to configure certificates with Certbot:
@@ -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:
@@ -54,4 +65,4 @@ MIT / BSD
## Author Information
This role was created in 2016 by [Jeff Geerling](http://jeffgeerling.com/), author of [Ansible for DevOps](http://ansiblefordevops.com/).
This role was created in 2016 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).
+8
View File
@@ -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
+6
View File
@@ -22,3 +22,9 @@ galaxy_info:
- networking
- system
- web
- certbot
- letsencrypt
- encryption
- certificates
- ssl
- https
+10
View File
@@ -5,8 +5,18 @@
dest: "{{ certbot_dir }}"
version: "{{ certbot_version }}"
update: "{{ certbot_keep_updated }}"
force: yes
- name: Ensure certbot-auto is executable.
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
+11 -2
View File
@@ -3,8 +3,17 @@
pre_tasks:
- name: Update apt cache.
apt: update_cache=yes
when: ansible_distribution == 'Ubuntu'
apt: update_cache=yes cache_valid_time=600
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