Amélioration de la documentation et des commentaires du script
This commit is contained in:
parent
982ecf5118
commit
ec0bb64ba6
158
README.md
158
README.md
@ -1,79 +1,145 @@
|
||||
# Fog_Reinitialisation
|
||||
# ⚙️ Fog\_Reinitialisation
|
||||
|
||||
> **🚧 Attention** : Ce projet est en cours de développement et peut ne pas fonctionner pour l'instant.
|
||||
|
||||
# **Attention, ce projet est en cours de dévelopement et peut ne pas fonctionner pour l'instant**
|
||||
## 🧩 Contexte
|
||||
|
||||
# Reinit - Réinitialisation rapide des PC via FogProject
|
||||
Dans le passé, le redéploiement des machines des salles de TP se faisait via **Symantec Ghost**. Cette méthode impliquait de :
|
||||
|
||||
Un script Bash permettant de **réinitialiser rapidement et simplement les PC des salles de TP** en s'appuyant sur l'API de [FogProject](https://github.com/FOGProject/fogproject).
|
||||
* 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
|
||||
|
||||
- Réinitialisation à distance des machines via FogProject
|
||||
- Automatisation simple par script Bash
|
||||
- Utilisation prévue dans des environnements scolaires ou universitaires
|
||||
- Déploiement transparent : Allumage via Wake On Lan -> Déploiement multicast -> Extinction des machines.
|
||||
* 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 **FogProject** configuré et accessible
|
||||
- Accès à l'API REST de Fog (clé d'authentification si nécessaire)
|
||||
- Les machines clientes doivent être correctement enregistrées dans Fog
|
||||
### ✅ 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
|
||||
* Le paquet **wakeonlan** doit être installé :
|
||||
```bash
|
||||
sudo apt install wakeonlan
|
||||
```
|
||||
|
||||
### ✅ 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 :
|
||||
|
||||
|
||||
## ⚠️ Problèmes connus sur les machines Windows
|
||||
```bash
|
||||
#Token d'API et d'Utilisateur FOG
|
||||
FOG_USER_TOKEN=""
|
||||
FOG_API_TOKEN=""
|
||||
|
||||
|
||||
### ❗ Erreur : `The NTFS partition is in an unsafe state`
|
||||
|
||||
#### 🧭 Cause
|
||||
|
||||
Cette erreur apparaît lors de la capture ou du déploiement d'une image via démarage réseau. Elle indique que **Windows ne s'est pas arrêté correctement**. Le système de fichiers NTFS est resté dans un état non sécurisé.
|
||||
#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
|
||||
|
||||
|
||||
#### ✅ Solution
|
||||
1. Démarrer la machine sous Windows
|
||||
2. Ouvrir PowerShell
|
||||
3. Exécuter la commande suivante pour forcer un arrêt complet :
|
||||
``powershell
|
||||
shutdown -s -t 0
|
||||
``
|
||||
#Configuration des paramètres de la tâche
|
||||
|
||||
Cela assurera un arrêt propre de Windows, évitant les erreurs lors du démarrage sous Fog.
|
||||
#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
|
||||
|
||||
```bash
|
||||
Fog_Reinitialisation/ # Dossier du projet
|
||||
```
|
||||
fog_reinitialisation/ # Dossier principal
|
||||
├── reinitialisation_salle.sh # Script Bash principal
|
||||
├── .env.exemple # Variables pour l'API Fog
|
||||
├── .env.exemple # Variables d'authentification API Fog
|
||||
└── README.md # Documentation
|
||||
```
|
||||
|
||||
## 🚀 Utilisation
|
||||
---
|
||||
|
||||
1. Téléchargement, mettez vous dans le répertoire de votre choix pour installer le dossier du projet (De façon à ce qu'il ne soit pas déplacé par la suite):
|
||||
## 📦 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. Rentrer dans le répertoire du projet :
|
||||
2. Accéder au répertoire :
|
||||
|
||||
```bash
|
||||
cd ./fog_reinitialisation
|
||||
```
|
||||
3. Mettre les token de l'api fog dans le .env.exemple et le renommer :
|
||||
|
||||
3. Configurer les variables dans le .env.exemple puis le renommer :
|
||||
|
||||
```bash
|
||||
nano .env.exemple
|
||||
```
|
||||
|
||||
Puis
|
||||
|
||||
```bash
|
||||
mv .env.exemple ./.env
|
||||
mv .env.exemple .env
|
||||
```
|
||||
|
||||
4. Rendre le script exécutable :
|
||||
@ -82,23 +148,23 @@ Fog_Reinitialisation/ # Dossier du projet
|
||||
chmod u+x reinitialisation_salle.sh
|
||||
```
|
||||
|
||||
5. (Optionnel) Installer globalement :
|
||||
5. Exécutez le script pour réinitialiser la salle :
|
||||
|
||||
```bash
|
||||
sudo ln -s $(pwd)/reinitialisation_salle.sh /usr/local/bin/reinit
|
||||
./reinitialisation_salle.sh
|
||||
```
|
||||
### Installation Globale (Optionnel)
|
||||
|
||||
6. Exécuter la commande depuis n'importe où :
|
||||
Créez un alias de votre choix pour exécuter le script de n'importe où :
|
||||
|
||||
```bash
|
||||
reinit
|
||||
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 de Fog](https://wiki.fogproject.org/)
|
||||
|
||||
|
||||
* [FogProject - GitHub](https://github.com/FOGProject/fogproject)
|
||||
* [Documentation officielle Fog](https://wiki.fogproject.org/)
|
||||
|
||||
|
||||
@ -5,10 +5,11 @@ if [ -f .env ]; then
|
||||
export $(grep -v '^#' .env | xargs)
|
||||
fi
|
||||
|
||||
#Confirmation de l'utilisateur
|
||||
#Prompt de confirmation de l'utilisateur
|
||||
read -e -p "⚠️ Attention vous allez réinitialiser complètement la salle, voulez-vous vraiment continuer [o/n] : " -i "n" confirmation
|
||||
echo "Vous avez entré ${confirmation}"
|
||||
|
||||
#Si o est entré, réveil des machines et lancement de la tâche
|
||||
if [ "$confirmation" == "o" ]; then
|
||||
|
||||
echo "Lancement de la tâche de réinitialisation de la salle"
|
||||
@ -32,7 +33,7 @@ if [ "$confirmation" == "o" ]; then
|
||||
|
||||
|
||||
|
||||
# Construction du JSON de tâche
|
||||
# Construction du JSON avec les paramètres de tâche à envoyer à l'API
|
||||
DATA=$(cat <<EOF
|
||||
{
|
||||
"taskTypeID": "$TASK_TYPE",
|
||||
@ -49,7 +50,7 @@ EOF
|
||||
-X POST http://localhost/fog/group/${GROUP_ID}/task -d "$DATA"
|
||||
|
||||
|
||||
|
||||
#Sinon, on ne fait rien
|
||||
else
|
||||
echo "Annulation de la tâche de réinitialisation de la salle"
|
||||
fi
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user