#!/bin/bash source ~/.bashrc # Complete VM Setup: Template + Install Scripts # This is the main script that orchestrates the entire process set -e # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } log_step() { echo -e "${BLUE}[STEP]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR/.." main() { echo "=========================================" echo "Complete VM Setup with Templates & Scripts" echo "=========================================" echo "" log_step "This script will:" echo " 1. Check for Cloud-Init template" echo " 2. Create VMs from template (if needed)" echo " 3. Apply install scripts to each VM" echo "" read -p "Continue? (y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then log_info "Cancelled" exit 0 fi # Step 1: Check for template log_step "Step 1: Checking for Cloud-Init template..." log_warn "Template check not automated yet" log_info "Ensure you have created template: ubuntu-24.04-cloudinit" log_info "See: scripts/create-proxmox-template.sh" echo "" read -p "Template ready? (y/N): " -n 1 -r echo if [[ ! $REPLY =~ ^[Yy]$ ]]; then log_error "Please create template first" exit 1 fi # Step 2: Create VMs from template log_step "Step 2: Creating VMs from template..." if [ -f "scripts/create-vms-from-template.sh" ]; then log_info "Running: scripts/create-vms-from-template.sh" ./scripts/create-vms-from-template.sh || log_warn "VM creation had issues" else log_error "Script not found: scripts/create-vms-from-template.sh" exit 1 fi echo "" # Step 3: Wait for VMs to boot log_step "Step 3: Waiting for VMs to boot..." log_info "VMs need time to boot and complete Cloud-Init setup" log_info "This may take 5-10 minutes" echo "" read -p "Wait 5 minutes, then press Enter to continue..." # Step 4: Apply install scripts log_step "Step 4: Applying install scripts to VMs..." if [ -f "scripts/apply-install-scripts.sh" ]; then log_info "Running: scripts/apply-install-scripts.sh" ./scripts/apply-install-scripts.sh || log_warn "Some scripts may have failed" else log_error "Script not found: scripts/apply-install-scripts.sh" exit 1 fi echo "" log_info "=========================================" log_info "Setup Complete!" log_info "=========================================" echo "" log_info "Next steps:" echo " 1. Verify services are running on each VM" echo " 2. Configure Cloudflare Tunnel (VM 100)" echo " 3. Configure K3s cluster (VM 101)" echo " 4. Complete Gitea setup (VM 102)" echo " 5. Configure Grafana dashboards (VM 103)" } main "$@"