Newer
Older
homeassistant-infra / scripts / deploy-integration-offline.sh
#!/bin/bash

set -e

PROXMOX_IP="192.168.50.200"
PROXMOX_PASS="QWer!@34"
TEST_VMID="101"
PROD_VMID="100"
INTEGRATION_NAME="${1:-solarman}"

echo "======================================"
echo "Wdrożenie integracji: ${INTEGRATION_NAME}"
echo "TEST VM: ${TEST_VMID} → PROD VM: ${PROD_VMID}"
echo "======================================"

# Połącz się z Proxmox i wykonaj operację
sshpass -p "${PROXMOX_PASS}" ssh -o StrictHostKeyChecking=no root@${PROXMOX_IP} bash -s << REMOTE_SCRIPT
set -e

echo -e "\n1. Instalacja wymaganych narzędzi..."
apt-get install -y kpartx jq >/dev/null 2>&1

echo -e "\n2. Mapowanie partycji..."
kpartx -av /dev/pve/vm-${TEST_VMID}-disk-0 >/dev/null 2>&1 || true
kpartx -av /dev/pve/vm-${PROD_VMID}-disk-0 >/dev/null 2>&1 || true

echo -e "\n3. Montowanie dysków..."
mkdir -p /mnt/haos-test /mnt/haos-prod
mount /dev/mapper/pve-vm--${TEST_VMID}--disk--0p8 /mnt/haos-test 2>/dev/null || true
mount /dev/mapper/pve-vm--${PROD_VMID}--disk--0p8 /mnt/haos-prod 2>/dev/null || true

echo -e "\n4. Kopiowanie integracji ${INTEGRATION_NAME}..."
if [ -d "/mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME}" ]; then
    mkdir -p /mnt/haos-prod/supervisor/homeassistant/custom_components
    cp -r /mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME} \\
          /mnt/haos-prod/supervisor/homeassistant/custom_components/
    echo "✅ ${INTEGRATION_NAME} skopiowany ($(du -sh /mnt/haos-test/supervisor/homeassistant/custom_components/${INTEGRATION_NAME} | cut -f1))"
else
    echo "❌ Integracja ${INTEGRATION_NAME} nie znaleziona w TEST"
    exit 1
fi

echo -e "\n5. Kopiowanie HACS (jeśli jeszcze nie ma)..."
if [ ! -d "/mnt/haos-prod/supervisor/homeassistant/custom_components/hacs" ]; then
    if [ -d "/mnt/haos-test/supervisor/homeassistant/custom_components/hacs" ]; then
        cp -r /mnt/haos-test/supervisor/homeassistant/custom_components/hacs \\
              /mnt/haos-prod/supervisor/homeassistant/custom_components/
        echo "✅ HACS skopiowany"
    fi
else
    echo "✅ HACS już istnieje na PROD"
fi

echo -e "\n6. Kopiowanie konfiguracji integracji..."
# Wyciągnij konfigurację z TEST
cat /mnt/haos-test/supervisor/homeassistant/.storage/core.config_entries | \\
  jq ".data.entries[] | select(.domain == \\"${INTEGRATION_NAME}\\")" > /tmp/integration_config.json

if [ -s /tmp/integration_config.json ]; then
    # Dodaj do PROD jeśli jeszcze nie ma
    PROD_HAS=\$(cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | \\
                jq ".data.entries[] | select(.domain == \\"${INTEGRATION_NAME}\\") | .domain" 2>/dev/null | wc -l)
    
    if [ "\$PROD_HAS" -eq 0 ]; then
        PROD_ENTRIES=\$(cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | jq '.data.entries')
        CONFIG=\$(cat /tmp/integration_config.json)
        UPDATED=\$(echo "\$PROD_ENTRIES" | jq ". + [\$CONFIG]")
        
        cat /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries | \\
          jq ".data.entries = \$UPDATED" > /tmp/prod_config.json
        cp /tmp/prod_config.json /mnt/haos-prod/supervisor/homeassistant/.storage/core.config_entries
        echo "✅ Konfiguracja ${INTEGRATION_NAME} dodana"
    else
        echo "✅ Konfiguracja ${INTEGRATION_NAME} już istnieje"
    fi
else
    echo "⚠️  Nie znaleziono konfiguracji ${INTEGRATION_NAME} w TEST"
fi

echo -e "\n7. Odmontowanie i czyszczenie..."
sync
umount /mnt/haos-test 2>/dev/null || true
umount /mnt/haos-prod 2>/dev/null || true
kpartx -d /dev/pve/vm-${TEST_VMID}-disk-0 >/dev/null 2>&1 || true
kpartx -d /dev/pve/vm-${PROD_VMID}-disk-0 >/dev/null 2>&1 || true

echo -e "\n8. Restartowanie PROD VM..."
qm reboot ${PROD_VMID} >/dev/null 2>&1

echo -e "\n======================================"
echo "✅ WDROŻENIE ZAKOŃCZONE!"
echo "======================================"
REMOTE_SCRIPT

echo ""
echo "✅ Integracja ${INTEGRATION_NAME} wdrożona na PROD"
echo "⏳ PROD VM restartuje się (poczekaj 2-3 minuty)"
echo "🌐 Otwórz: http://192.168.50.242:8123"
echo ""