aboutsummaryrefslogtreecommitdiffstats
path: root/site.yml
diff options
context:
space:
mode:
Diffstat (limited to 'site.yml')
-rw-r--r--site.yml38
1 files changed, 36 insertions, 2 deletions
diff --git a/site.yml b/site.yml
index f55eef1..e18d5b7 100644
--- a/site.yml
+++ b/site.yml
@@ -15,7 +15,7 @@
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) }}"
+ ingress_ip: "{{ jail_ips.ingress }}"
pre_tasks:
- name: Verify secrets are loaded
assert:
@@ -23,6 +23,33 @@
fail_msg: "Required variables missing. Did you forget to create secrets.yml?"
no_log: true
+ - 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"
+
+ - name: Build jail_ips dict
+ set_fact:
+ jail_ips: "{{ jail_ips | default({}) | combine({item.name: jail_lan_cidr | ipv4_nth(item.num | int + jail_lan_offset | int)}) }}"
+ loop: "{{ jails }}"
+ loop_control:
+ label: "{{ item.name }}"
+
tasks:
- name: Apply host roles
include_role:
@@ -38,7 +65,7 @@
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) }}"
+ ingress_ip: "{{ jail_ips.ingress }}"
pre_tasks:
- name: Resolve jail role directory
set_fact:
@@ -68,6 +95,13 @@
label: "{{ item.path | regex_replace('.*/jails/([^/]+)/.*', '\\1') }}"
when: "'/defaults/' in item.path"
+ - name: Build jail_ips dict
+ set_fact:
+ jail_ips: "{{ jail_ips | default({}) | combine({item.name: jail_lan_cidr | ipv4_nth(item.num | int + jail_lan_offset | int)}) }}"
+ loop: "{{ jails }}"
+ loop_control:
+ label: "{{ item.name }}"
+
tasks:
- name: Apply jail role
include_role: