# 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 : ```bash # 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 : ```bash # 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**: ```bash ./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` : ```bash # 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 ```bash # Configurer l'infrastructure de base (une seule fois) ./config/incus/setup-basic-incus.sh ``` ### Déploiement d'un service ```bash # 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.