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 }}"
|