#!/bin/bash source ~/.bashrc # Check VM Readiness - Verify VMs are ready for SSH and task execution set -e # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } declare -A VMS=( [100]="cloudflare-tunnel:192.168.1.60" [101]="k3s-master:192.168.1.188" [102]="git-server:192.168.1.121" [103]="observability:192.168.1.82" ) SSH_USER="${SSH_USER:-ubuntu}" SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_rsa}" check_vm() { local vmid=$1 local name=$2 local ip=$3 echo -n "VM $vmid ($name) at $ip: " # Check ping if ping -c 1 -W 2 "$ip" > /dev/null 2>&1; then echo -n "✓ Reachable, " # Check SSH if ssh -o ConnectTimeout=3 -o StrictHostKeyChecking=no -i "$SSH_KEY" "${SSH_USER}@${ip}" "echo 'OK'" > /dev/null 2>&1; then echo "✓ SSH Ready" return 0 else echo "⚠ SSH Not Ready" return 1 fi else echo "✗ Not Reachable" return 1 fi } main() { echo "=========================================" echo "VM Readiness Check" echo "=========================================" echo "" if [ ! -f "$SSH_KEY" ]; then log_error "SSH key not found: $SSH_KEY" log_info "Available keys:" ls -1 ~/.ssh/id_* 2>/dev/null | grep -v ".pub" || echo " None found" exit 1 fi log_info "Using SSH key: $SSH_KEY" echo "" local all_ready=true for vmid in 100 101 102 103; do IFS=':' read -r name ip <<< "${VMS[$vmid]}" if ! check_vm "$vmid" "$name" "$ip"; then all_ready=false fi done echo "" if [ "$all_ready" = true ]; then log_info "✓ All VMs are ready!" log_info "You can now run: ./scripts/complete-all-vm-tasks.sh" else log_warn "⚠ Some VMs are not ready yet" log_info "Wait for Ubuntu installation to complete" log_info "Then run this script again to check readiness" fi } main "$@"