mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-19 19:01:42 +00:00
b7dea45ee0
Playbooks for preflight / teardown / install / reset covering the same ground as dev-install.sh, dev-setup.sh, reset-dev-env.sh. Existing bash scripts untouched — decide which to keep after parity testing. - roles/teardown + teardown catalog README track every known state source; add a task + row when a leak is reported. - roles/init gates smoketest on awsgw readiness (describe-regions poll). - roles/smoketest is dup-tolerant, retry-wrapped, auto-terminates the launched instance. - dev-install.yml skips build/install/init when a healthy environment is already present (4-signal health check), always runs smoketest. - dev-reset.yml captures region/az/external-mode scalars from the existing spinifex.toml and replays them into init. Plan: docs/development/improvements/ansible-dev-lifecycle.md (mulga). Bead: mulga-siv-9.
58 lines
2.7 KiB
YAML
58 lines
2.7 KiB
YAML
---
|
|
- name: Dev reset — capture settings, wipe, rebuild, reinstall, re-init, smoketest
|
|
hosts: localhost
|
|
gather_facts: true
|
|
vars_files:
|
|
- ../vars/defaults.yml
|
|
|
|
pre_tasks:
|
|
- name: capture — check existing spinifex.toml
|
|
ansible.builtin.stat:
|
|
path: "{{ spinifex_config_file }}"
|
|
register: reset_config_stat
|
|
|
|
- name: capture — slurp existing config
|
|
ansible.builtin.slurp:
|
|
src: "{{ spinifex_config_file }}"
|
|
register: reset_config_raw
|
|
when: reset_config_stat.stat.exists
|
|
|
|
- name: capture — decode config
|
|
ansible.builtin.set_fact:
|
|
reset_config_txt: "{{ reset_config_raw.content | b64decode }}"
|
|
when: reset_config_stat.stat.exists
|
|
|
|
# List-concat-and-take-first pattern: missing regex match falls back to current default.
|
|
- name: capture — extract scalars
|
|
ansible.builtin.set_fact:
|
|
spinifex_region: "{{ (reset_config_txt | regex_findall('region\\s*=\\s*\"([^\"]+)\"') + [spinifex_region])[0] }}"
|
|
spinifex_az: "{{ (reset_config_txt | regex_findall('\\baz\\s*=\\s*\"([^\"]+)\"') + [spinifex_az])[0] }}"
|
|
spinifex_external_mode: "{{ (reset_config_txt | regex_findall('external_mode\\s*=\\s*\"([^\"]+)\"') + [spinifex_external_mode])[0] }}"
|
|
spinifex_external_pool_start: "{{ (reset_config_txt | regex_findall('range_start\\s*=\\s*\"([^\"]+)\"') + [spinifex_external_pool_start])[0] }}"
|
|
spinifex_external_pool_end: "{{ (reset_config_txt | regex_findall('range_end\\s*=\\s*\"([^\"]+)\"') + [spinifex_external_pool_end])[0] }}"
|
|
spinifex_external_gateway: "{{ (reset_config_txt | regex_findall('gateway\\s*=\\s*\"([^\"]+)\"') + [spinifex_external_gateway])[0] }}"
|
|
spinifex_external_prefix_len: "{{ (reset_config_txt | regex_findall('prefix_len\\s*=\\s*([0-9]+)') + [spinifex_external_prefix_len | string])[0] }}"
|
|
spinifex_nat_gateway_ip: "{{ (reset_config_txt | regex_findall('gateway_ip\\s*=\\s*\"([^\"]+)\"') + [spinifex_nat_gateway_ip])[0] }}"
|
|
when: reset_config_stat.stat.exists
|
|
|
|
- name: capture — summary
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
{% if reset_config_stat.stat.exists %}
|
|
Captured settings from {{ spinifex_config_file }}:
|
|
region={{ spinifex_region }}, az={{ spinifex_az }}
|
|
external_mode={{ spinifex_external_mode }}
|
|
pool={{ spinifex_external_pool_start }}-{{ spinifex_external_pool_end }}
|
|
gateway={{ spinifex_external_gateway }}, prefix={{ spinifex_external_prefix_len }}
|
|
nat_gateway={{ spinifex_nat_gateway_ip }}
|
|
{% else %}
|
|
No existing config; using defaults from vars/defaults.yml (or -e overrides).
|
|
{% endif %}
|
|
|
|
roles:
|
|
- teardown
|
|
- build
|
|
- install
|
|
- init
|
|
- smoketest
|