infra/ansible/deploy-k8s-cluster.sh
2025-12-13 15:38:02 -06:00

59 lines
No EOL
1.9 KiB
Bash
Executable file

#!/bin/bash
# Deploy a 3-node Kubernetes cluster on Proxmox using Debian 12
set -e
echo "=== Kubernetes Cluster Deployment Script ==="
echo "This will create a 3-node K8s cluster on your Proxmox servers"
echo
# Check if proxmox password is set
if [ -z "$PROXMOX_PASSWORD" ]; then
echo "Please set PROXMOX_PASSWORD environment variable"
echo "export PROXMOX_PASSWORD='your-proxmox-password'"
exit 1
fi
# Install required collections
echo "Installing Ansible collections..."
ansible-galaxy collection install -r requirements.yml
echo "Fixing deprecated imports in collections..."
./scripts/fix-deprecated-imports.sh
echo "Fixing deprecated imports in collections..."
./scripts/fix-deprecated-imports.sh
# Step 1: Create VM template
echo "Step 1: Creating Debian 12 cloud-init template on Proxmox..."
read -p "Do you want to create the VM template? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
ansible-playbook create-vm-template.yml -e proxmox_password="$PROXMOX_PASSWORD"
fi
# Step 2: Deploy K8s cluster
echo "Step 2: Deploying Kubernetes cluster..."
echo "This will:"
echo " - Create 3 VMs from the template"
echo " - Install containerd and Kubernetes"
echo " - Initialize the master node"
echo " - Join worker nodes to the cluster"
echo " - Install Flannel CNI and dashboard"
echo
read -p "Continue with deployment? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
ansible-playbook -i inventories/k8s-cluster/hosts k8s-cluster.yml \
-e proxmox_password="$PROXMOX_PASSWORD" \
-e vm_password="${K8S_VM_PASSWORD:-changeme}"
fi
echo
echo "=== Deployment Complete ==="
echo "To access your cluster from the master node:"
echo " ssh debian@10.0.19.200"
echo " kubectl get nodes"
echo
echo "To copy kubeconfig to your local machine:"
echo " scp debian@10.0.19.200:~/.kube/config ~/.kube/config-k8s"
echo " export KUBECONFIG=~/.kube/config-k8s"