Newer
Older
homeassistant-infra / scripts / create-ha-vm.sh
#!/bin/bash
#
# Skrypt do automatycznego utworzenia VM z Home Assistant OS na Proxmox
# Użycie: ./create-ha-vm.sh [test|prod]
#

set -e

# Konfiguracja
PROXMOX_HOST="192.168.50.200"
PROXMOX_USER="root"
PROXMOX_PASS="QWer!@34"
NODE="prox01"

# Domyślne parametry
ENVIRONMENT="${1:-test}"

if [ "$ENVIRONMENT" = "test" ]; then
    VMID=210
    VM_NAME="homeassistant-test"
    VM_IP="192.168.50.210"
    CORES=2
    MEMORY=4096
    DISK_SIZE="32G"
elif [ "$ENVIRONMENT" = "prod" ]; then
    VMID=211
    VM_NAME="homeassistant-prod"
    VM_IP="192.168.50.211"
    CORES=4
    MEMORY=6144
    DISK_SIZE="64G"
else
    echo "❌ Użycie: $0 [test|prod]"
    exit 1
fi

GATEWAY="192.168.50.1"
STORAGE="local-lvm"
HAOS_VERSION="13.2"
HAOS_IMAGE_URL="https://github.com/home-assistant/operating-system/releases/download/${HAOS_VERSION}/haos_ova-${HAOS_VERSION}.qcow2.xz"
HAOS_IMAGE="haos_ova-${HAOS_VERSION}.qcow2"

echo "======================================"
echo "🏠 Tworzenie Home Assistant ${ENVIRONMENT^^}"
echo "======================================"
echo "VM ID: $VMID"
echo "Nazwa: $VM_NAME"
echo "IP: $VM_IP"
echo "CPU: $CORES cores"
echo "RAM: ${MEMORY}MB"
echo "Dysk: $DISK_SIZE"
echo "======================================"
echo ""

# Funkcja do wykonywania poleceń na Proxmox
pve_cmd() {
    sshpass -p "$PROXMOX_PASS" ssh -o StrictHostKeyChecking=no ${PROXMOX_USER}@${PROXMOX_HOST} "$@"
}

# Sprawdzenie czy VM już istnieje
echo "🔍 Sprawdzanie czy VM $VMID już istnieje..."
if pve_cmd "qm status $VMID" 2>/dev/null; then
    echo "⚠️  VM $VMID już istnieje!"
    read -p "Czy chcesz usunąć i utworzyć od nowa? (tak/nie): " confirm
    if [ "$confirm" = "tak" ]; then
        echo "🗑️  Usuwanie VM $VMID..."
        pve_cmd "qm stop $VMID" 2>/dev/null || true
        sleep 3
        pve_cmd "qm destroy $VMID --purge"
        echo "✅ VM usunięte"
    else
        echo "❌ Anulowano"
        exit 1
    fi
fi

# Pobieranie obrazu Home Assistant OS
echo "📥 Pobieranie Home Assistant OS ${HAOS_VERSION}..."
TEMP_DIR="/tmp/haos-${VMID}"
pve_cmd "mkdir -p $TEMP_DIR"

if ! pve_cmd "test -f $TEMP_DIR/$HAOS_IMAGE"; then
    echo "   Pobieranie z GitHub..."
    pve_cmd "cd $TEMP_DIR && wget -q --show-progress $HAOS_IMAGE_URL -O ${HAOS_IMAGE}.xz"
    echo "   Rozpakowywanie obrazu..."
    pve_cmd "cd $TEMP_DIR && xz -d ${HAOS_IMAGE}.xz"
else
    echo "   ✅ Obraz już pobrany"
fi

# Tworzenie VM
echo "🔨 Tworzenie VM..."
pve_cmd "qm create $VMID --name $VM_NAME --memory $MEMORY --cores $CORES --net0 virtio,bridge=vmbr0"

# Import dysku
echo "💾 Importowanie dysku..."
pve_cmd "qm importdisk $VMID $TEMP_DIR/$HAOS_IMAGE $STORAGE"

# Konfiguracja VM
echo "⚙️  Konfiguracja VM..."
pve_cmd "qm set $VMID --scsihw virtio-scsi-pci --scsi0 $STORAGE:vm-$VMID-disk-0"
pve_cmd "qm set $VMID --boot c --bootdisk scsi0"
pve_cmd "qm set $VMID --agent enabled=1"
pve_cmd "qm set $VMID --ostype l26"
pve_cmd "qm set $VMID --serial0 socket --vga serial0"
pve_cmd "qm set $VMID --onboot 1"

# Rozszerzenie dysku do wymaganego rozmiaru
echo "📦 Rozszerzanie dysku do $DISK_SIZE..."
pve_cmd "qm resize $VMID scsi0 $DISK_SIZE"

# Uruchomienie VM
echo "🚀 Uruchamianie VM..."
pve_cmd "qm start $VMID"

echo ""
echo "✅ VM utworzone pomyślnie!"
echo ""
echo "======================================"
echo "📋 Informacje o VM"
echo "======================================"
echo "Nazwa: $VM_NAME"
echo "ID: $VMID"
echo "Node: $NODE"
echo ""
echo "🌐 Dostęp do Home Assistant:"
echo "   URL: http://${VM_IP}:8123"
echo ""
echo "⏳ Pierwsza konfiguracja zajmie ~10-15 minut"
echo "   Sprawdź status: watch -n 5 'curl -s http://${VM_IP}:8123 && echo OK || echo Czekam...'"
echo ""
echo "📝 Konfiguracja statycznego IP:"
echo "   Po uruchomieniu HA, wejdź do: Ustawienia → System → Sieć"
echo "   Ustaw: IP=$VM_IP, Gateway=$GATEWAY, DNS=8.8.8.8"
echo "======================================"

# Czyszczenie
echo "🧹 Czyszczenie plików tymczasowych..."
pve_cmd "rm -rf $TEMP_DIR"

echo ""
echo "✨ Gotowe! VM $VM_NAME zostało utworzone na Proxmox."