#!/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."