#!/usr/bin/env bash # infra/cluster.sh — manage the local dev k3s cluster (VMs + kubeconfig). Convenience for # resuming Phase 1 development. Uses host virsh + kubectl (see infra/PHASE1-STATUS.md). set -euo pipefail export LIBVIRT_DEFAULT_URI=qemu:///system HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" KCFG="${HERE}/ansible/.cache/dev.kubeconfig" NODES=(k3s-dev-1 k3s-dev-2 k3s-dev-3) case "${1:-status}" in status) virsh list --all | grep -E 'k3s-dev|Name|--' || true if [ -f "$KCFG" ]; then KUBECONFIG="$KCFG" kubectl get nodes 2>/dev/null || echo "(cluster not reachable — VMs stopped? run: $0 start)"; fi ;; start) for n in "${NODES[@]}"; do virsh start "$n" 2>/dev/null || echo "$n already running"; done ;; stop) for n in "${NODES[@]}"; do virsh shutdown "$n" 2>/dev/null || true; done; echo "graceful shutdown sent (state persists on disk; '$0 start' to resume)" ;; kubeconfig) echo "export KUBECONFIG=${KCFG}" ;; *) echo "usage: $0 {status|start|stop|kubeconfig}"; exit 2 ;; esac