# ⚙️ Fog\_Reinitialisation > **🚧 Attention** : Ce projet est en cours de développement et peut ne pas fonctionner pour l'instant. ## 🧩 Contexte Dans le passé, le redéploiement des machines des salles de TP se faisait via **Symantec Ghost**. Cette méthode impliquait de : * Insérer un **DVD bootable** dans chaque machine * Configurer manuellement le **boot sur le lecteur DVD** * Lancer le déploiement depuis le **poste professeur** Ce processus était **fastidieux** et **souvent négligé** par les intervenants. Résultat : les machines restaient souvent **polluées** après les séances. Le projet **Fog\_Reinitialisation** vise à automatiser ce processus via L'API **[FogProject](https://github.com/FOGProject/fogproject)**, afin de **réinitialiser rapidement les machines à la fin de chaque TP** avec une image vierge, **sans intervention manuelle** sur chaque poste. --- ## 🚀 Objectif Fournir un **script Bash simple** permettant à un intervenant de **réinitialiser toute une salle** en une seule commande, en s’appuyant sur les fonctionnalités de **Wake On LAN**, **PXE boot**, et **déploiement multicast** via l'API FogProject. --- ## 🔧 Fonctionnalités * Wake On LAN de tous les PC clients * Boot réseau automatique via PXE * Déploiement multicast de l’image système * Extinction automatique des machines après déploiement * Commande unique, exécutable depuis le poste professeur --- ## 🛠️ Prérequis ### ✅ Serveur * Installer le serveur [FOG](https://docs.fogproject.org/en/latest/installation/server/install-fog-server/) sur le poste professeur de la salle * Activer l'API de fog * Créer une Image et un groupe à associer aux machines de la salle * Enregistrez les machines de la salle dans le serveur : 1. Démarrer les machines en **boot PXE** 2. Dans le menu Fog, sélectionner **"Perform Full Host Registration and Inventory"** 3. Attribuer : * Un **nom d’hôte** * Une image et un groupe * Les paquets suivants doivent être installés : * wakeonlan * curl * jq ```bash apt install curl apt install wakeonlan apt install jq ``` ### ✅ Configuration machines clientes **🚧 Attention** le projet a été expérimenté avec des machines de la marque **HP**. Ne l'ayant pas fait avec un autre constructeur il est possible que les prérequis nécessaires diffèrent. * **Activer le PXE boot** dans le BIOS * **Activer Wake On LAN (WOL)** dans le BIOS * Le **Wake On LAN doit booter sur le réseau** * **Brancher le câble réseau** sur la **carte réseau de base** (intégrée à la carte mère) * Sous Windows : * Désactiver **Fast Boot** : *Panneau de configuration > Options d'alimentation > Choisir l'action des boutons d’alimentation > Modifier les paramètres actuellement non disponibles > Décocher "Activer le démarrage rapide"* * **Activer le portfast** sur les ports du switch reliés aux PC : Permet d’éviter que le DHCP échoue lors du boot PXE * Mettre à jour le BIOS des machines --- ## ⚙️ Configuration par défaut et personnalisation Par défaut, le script utilise : * **GROUP_ID=1** * **IMAGE_ID=1** * **TASK_TYPE=1** * **SHUTDOWN=1** Vous pouvez modifier ces valeurs dans le fichier `.env.exemple` en fonction de l'ID de groupe, d'image, du type de tâche et du besoin d'éteindre les machines : ```bash #Token d'API et d'Utilisateur FOG FOG_USER_TOKEN="" FOG_API_TOKEN="" #Adresse IP de broadcast local de la salle (si la salle est en 192.168.106.0/24 -> Entrez 192.168.106.255) LOCAL_BROADCAST_IP=192.168.xxx.255 #Configuration des paramètres de la tâche #ID du groupe sur lequel déployer l'image GROUP_ID="1" #ID de l'image a déployer IMAGE_ID="1" #Type de déploiement (1 pour du multicast) TASK_TYPE="1" #Éteindre les PCs à la fin (mettre à 1 ou 0) SHUTDOWN="1" ``` --- ## 📁 Structure du projet ``` fog_reinitialisation/ # Dossier principal ├── reinitialisation_salle.sh # Script Bash principal ├── .env.exemple # Variables d'authentification API Fog └── README.md # Documentation ``` --- ## 📦 Installation et utilisation 1. Téléchargement du projet : ```bash curl -L "https://git.nelson-thomas.fr/nelson/Fog_Reinitialisation/archive/main.tar.gz" | tar -xz ``` 2. Accéder au répertoire : ```bash cd ./fog_reinitialisation ``` 3. Configurer les variables dans le .env.exemple puis le renommer : ```bash nano .env.exemple mv .env.exemple .env ``` 4. Rendre le script exécutable : ```bash chmod u+x reinitialisation_salle.sh ``` 5. Exécutez le script pour réinitialiser la salle : ```bash ./reinitialisation_salle.sh ``` ### Installation Globale (Optionnel) Créez un alias de votre choix pour exécuter le script de n'importe où : ```bash sudo ln -s $(pwd)/reinitialisation_salle.sh /usr/local/bin/ ``` Maitenant, \ est considéré comme une commande sur la machine. --- ## 🔗 Ressources * [FogProject - GitHub](https://github.com/FOGProject/fogproject) * [Documentation officielle Fog](https://wiki.fogproject.org/)