veza/config/incus/NETWORK_FIX.md
senke f0ba7de543 state-ownership: delete unused optimisticStoreUpdates.ts file
- Deleted apps/web/src/utils/optimisticStoreUpdates.ts (unused file)
- File was unused - no imports found in codebase
- Mutations already use React Query's onMutate pattern
- No TypeScript errors after deletion
- Actions 4.4.1.2 and 4.4.1.3 complete
2026-01-15 19:26:53 +01:00

4.6 KiB

Correction du Problème de Vérification Réseau

Date: 2026-01-14
Problème: Le script continuait même si le réseau ne fonctionnait pas
Statut: CORRIGÉ

Problème Identifié

Dans deploy-service-native.sh (lignes 146-152), la vérification réseau échouait silencieusement :

# AVANT (PROBLÉMATIQUE)
if incus exec ${CONTAINER_NAME} -- ping -c 2 -W 2 8.8.8.8 >/dev/null 2>&1; then
    echo "✅ Network connectivity verified"
else
    echo "⚠️  Warning: Network connectivity test failed, but continuing..."
fi

Impact: Le déploiement continuait même si le réseau ne fonctionnait pas, causant des échecs d'installation de packages et des services non fonctionnels.

Solution Implémentée

1. Vérification Réseau Stricte

La vérification réseau est maintenant obligatoire et fait échouer le déploiement si elle échoue :

# APRÈS (CORRIGÉ)
# Verify network connectivity - CRITICAL: Do not continue if network fails
echo "Verifying network connectivity (CRITICAL - deployment will fail if this doesn't work)..."

# Test 1: Ping gateway
echo "  Testing gateway connectivity (10.10.10.1)..."
if ! incus exec ${CONTAINER_NAME} -- ping -c 3 -W 3 10.10.10.1 >/dev/null 2>&1; then
    echo "❌ ERROR: Cannot reach gateway (10.10.10.1)"
    echo "   Network configuration failed. Deployment aborted."
    exit 1
fi

# Test 2: Ping external DNS
echo "  Testing Internet connectivity (8.8.8.8)..."
if ! incus exec ${CONTAINER_NAME} -- ping -c 3 -W 3 8.8.8.8 >/dev/null 2>&1; then
    echo "❌ ERROR: Cannot reach Internet (8.8.8.8)"
    echo "   Internet connectivity is required for package installation."
    echo "   Check NAT configuration: incus network show ${NETWORK}"
    exit 1
fi

# Test 3: DNS resolution
echo "  Testing DNS resolution (google.com)..."
if ! incus exec ${CONTAINER_NAME} -- getent hosts google.com >/dev/null 2>&1; then
    echo "❌ ERROR: DNS resolution failed"
    echo "   Cannot resolve hostnames. DNS configuration failed."
    exit 1
fi

echo "✅ Network connectivity fully verified (gateway, Internet, DNS)"

2. Script Simple de Configuration de Base

Création de setup-basic-incus.sh pour configurer l'infrastructure Incus de base :

  • Crée le réseau veza-network avec NAT et DHCP
  • Crée le profil veza-profile avec root et network devices
  • Vérifie que tout est correctement configuré

Usage:

./config/incus/setup-basic-incus.sh

3. Intégration dans deploy-service-native.sh

Le script de déploiement utilise maintenant automatiquement setup-basic-incus.sh :

# Ensure basic Incus infrastructure is set up
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -f "${SCRIPT_DIR}/setup-basic-incus.sh" ]; then
    echo "Ensuring basic Incus infrastructure is configured..."
    "${SCRIPT_DIR}/setup-basic-incus.sh" >/dev/null 2>&1 || {
        echo "❌ ERROR: Failed to setup basic Incus infrastructure"
        echo "   Run manually: ${SCRIPT_DIR}/setup-basic-incus.sh"
        exit 1
    }
fi

Tests de Vérification

Le script effectue maintenant 3 tests obligatoires :

  1. Gateway (10.10.10.1) : Vérifie que le conteneur peut atteindre la passerelle
  2. Internet (8.8.8.8) : Vérifie que le conteneur peut atteindre Internet (NAT fonctionne)
  3. DNS (google.com) : Vérifie que la résolution DNS fonctionne

Si n'importe lequel de ces tests échoue, le déploiement est aborté immédiatement.

Améliorations Apportées

  1. Vérification réseau stricte : Le déploiement échoue si le réseau ne fonctionne pas
  2. Messages d'erreur clairs : Indique exactement quel test a échoué et pourquoi
  3. Script de base simple : setup-basic-incus.sh pour configurer l'infrastructure
  4. Configuration réseau robuste : Gestion d'erreurs améliorée dans la configuration réseau
  5. Vérification pré-déploiement : Vérifie que le réseau et le profil existent avant de créer le conteneur

Impact

  • Avant : Déploiements incomplets, services non fonctionnels, difficulté de débogage
  • Après : Déploiements échouent rapidement si le réseau ne fonctionne pas, messages d'erreur clairs, infrastructure de base garantie

Utilisation

Configuration initiale

# Configurer l'infrastructure de base (une seule fois)
./config/incus/setup-basic-incus.sh

Déploiement d'un service

# Le script vérifie automatiquement l'infrastructure et le réseau
./config/incus/deploy-service-native.sh backend-api

Si le réseau ne fonctionne pas, le déploiement échouera immédiatement avec un message d'erreur clair.