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.
68 lines
2.2 KiB
YAML
68 lines
2.2 KiB
YAML
---
|
|
- name: Dev install — build, install, init, smoketest (idempotent)
|
|
hosts: localhost
|
|
gather_facts: true
|
|
vars_files:
|
|
- ../vars/defaults.yml
|
|
|
|
pre_tasks:
|
|
- name: preflight
|
|
ansible.builtin.include_role:
|
|
name: preflight
|
|
|
|
- name: health — config file present?
|
|
ansible.builtin.stat:
|
|
path: "{{ spinifex_config_file }}"
|
|
register: health_config
|
|
|
|
- name: health — spinifex.target active?
|
|
become: true
|
|
ansible.builtin.command: systemctl is-active spinifex.target
|
|
register: health_target
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: health — awsgw responds?
|
|
become: true
|
|
become_user: "{{ spinifex_invoking_user }}"
|
|
environment:
|
|
AWS_PROFILE: spinifex
|
|
ansible.builtin.command: aws ec2 describe-regions
|
|
register: health_gw
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: health — spx binary installed?
|
|
ansible.builtin.stat:
|
|
path: /usr/local/bin/spx
|
|
register: health_spx
|
|
|
|
- name: health — set already_installed fact
|
|
ansible.builtin.set_fact:
|
|
spinifex_already_installed: >-
|
|
{{ health_config.stat.exists
|
|
and health_spx.stat.exists
|
|
and (health_target.stdout | trim) == 'active'
|
|
and health_gw.rc == 0 }}
|
|
|
|
- name: health — summary
|
|
ansible.builtin.debug:
|
|
msg: |
|
|
Health:
|
|
spx binary: {{ 'present' if health_spx.stat.exists else 'missing' }}
|
|
config: {{ 'present' if health_config.stat.exists else 'missing' }}
|
|
target: {{ health_target.stdout | trim }}
|
|
awsgw: {{ 'ok' if health_gw.rc == 0 else 'not responding' }}
|
|
Already installed: {{ spinifex_already_installed }}
|
|
{% if spinifex_already_installed %}
|
|
→ Skipping build/install/init. Smoketest only.
|
|
{% else %}
|
|
→ Running full build → install → init → smoketest.
|
|
{% endif %}
|
|
|
|
roles:
|
|
- { role: build, when: not (spinifex_already_installed | default(false)) }
|
|
- { role: install, when: not (spinifex_already_installed | default(false)) }
|
|
- { role: init, when: not (spinifex_already_installed | default(false)) }
|
|
- smoketest
|