aboutsummaryrefslogtreecommitdiffstats
path: root/site.yml
blob: f55eef10254b774db24111d28ca02acc797ba872 (plain)
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
66
67
68
69
70
71
72
73
74
---
# Site playbook
#
# Usage:
#   ansible-playbook -i inventory/test site.yml
#   ansible-playbook -i inventory/test site.yml --limit test_vm
#   ansible-playbook -i inventory/test site.yml --limit ingress
#   ansible-playbook -i inventory/prod site.yml

- name: Configure host
  hosts: servers
  tags: [host]
  vars_files:
    - secrets.yml
  vars:
    lan_ipv4_network: 192.168.0.0/16
    lan_search_domain: local.jan.systems
    ingress_ip: "{{ jail_lan_cidr | ipv4_nth(1 + jail_lan_offset | int) }}"
  pre_tasks:
    - name: Verify secrets are loaded
      assert:
        that: smtp_user != ''
        fail_msg: "Required variables missing. Did you forget to create secrets.yml?"
      no_log: true

  tasks:
    - name: Apply host roles
      include_role:
        name: "{{ item }}"
      loop: "{{ host_roles }}"

- name: Provision jails
  hosts: jails
  serial: 1
  gather_facts: false
  vars_files:
    - secrets.yml
  vars:
    lan_ipv4_network: 192.168.0.0/16
    lan_search_domain: local.jan.systems
    ingress_ip: "{{ jail_lan_cidr | ipv4_nth(1 + jail_lan_offset | int) }}"
  pre_tasks:
    - name: Resolve jail role directory
      set_fact:
        jail_name: "{{ ansible_jail_name }}"
        jail_num: "{{ _jail_dir | basename | split('_') | first | int }}"
        jail_role_dir: "{{ _jail_dir }}"
      vars:
        _jail_dir: '{{ lookup(''pipe'', ''find '' + playbook_dir + ''/roles/jails -maxdepth 1 -type d -name "*_'' + ansible_jail_name + ''"'') }}'

    - name: Discover jail directories
      find:
        paths: "{{ playbook_dir }}/roles/jails"
        patterns: "main.yml"
        file_type: file
        recurse: true
      delegate_to: localhost
      register: _jail_specs

    - name: Build jails list
      set_fact:
        jails: "{{ jails | default([]) + [{'num': _num, 'name': _name}] }}"
      vars:
        _num: "{{ item.path | regex_replace('.*/jails/([^/]+)/.*', '\\1') | split('_') | first | int }}"
        _name: "{{ item.path | regex_replace('.*/jails/([^/]+)/.*', '\\1') | regex_replace('^[0-9]+_', '') }}"
      loop: "{{ _jail_specs.files | sort(attribute='path') }}"
      loop_control:
        label: "{{ item.path | regex_replace('.*/jails/([^/]+)/.*', '\\1') }}"
      when: "'/defaults/' in item.path"

  tasks:
    - name: Apply jail role
      include_role:
        name: "{{ jail_role_dir }}"