diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2026-05-13 00:13:57 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2026-05-16 18:42:27 +0300 |
| commit | b5860daf11ac353049cb1654b9414a129e5cfb96 (patch) | |
| tree | 87ed89711e4f0e85ace0a97fa123199152c67302 /site.yml | |
| parent | 4715a28fdcd87440400d17154bfa361d99db29cc (diff) | |
Rework
Diffstat (limited to 'site.yml')
| -rw-r--r-- | site.yml | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/site.yml b/site.yml new file mode 100644 index 0000000..f55eef1 --- /dev/null +++ b/site.yml @@ -0,0 +1,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 }}" |
