my-homelab-configs/lab.sh

65 lines
2.2 KiB
Bash
Executable File

up() {
echo "Deploying the homelab infrastructure..."
cd bootstrap/cluster
tofu init
tofu apply -auto-approve
cd ../platform
tofu init
tofu apply -auto-approve
cd ../apps
tofu init
tofu apply -auto-approve
cd ../..
echo "Deployment successfully completed!"
}
nuke() {
echo "Brutally nuking the homelab infrastructure..."
echo "--> Terminating local OpenTofu tasks..."
killall tofu terraform 2>/dev/null || true
echo "--> Eviscerating local Kubernetes components (Laptop)..."
sudo kubeadm reset --force || true
sudo systemctl stop containerd 2>/dev/null || true
sudo killall containerd-shim-runc-v2 2>/dev/null || true
sudo umount /var/lib/containerd/srun/* 2>/dev/null || true
sudo rm -rf /var/lib/containerd/* /run/containerd/*
sudo rm -rf /etc/kubernetes/ /var/lib/etcd/ /var/lib/kubelet/ /var/lib/cni/ /etc/cni/net.d /home/jv/.kube/
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
sudo ip link delete cilium_host 2>/dev/null || true
sudo ip link delete cilium_net 2>/dev/null || true
sudo ip link delete cilium_vxlan 2>/dev/null || true
sudo systemctl start containerd
echo "--> Eviscerating remote Kubernetes components (Raspberry Pi)..."
ssh -o ConnectTimeout=5 jv@192.168.100.89 << 'EOF' 2>/dev/null || true
sudo kubeadm reset --force
sudo killall containerd-shim-runc-v2 2>/dev/null || true
sudo rm -rf /var/lib/kubelet/ /var/lib/cni/ /etc/cni/net.d /var/lib/containerd/*
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
EOF
echo "--> Deleting OpenTofu tracking state files..."
rm -rf bootstrap/cluster/terraform.tfstate*
rm -rf bootstrap/cluster/.terraform/
rm -rf bootstrap/cluster/.terraform.lock.hcl
rm -rf bootstrap/platform/terraform.tfstate*
rm -rf bootstrap/platform/.terraform/
rm -rf bootstrap/platform/.terraform.lock.hcl
rm -rf bootstrap/apps/terraform.tfstate*
rm -rf bootstrap/apps/.terraform/
rm -rf bootstrap/apps/.terraform.lock.hcl
echo "Destruction complete! Your hardware is completely sanitized."
}