Initial commit
This commit is contained in:
commit
aa9e1b2346
7 changed files with 91 additions and 0 deletions
3
defaults/main.yml
Normal file
3
defaults/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
certbot_os_supported: False
|
||||
|
10
example_playbook.yml
Normal file
10
example_playbook.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
- hosts: certbot.machine.tld
|
||||
roles:
|
||||
- certbot
|
||||
vars:
|
||||
certbot_mail_address: mail@example.com
|
||||
certbot_domains:
|
||||
- primary.my.tld
|
||||
- another.my.tld
|
||||
certbot_post_renewal_script: |
|
||||
scp /etc/letsencrypt/live/primary.my.tld/fullchain.pem remote:/etc/certdest
|
1
handlers/main.yml
Normal file
1
handlers/main.yml
Normal file
|
@ -0,0 +1 @@
|
|||
---
|
2
meta/main.yml
Normal file
2
meta/main.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
galaxy_info:
|
62
tasks/main.yml
Normal file
62
tasks/main.yml
Normal file
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
- name: Set OS dependent variables
|
||||
ansible.builtin.include_vars: "{{ lookup('first_found', params) }}"
|
||||
vars:
|
||||
params:
|
||||
files:
|
||||
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_version | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}_{{ ansible_distribution_major_version | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}.yml"
|
||||
- "{{ ansible_os_family | lower }}.yml"
|
||||
- "{{ ansible_system | lower }}.yml"
|
||||
paths:
|
||||
- '{{ role_path }}/vars'
|
||||
ignore_errors: True
|
||||
|
||||
- name: OS is supported
|
||||
ansible.builtin.assert:
|
||||
that: __os_supported
|
||||
quiet: True
|
||||
vars:
|
||||
__os_supported: "{{ lookup('vars', '{}_os_supported'.format(role_name)) | bool }}"
|
||||
|
||||
- name: Install certbot
|
||||
apt:
|
||||
state: latest
|
||||
pkg:
|
||||
- certbot
|
||||
update_cache: yes
|
||||
|
||||
- name: Set renewal script if desired
|
||||
copy:
|
||||
content: "{{ certbot_post_renewal_script }}"
|
||||
dest: "{{ certbot_renewal_scripts_path }}{{ certbot_domains[0] }}.sh"
|
||||
mode: 0700
|
||||
when: certbot_post_renewal_script is defined
|
||||
|
||||
- name: Set certbot systemd service
|
||||
template:
|
||||
src: certbot.service.j2
|
||||
dest: "{{ certbot_service_path }}"
|
||||
mode: 0600
|
||||
|
||||
- name: Ensure certbot systemd service is enabled
|
||||
systemd:
|
||||
name: certbot.service
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Ensure certbot systemd timer is enabled
|
||||
systemd:
|
||||
name: certbot.timer
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Check whether the cert already exists
|
||||
stat:
|
||||
path: "{{ certbot_live_certs_path }}{{ certbot_domains[0] }}/fullchain.pem"
|
||||
register: live_cert
|
||||
|
||||
- name: Obtain certificate
|
||||
shell: certbot certonly --standalone --rsa-key-size 4096 {% for domain in certbot_domains %}-d {{ domain }} {% endfor %}-m {{ certbot_mail_address }} --agree-tos
|
||||
when: live_cert.stat.exists == False
|
8
templates/certbot.service.j2
Normal file
8
templates/certbot.service.j2
Normal file
|
@ -0,0 +1,8 @@
|
|||
[Unit]
|
||||
Description=Certbot
|
||||
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
|
||||
Documentation=https://letsencrypt.readthedocs.io/en/latest/
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/certbot -q renew; find {{ certbot_renewal_scripts_path }} -name "*.sh" -exec {} \;
|
||||
PrivateTmp=true
|
5
vars/debian.yml
Normal file
5
vars/debian.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
certbot_os_supported: True
|
||||
|
||||
certbot_renewal_scripts_path: /etc/certbot/renewal_scripts/
|
||||
certbot_live_certs_path: /etc/letsencrypt/live/
|
Loading…
Add table
Add a link
Reference in a new issue