177 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ⚙️ 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/<nom-de-votre-choix>
```
Maitenant, \<nom-de-votre-choix> est considéré comme une commande sur la machine.
---
## 🔗 Ressources
* [FogProject - GitHub](https://github.com/FOGProject/fogproject)
* [Documentation officielle Fog](https://wiki.fogproject.org/)