.DEFAULT_GOAL := help INVENTORY ?= ansible/hosts.ini ##@ Safety Net backup: ## Backup k3s etcd + Helm values + kubeconfig (age-encrypted, root required) sudo tools/cmd/railiance-backup-s2 restore: ## List available backups and print restore guide tools/cmd/railiance-restore-s2 preflight: ## Pre-migration safety gate — must pass before cluster work bin/railiance preflight ##@ Kubernetes k3s-install: ## Install k3s and Helm on all inventory hosts ansible-playbook -i $(INVENTORY) ansible/bootstrap.yml smoke: ## Run Kubernetes smoke tests bash tests/smoke_kube.sh test-ha-failover: ## Run HA failover test (D3) — kills primary PG pod, asserts recovery bash tests/test_ha_failover.sh $(if $(GITEA_URL),$(GITEA_URL),) verify-activity-core: ## Reconcile activity-core runtime and verify disabled ops inventory probe evidence tools/cmd/railiance-verify-activity-core ##@ Help help: ## Show this help @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} \ /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } \ /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) }' $(MAKEFILE_LIST) .PHONY: backup restore preflight k3s-install smoke test-ha-failover verify-activity-core help