Some checks failed
Test / test (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
99 lines
2.2 KiB
Bash
Executable File
99 lines
2.2 KiB
Bash
Executable File
#!/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 "$@"
|
|
|