#!/bin/bash source ~/.bashrc # Complete R630 Cluster Join # This script provides instructions and attempts automated join set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Load environment variables if [ -f "$PROJECT_ROOT/.env" ]; then set -a source <(grep -v '^#' "$PROJECT_ROOT/.env" | grep -v '^$' | sed 's/#.*$//' | grep '=') set +a fi # 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_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } log_step() { echo -e "\n${BLUE}=== $1 ===${NC}"; } SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_ed25519_proxmox}" SSH_OPTS="-i $SSH_KEY -o StrictHostKeyChecking=no" ML110_IP="192.168.1.206" R630_IP="192.168.1.49" ROOT_PASS="${PVE_ROOT_PASS:-L@kers2010}" log_step "Completing R630 Cluster Join" # Check current cluster status log_info "Checking cluster status on ML110..." ML110_STATUS=$(ssh $SSH_OPTS "root@${ML110_IP}" "pvecm nodes 2>&1" || echo "") echo "$ML110_STATUS" log_info "Checking cluster status on R630..." R630_STATUS=$(ssh $SSH_OPTS "root@${R630_IP}" "pvecm status 2>&1" || echo "") echo "$R630_STATUS" if echo "$R630_STATUS" | grep -q "hc-cluster"; then log_info "✓ R630 is already in the cluster!" exit 0 fi log_step "Method 1: Join via Proxmox Web UI (Recommended)" log_info "1. Open https://${ML110_IP}:8006" log_info "2. Login as root" log_info "3. Go to: Datacenter → Cluster → Join Information" log_info "4. Copy the join command" log_info "5. Or go to: Datacenter → Cluster → Add" log_info "6. Enter R630 IP: ${R630_IP}" log_info "7. Enter root password: ${ROOT_PASS}" log_info "8. Click 'Join'" log_step "Method 2: Join via SSH (Manual)" log_info "SSH to R630 and run:" echo "" echo "ssh -i $SSH_KEY root@${R630_IP}" echo "pvecm add ${ML110_IP}" echo "# Enter password when prompted: ${ROOT_PASS}" echo "" log_step "Method 3: Automated Join Attempt" log_info "Attempting automated join..." # Try using expect or similar approach if command -v expect &>/dev/null; then log_info "Using expect for password automation..." expect <&1" | grep -q "hc-cluster"; then log_info "✓ R630 successfully joined the cluster!" ssh $SSH_OPTS "root@${ML110_IP}" "pvecm nodes" else log_warn "Cluster join may still be in progress or needs manual approval" log_info "Check cluster status:" log_info " ssh root@${ML110_IP} 'pvecm nodes'" log_info " ssh root@${R630_IP} 'pvecm status'" fi