2025-09-13 01:32:19 +02:00
|
|
|
|
#!/usr/bin/env bash
|
2025-09-13 02:39:47 +02:00
|
|
|
|
# bin/railiance — thin dispatcher; subcommands live in tools/cmd/*
|
2025-09-13 01:32:19 +02:00
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
2025-09-13 02:39:47 +02:00
|
|
|
|
PATH="${ROOT}/tools/cmd:${PATH}"
|
2025-09-13 01:32:19 +02:00
|
|
|
|
|
|
|
|
|
|
usage() {
|
|
|
|
|
|
cat <<'EOF'
|
2025-09-13 02:39:47 +02:00
|
|
|
|
Usage: bin/railiance <command> [args]
|
2025-09-13 01:32:19 +02:00
|
|
|
|
|
|
|
|
|
|
Commands:
|
2025-09-13 02:39:47 +02:00
|
|
|
|
doctor Check workstation & provisioning toolchains
|
2025-09-13 01:32:19 +02:00
|
|
|
|
next Show canonical first-time sequence
|
2025-09-13 02:39:47 +02:00
|
|
|
|
plan-host Provider-neutral host specs & checklist
|
|
|
|
|
|
gen-ssh-key Generate SSH key and show public part
|
2025-09-13 01:32:19 +02:00
|
|
|
|
cloudinit Emit minimal cloud-init user-data
|
|
|
|
|
|
init-repo Idempotently furnish repo housekeeping
|
2026-06-27 15:54:27 +02:00
|
|
|
|
create-overlay Scaffold a Railiance overlay repo for an upstream app
|
2026-06-27 16:24:17 +02:00
|
|
|
|
run Run Stage 1 local validation from railiance/app.toml
|
2026-06-27 16:51:02 +02:00
|
|
|
|
deploy Plan/apply Stage 2 canary deployment
|
|
|
|
|
|
observe Plan/run Stage 2 observation checks
|
2026-06-27 17:01:11 +02:00
|
|
|
|
promote Plan/apply Stage 3 stable promotion
|
|
|
|
|
|
rollback Plan/apply rollback to previous stable
|
2026-07-02 10:44:06 +02:00
|
|
|
|
deploy-triage-robustness
|
|
|
|
|
|
Deploy ACTIVITY-WP-0016 and prove daily-triage validation
|
|
|
|
|
|
admin-sync-smoke
|
|
|
|
|
|
Run activity-core no-restart POST /admin/sync smoke
|
2025-09-13 01:32:19 +02:00
|
|
|
|
build-spore Build a distributable "Spore" bundle
|
|
|
|
|
|
seed-local Run the seed script on this machine
|
2025-09-13 02:39:47 +02:00
|
|
|
|
checklist Pre-VM checklist
|
2026-02-25 23:59:28 +01:00
|
|
|
|
backup Backup postgres + config to Nextcloud (age-encrypted)
|
|
|
|
|
|
preflight Pre-migration safety gate (must pass before cluster work)
|
2025-09-13 01:32:19 +02:00
|
|
|
|
help Show this help
|
|
|
|
|
|
EOF
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-13 02:39:47 +02:00
|
|
|
|
cmd="${1:-help}"; shift || true
|
2025-09-13 01:32:19 +02:00
|
|
|
|
|
|
|
|
|
|
case "$cmd" in
|
|
|
|
|
|
help) usage ;;
|
2025-09-13 02:39:47 +02:00
|
|
|
|
doctor) exec railiance-doctor "$@" ;;
|
2025-09-13 02:46:48 +02:00
|
|
|
|
plan-host) exec railiance-plan-host "$@" ;;
|
2025-09-13 01:32:19 +02:00
|
|
|
|
gen-ssh-key)
|
2025-09-13 02:39:47 +02:00
|
|
|
|
if ! command -v ssh-keygen >/dev/null 2>&1; then echo "Missing: ssh-keygen" >&2; exit 1; fi
|
2025-09-13 01:32:19 +02:00
|
|
|
|
key="${HOME}/.ssh/id_ed25519"
|
|
|
|
|
|
[[ -f "$key" ]] || ssh-keygen -t ed25519 -N "" -f "$key"
|
2025-09-13 02:39:47 +02:00
|
|
|
|
echo "Public key:"; cat "${key}.pub"
|
2025-09-13 01:32:19 +02:00
|
|
|
|
;;
|
|
|
|
|
|
cloudinit) cat "$ROOT/cloudinit/user-data.yaml" ;;
|
|
|
|
|
|
init-repo) bash "$ROOT/tools/furnish_railiance_repo.sh" ;;
|
2026-06-27 15:54:27 +02:00
|
|
|
|
create-overlay) bash "$ROOT/tools/create_railiance_overlay_repo.sh" "$@" ;;
|
2026-06-27 16:24:17 +02:00
|
|
|
|
run) exec railiance-run "$@" ;;
|
2026-06-27 16:51:02 +02:00
|
|
|
|
deploy) exec railiance-stage2 deploy "$@" ;;
|
|
|
|
|
|
observe) exec railiance-stage2 observe "$@" ;;
|
2026-06-27 17:01:11 +02:00
|
|
|
|
promote) exec railiance-stage3 promote "$@" ;;
|
|
|
|
|
|
rollback) exec railiance-stage3 rollback "$@" ;;
|
2026-07-02 10:44:06 +02:00
|
|
|
|
deploy-triage-robustness) exec railiance-deploy-activity-core-triage-robustness "$@" ;;
|
|
|
|
|
|
admin-sync-smoke) exec railiance-admin-sync-smoke "$@" ;;
|
2025-09-13 01:32:19 +02:00
|
|
|
|
build-spore) bash "$ROOT/tools/build_spore.sh" ;;
|
|
|
|
|
|
seed-local) bash "$ROOT/tools/seed_node.sh" ;;
|
|
|
|
|
|
checklist)
|
|
|
|
|
|
cat <<'CK'
|
|
|
|
|
|
Rent-a-VM Checklist
|
|
|
|
|
|
-------------------
|
|
|
|
|
|
[ ] Provider account ready (billing set)
|
|
|
|
|
|
[ ] Region chosen (low latency to you/users)
|
|
|
|
|
|
[ ] Image: Ubuntu 24.04 LTS
|
|
|
|
|
|
[ ] Size: 2 vCPU / 4–8 GB RAM / 60+ GB SSD
|
|
|
|
|
|
[ ] SSH key uploaded (see gen-ssh-key)
|
|
|
|
|
|
[ ] Cloud-init pasted (see: bin/railiance cloudinit)
|
|
|
|
|
|
[ ] Hostname set (e.g., railiance-seed-1)
|
|
|
|
|
|
[ ] Record public IP / DNS
|
|
|
|
|
|
CK
|
|
|
|
|
|
;;
|
2025-09-13 02:39:47 +02:00
|
|
|
|
next) cat "$ROOT/QUICKSTART.md" ;;
|
2026-02-25 23:59:28 +01:00
|
|
|
|
backup) exec railiance-backup "$@" ;;
|
|
|
|
|
|
preflight) exec railiance-preflight "$@" ;;
|
2025-09-13 02:39:47 +02:00
|
|
|
|
*) echo "Unknown command: $cmd" >&2; usage; exit 2 ;;
|
2025-09-13 01:32:19 +02:00
|
|
|
|
esac
|