1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
- name: Set up Lets Encrypt
hosts: ramble-hard
vars_files:
- ../vars.private
tasks:
- apt:
update_cache: yes
- package:
name:
- certbot
- nginx
- service:
name: nginx
state: stopped
- command: >
certbot certonly --standalone --preferred-challenges http
-n --agree-tos -m {{ lets_encrypt.email }}
-d {{ tld }}
vars:
tld: "{{ item.value['subdomain'] | default(item.key) }}.{{ domain }}"
loop: "{{ apps | dict2items }}"
- service:
name: nginx
state: started
- template:
src: renew-certs
dest: /etc/cron.daily/renew-certs
mode: +x
- name: Set up nginx proxies
hosts: ramble-hard
vars_files:
- ../vars.private
tasks:
- template:
src: nginx.conf
dest: /etc/nginx/sites-available/{{ item.key }}.conf
vars:
server_name: "{{ item.value['subdomain'] | default(item.key) }}.{{ domain }}"
port: "{{ item.value['port'] }}"
loop: "{{ apps | dict2items }}"
notify: Restart nginx
- file:
src: /etc/nginx/sites-available/{{ item.key }}.conf
dest: /etc/nginx/sites-enabled/{{ item.key }}.conf
state: link
loop: "{{ apps | dict2items }}"
notify: Restart nginx
handlers:
- name: Restart nginx
service:
name: nginx
state: restarted