mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-20 03:11:46 +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.
88 lines
3.1 KiB
Markdown
88 lines
3.1 KiB
Markdown
# Ansible Dev Lifecycle (parallel to bash scripts)
|
|
|
|
Experimental Ansible-based lifecycle for a single-node Spinifex dev host.
|
|
Lives alongside the existing `scripts/dev-*.sh` and `scripts/reset-dev-env.sh`;
|
|
neither set is removed. Decide which to keep after parity testing.
|
|
|
|
Plan: `docs/development/improvements/ansible-dev-lifecycle.md` (mulga top-level).
|
|
Bead: `mulga-siv-9`.
|
|
|
|
## Prerequisites
|
|
|
|
Venv lives at sub-repo root (`spinifex/.venv/`) — one venv per sub-repo,
|
|
shared by any future python tooling in spinifex. Bootstrap from `spinifex/`:
|
|
|
|
```
|
|
sudo apt install python3.13-venv
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install 'ansible>=9'
|
|
ansible-galaxy collection install -r scripts/ansible/requirements.yml
|
|
```
|
|
|
|
Then `cd scripts/ansible` to run playbooks — `ansible.cfg` resolves the
|
|
inventory and roles relative to CWD.
|
|
|
|
## Playbooks
|
|
|
|
| Playbook | Purpose | Bash parity |
|
|
|---|---|---|
|
|
| `playbooks/dev-preflight.yml` | Dependency + port check | `dev-setup.sh` §checks |
|
|
| `playbooks/dev-teardown.yml` | Wipe state only (no reinstall) | `reset-dev-env.sh` §teardown |
|
|
| `playbooks/dev-install.yml` | Build + install + init + smoketest on clean box | `dev-install.sh` |
|
|
| `playbooks/dev-reset.yml` | Capture settings → teardown → build → install → init → smoketest | `reset-dev-env.sh` (full) |
|
|
|
|
Upcoming (not yet implemented):
|
|
|
|
- `dev-mode-start.yml` / `dev-mode-stop.yml` — parity with `start-dev.sh` / `stop-dev.sh`
|
|
(lowest priority — deprecated bash scripts, CI-only callers).
|
|
|
|
## Invocation
|
|
|
|
```
|
|
ansible-playbook playbooks/dev-preflight.yml
|
|
ansible-playbook playbooks/dev-teardown.yml
|
|
ansible-playbook playbooks/dev-install.yml
|
|
ansible-playbook playbooks/dev-reset.yml
|
|
```
|
|
|
|
Or via `make` (from `spinifex/`):
|
|
|
|
```
|
|
make ansible-dev-preflight
|
|
make ansible-dev-teardown
|
|
make ansible-dev-install
|
|
make ansible-dev-reset
|
|
```
|
|
|
|
## Variable overrides
|
|
|
|
Defaults in `vars/defaults.yml`. Override per run with `-e`:
|
|
|
|
```
|
|
ansible-playbook playbooks/dev-teardown.yml -e spinifex_wipe_ssh_keys=true
|
|
```
|
|
|
|
Useful overrides:
|
|
|
|
| Var | Default | What it does |
|
|
|---|---|---|
|
|
| `spinifex_wipe_legacy_home` | `true` | Remove `$HOME/spinifex` (legacy dev-mode path) |
|
|
| `spinifex_wipe_ssh_keys` | `false` | Remove `~/.ssh/spinifex-key*` |
|
|
| `spinifex_wipe_aws_creds` | `false` | Remove spinifex profile from `~/.aws/credentials` |
|
|
| `teardown_process_wait_seconds` | `30` | Grace period for processes to exit |
|
|
| `spinifex_region` | `ap-southeast-2` | Region passed to `spx admin init` |
|
|
| `spinifex_az` | `{{ region }}a` | AZ passed to `spx admin init` |
|
|
| `spinifex_external_mode` | `pool` | `pool` \| `nat` external networking |
|
|
| `spinifex_build_lb_image` | `true` | Build + import LB system image after init |
|
|
|
|
`dev-reset.yml` automatically captures `region`, `az`, `external_mode`,
|
|
pool range, gateway, prefix-len, nat gateway_ip from the existing
|
|
`/etc/spinifex/spinifex.toml` before teardown and replays them into
|
|
`init`. Use `-e` to override.
|
|
|
|
## Leak catalog
|
|
|
|
`roles/teardown/README.md` tracks every known state source. When teardown
|
|
misses something, add it there and in `roles/teardown/tasks/main.yml`.
|