#!/bin/bash source ~/.bashrc # Create VMs via SSH using qm command (more reliable than API) # Requires SSH access to Proxmox host 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" } # Load environment variables if [ -f .env ]; then set -a source <(grep -v '^#' .env | grep -v '^$' | sed 's/#.*$//' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | grep '=') set +a fi PROXMOX_HOST="${1:-192.168.1.206}" PROXMOX_USER="${2:-root}" ISO_FILE="ubuntu-24.04.3-live-server-amd64.iso" # VM configurations declare -A VMS=( ["100"]="cloudflare-tunnel:2:4096:40:192.168.1.60:192.168.1.254" ["101"]="k3s-master:4:8192:80:192.168.1.188:192.168.1.254" ["102"]="git-server:4:8192:100:192.168.1.121:192.168.1.254" ["103"]="observability:4:8192:200:192.168.1.82:192.168.1.254" ) create_vm_ssh() { local vmid=$1 local name=$2 local cores=$3 local memory=$4 local disk_size=$5 local ip_address=$6 local gateway=$7 log_step "Creating VM: $name (ID: $vmid) via SSH..." ssh "$PROXMOX_USER@$PROXMOX_HOST" </dev/null; then log_error "Cannot connect to Proxmox host via SSH" log_info "Please configure SSH access or use Proxmox Web UI instead" exit 1 fi log_info "✓ SSH connection successful" echo "" # Create VMs for vmid in "${!VMS[@]}"; do IFS=':' read -r name cores memory disk_size ip_address gateway <<< "${VMS[$vmid]}" create_vm_ssh "$vmid" "$name" "$cores" "$memory" "$disk_size" "$ip_address" "$gateway" echo "" done log_info "=========================================" log_info "VM Creation Complete!" log_info "=========================================" } main "$@"