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