summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-04-04 22:58:06 +0300
committerLars Wirzenius <liw@liw.fi>2018-04-04 22:58:06 +0300
commitaa7b08900ba915fdb9f98d57ba68c63e9e43d30f (patch)
tree3c435f3911ca3a5ca8555a1240ea0e67c10af12b /roles
parentadd4595f66730a3c09436b4724518e6304dedf5e (diff)
downloadick2-ansible-aa7b08900ba915fdb9f98d57ba68c63e9e43d30f.tar.gz
Add: Let's Encrypt TLS certificates for controller, artifact store
Diffstat (limited to 'roles')
-rw-r--r--roles/haproxy/templates/haproxy.cfg.j22
-rw-r--r--roles/letsencrypt/defaults/main.yml7
-rw-r--r--roles/letsencrypt/tasks/main.yml56
-rw-r--r--roles/letsencrypt/templates/deploy_certs_haproxy8
4 files changed, 72 insertions, 1 deletions
diff --git a/roles/haproxy/templates/haproxy.cfg.j2 b/roles/haproxy/templates/haproxy.cfg.j2
index 65a3b19..5d41bef 100644
--- a/roles/haproxy/templates/haproxy.cfg.j2
+++ b/roles/haproxy/templates/haproxy.cfg.j2
@@ -32,7 +32,7 @@ defaults
frontend http-in
bind *:80
- bind *:443 ssl no-sslv3 no-tlsv10 crt /etc/ssl/ick.pem
+ bind *:443 ssl no-sslv3 no-tlsv10 crt /etc/haproxy/haproxy.pem
rspadd Strict-Transport-Security:\ max-age=15768000
diff --git a/roles/letsencrypt/defaults/main.yml b/roles/letsencrypt/defaults/main.yml
new file mode 100644
index 0000000..5f8c438
--- /dev/null
+++ b/roles/letsencrypt/defaults/main.yml
@@ -0,0 +1,7 @@
+# Specify a properly configured and functional domain name
+letsencrypt_domain: FIXME
+
+# Specify a working email address
+letsencrypt_email: FIXME
+
+letsencrypt_server_haproxy_crt: /etc/haproxy/haproxy.pem
diff --git a/roles/letsencrypt/tasks/main.yml b/roles/letsencrypt/tasks/main.yml
new file mode 100644
index 0000000..9483ac0
--- /dev/null
+++ b/roles/letsencrypt/tasks/main.yml
@@ -0,0 +1,56 @@
+- name: check required variables
+ fail:
+ msg: "value of {{ item }} should no be FIXME!"
+ with_items:
+ - letsencrypt_domain
+ - letsencrypt_email
+ - letsencrypt_server
+ when: item == "FIXME"
+
+- name: install deploy_certs_haproxy
+ template:
+ src: deploy_certs_haproxy
+ dest: /usr/local/sbin/deploy_certs_haproxy
+ owner: root
+ group: root
+ mode: 0755
+
+- name: install certbot
+ apt:
+ name: certbot
+ default_release: stretch-backports
+
+- name: stop haproxy
+ systemd:
+ name: haproxy
+ state: stopped
+
+- name: fetch new certificate
+ command: >
+ certbot certonly
+ --standalone
+ --noninteractive
+ --domain "{{ letsencrypt_domain }}"
+ --email "{{ letsencrypt_email }}"
+ --agree-tos
+
+- name: install new cert for haproxy
+ command: /usr/local/sbin/deploy_certs_haproxy
+
+- name: start haproxy
+ systemd:
+ name: haproxy
+ state: started
+
+- name: add cron job
+ cron:
+ name: letsencrypt
+ hour: 23
+ minute: 42
+ user: root
+ job: >
+ certbot renew
+ --standalone
+ --quiet
+ --pre-hook "systemctl stop haproxy"
+ --post-hook "/usr/local/sbin/deploy_certs_haproxy && systemctl start haproxy"
diff --git a/roles/letsencrypt/templates/deploy_certs_haproxy b/roles/letsencrypt/templates/deploy_certs_haproxy
new file mode 100644
index 0000000..6c93a80
--- /dev/null
+++ b/roles/letsencrypt/templates/deploy_certs_haproxy
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -eu
+
+cat "/etc/letsencrypt/live/{{ letsencrypt_domain }}/fullchain.pem" \
+ "/etc/letsencrypt/live/{{ letsencrypt_domain }}/privkey.pem" \
+ > "{{ letsencrypt_server_haproxy_crt }}"
+chmod 600 "{{ letsencrypt_server_haproxy_crt }}"