Dans le cadre de mon travail, il m'arrive d'avoir à déployer plusieurs ordinateurs sous Primtux dans des écoles. Afin de gagner du temps et d'éviter de recourir à des clés USB et Clonezilla (méthode qui fonctionne bien à condition de ne pas avoir de boot capricieux où parfois Ventoy marche moins bien que Easy2Boot...), j'ai décidé de tenter l'installation avec FOG comme cela est décrit par la Drane de Lyon : https://drane.ac-lyon.fr/spip/deployer-postes-linux-trajectoire. La méthode décrite est cependant spécifique à une région et on ne peut utiliser telle quelle l'image du serveur FOG proposée (dommage). Je vais donc m'en inspirer pour l'adapter à mes besoins.

Page principale du projet FOG : https://fogproject.org/
Site avec un autre tuto détaillé : https://chrtophe.developpez.com/tutoriels/deploiement-fogproject/

I- Principe du déploiement

Un portable (facile à transporter) de déploiement, connecté à un switch réseau (au moins 5 ports Ethernet 1 Gigabit), délivre l'image d'installation à des ordinateurs reliés à ce même switch et ayant démarré en PXE (boot réseau). L'image PXE est fournie par le serveur FOG qui est virtualisé via Virtualbox dans la distribution Debian.

II- Préparation du portable de déploiement

A- Passage sous Linux Mint 21.2 Mate Edition

Récupération d'un portable (HP Probook 450 G7 avec 16 Go de mémoire vive, Intel i5, 240 Go SSD, prise ethernet 1G, ... dommage qu'il n'ait pas une résolution d'affichage Full HD mais dans ce cadre d'utlisation ce n'est vraiment pas indispensable 😉) passé sous Linux Mint 21.2 Mate Edition (clavier Occitan, Clipman et Shutter).
Ce portable pourra ainsi servir à autre chose que déployer Primtux si besoin : virtualisation de Primtux, tests de logiciels par exemple dans une utilisation scolaire (et démontrer que Windows n'est pas indispensable) avec Openboard, LibreOffice, Speech Note (reconnaissance et synthèse vocale), pilotage imprimante 3D, BlocksCAD, ... Voir cette page où je détaille l'installation de Primtux 7 : [Primtux] Installation de Primtux7.

B- Installation de VirtualBox

Une fois Linux Mint installé, installation de VirtualBox qui servira à virtualiser FOG avec les commandes suivantes :
sudo apt update && sudo apt install virtualbox
Remarque : Il est nécessaire de redémarrer pour que VirtualBox apparaisse dans la liste des applications.

C- Virtualisation de Debian 12

On récupère l'image iso du système d'exploitation Debian 12.4 (netinstall) sur le site https://www.debian.org/index.fr.html. Puis on crée une machine virtuelle dans VirtualBox en installant Debian à partir de l'image récupérée précédemment. Lors de l'installation, garder les cases cochées par défaut (ne pas changer de bureau sinon le CD guest ne pourra pas se lancer !) et cocher les cases pour installer un Web serveur (Apache) et éventuellement l'accès SSH si utile. Une fois Debian installé, finir en intégrant l'iso "Guest additions" (image CD des Additions invité) pour pouvoir bénéficier de fonctionnalités supplémentaires (meilleur affichage plein écran, presse-papier bidirectionnel, ...).

D- Installation de FOG dans Debian

Remarque : pendant toute la préparation de la machine virtuelle, dans VirtualBox, il faudra paramétrer le réseau en NAT afin d'avoir accès à Internet pour télécharger les programmes notamment. Par contre, il faudra modifier plusieurs fois dans la machine Debian, les paramètres réseaux.

Nous utiliserons FOG sans l'intégrer dans un réseau existant, en utilisation isolée pour faire les installations de Primtux. Pour cela, on peut aller voir cette page (non mise à jour) : https://wiki.fogproject.org/wiki/index.php/FOG_on_an_Isolated_Network.

Pour faciliter l'installation et permettre l'installation de FOG qui a besoin d'avoir accès à Internet pour récupérer des fichiers, il faut paramétrer 2 connexions Ethernet dans Debian. La première est celle déjà existante et qui permet d'accèder à Internet (on ne la modifie pas), c'est la "Connexion filaire1". Par contre, on va se créer une 2e connexion spécifique pour l'utilisation de FOG que j'ai baptisée "Connexion FOG".
Adresse IP de "Connexion FOG" : On va aller dans les réglages du réseau avancé de Debian et se créer une nouvelle connexion Ethernet en fixant les réglages suivants dans l'onglet IPv4 en configuration manuelle avec une IP fixe :
adresse IP : 192.168.1.100 (ou une autre)
masque de sous-reséau : 255.255.255.0
passerelle : aucune
Remarque : il serait aussi possible de modifier l'adresse IP du serveur a posteriori, en suivant les indications ici : https://docs.fogproject.org/en/latest/kb/how-tos/change-fog-server-ip-address/

Dans notre machine virtuelle Debian, avec la connexion pour accéder à Internet, on va récupérer l'archive FOG dans Git comme cela est recommandé dans la documentation (https://docs.fogproject.org/en/latest/installation/server/install-fog-server/). Pour cela, on installe git avec les commandes suivantes :
su
sudo -i
apt-get -y install git

Puis on récupère FOG avec les commandes (toujours en étant root via la commande "sudo i") :
sudo -i
cd /root

git clone https://github.com/FOGProject/fogproject.git

Ensuite on revient dans le terminal et on lance l'installeur avec :
sudo -i
cd /root/fogproject/bin

On change de connexion réseau en "Connexion FOG" et on revient dans le terminal pour taper la commande : ./installfog.sh

Voici les différentes options choisies lors de l'installation (les choix par défaut sont indiqués entre crochets [ ] et avec une majuscule) :

  • Choise: [2] -> "2" ou valider directement
  • What type of installation would you like to do? [N/s] -> "n" pour Normal ou valider directement
  • Would you like to change the default network interface from enp0s3? [y/N] -> "n" ou valider directement (il nous faut l'adresse 192.168.1.100/24 correspondant à la connexion FOG)
  • Would you like to setup a router address for the DHCP server? [Y/n] -> "n"
  • Would you like DHCP to handle DNS? [Y/n] -> "n"
  • Would you like to use the FOG server for DHCP service? [y/N] -> "y"
  • you like to install the additional language packs ? [y/N] -> "y" si on veut l'interface en français
  • Would you like to enable secure HTTPS on your FOG server? [y/N] -> "n" ou valider directement
  • Would you like to change it (hostname debian-FOG)? [y/N] -> "n" ou valider directement
  • Are you ok with sending this information? [Y/n] -> "n" inutile car on ne sera pas connecté au réseau lorsqu'on utilisera FOG.
  • On remodifie la connexion Ethernet pour avoir accès à Internet en se mettant sur "Connexion filaire1".
  • Are you sure you wish to continue (Y/N) -> "y" si on n'a pas fait d'erreur sinon "n" pour annuler l'installation et relancer le process du début.
    L'installateur se lance alors et va récupérer les fichiers nécessaires sur Internet.
  • Lorsqu'on arrive à la création de la database, il faut de nouveau remodifier l'adresse IP "Connexion FOG" pour pouvoir accéder à la page : http://192.168.1.100/fog/management et créer la base de données.
  • On laisse se finir l'installation.
  • Une fois l'installation terminée, on pourra alors se connecter au serveur FOG à cette adresse http://192.168.1.100/fog/management avec les identifiants suivants :
    Username: fog
    Password: password
  • On peut aller maintenant paramétrer le serveur FOG dans notre langue, en allant sur la configuration de FOG (icône en forme de clé à molette), puis dans l'onglet à gauche "FOG settings" (accès direct : http://192.168.1.100/fog/management/index.php?node=about&sub=settings), puis dans la partie "General Settings", dans le champ KEYMAP, on saisit "fr" pour que les claviers des clients correspondent bien au clavier français, et dans le champ "DEFAULT LOCALE", on choisit "Français" pour avoir l'interface en français.
    On peut aussi en profiter pour allonger le temps de boot de FOG qui par défaut est de 3 secondes, ce qui est un peu juste.

REMARQUE : Si on se trompe dans une étape et que l'on veut reprendre de zéro l'installation de FOG, le mieux est de le désinstaller complètement (sans supprimer le dossier git) et de relancer la commande ./installfog.sh. Plus d'info ici : https://wiki.fogproject.org/wiki/index.php/Uninstall_FOG

 

III- Utilisation de FOG

Attention pour la partie qui suit, il faudra avoir réglé auparavant le réseau VirtualBox différemment ! Il faut choisir comme "Mode d'accès réseau :", "Accès par pont" et dans les paramètres avancés, dans l'option "Mode Promiscuité :", choisir "Allow All" :

A- Test de FOG

On peut d'ores et déjà tester le serveur FOG en branchant en filaire sur le même réseau un ordinateur de test et le faire démarrer sur le réseau en PXE. Si on voit le menu FOG qui apparaît sur le client, cela signifie que le serveur est fonctionnel !

B- Récupération de l'image Primtux à déployer

FOG marche dans les 2 sens, c'est-à-dire qu'il peut déployer une image mais aussi "l'aspirer" (comme CloneZilla). On peut donc préparer un ordinateur sous Primtux avec une seule partition (de cette façon, il sera possible de déployer l'image sur un disque de capacité plus petite à condition que les données ne dépassent pas sa capacité) et ensuite récupérer son image qui servira de modèle (master). J'en profite pour y installer DWService, Clipman, BlocksCAD, ... (voir cette page : https://lofurol.fr/joomla/logiciels-libres/338-primtux-installation-de-primtux7).

Source : https://docs.fogproject.org/en/latest/kb/how-tos/capture-an-image/

  • On démarre l'ordinateur servant de modèle Primtux7 en boot PXE (en général, touche F12 au démarrage) et quand le menu FOG apparaît on fait une "Quick registration and inventory" afin d'enregistrer cette machine dans FOG. Une fois l'enregistrement fait, l'ordinateur redémarre sous Primtux7 et on l'éteint.
  • Dans FOG, on va dans le menu "Images" (icône en forme d'image justement), et on crée une nouvelle image. On lui donne un nom comme Primtux7 et sans rien modifier d'autre, on l'enregistre. Remarque : on choisit une seule partition pour l'image car de cette façon, il sera possible de déployer l'image sur un disque de capacité plus petite à condition que les données ne dépassent pas sa capacité.
  • Dans FOG, on revient sur la machine enregistrée auparavant (elle a pour nom son adresse MAC) et on la modifie en cliquant sur son nom. Dans le champ "Image machine" on lui associe l'image Primtux7 créée précédemment. On n'oublie pas de sauvegarder la modification.
  • Toujours dans la modification de la machine, on clique en haut sur l'onglet "Tâches basiques" puis sur l'icône "Capture". On laisse les paramétrages par défaut et on crée la tâche en cliquant sur le bouton bleu "Tâche" -> Un message vert indique que la tâche a été créée avec succès. On peut vérifier l'existence de cette tâche en cliquant sur l'icône "Tâches" représentant un empilement horizontal de dossiers.
  • On redémarre alors l'ordinateur modèle Primtux7 en boot PXE. Cette fois-ci, le menu FOG n'apparaîtra pas mais un terminal indiquant des opérations en cours avec une dernière fenêtre bleue à la Clonezilla avec 2 barres de progression rouges. Sur le serveur FOG, on voit la tâche s'effectuer avec petite roue en mouvement. Au bout d'un certain temps (d'où l'intérêt d'avoir un switch réseau 1 Gigabit), l'image est obtenue (autour de 25 Go).
C- Déploiement de l'image Primtux7

Source : https://docs.fogproject.org/en/latest/kb/how-tos/deploy-an-image/

FOG reseau 2

Tout se fait à partir de l'ordinateur client (pas besoin d'agir sur le serveur FOG).
Sur les ordinateurs à installer :

  • on démarre en boot PXE et on procède à leur "Perform Full Host Registration and Inventory" qui permet de leur assigner un nom et surtout une image ID (dans notre cas celle créée auparavant de Primtux7 et qui est la numéro 1).
  • On laisse tous les autres champs vides (inutile de renseigner "Primary user" ou les "Tags").
  • À la question "Deploy image now ?", choisir Y puis renseigner les mots de passe FOG (utilisateur = fog ; mot de passe =password).
  • Lorsque l'ordinateur redémarre, il faut le faire en boot PXE (touche F12) et alors l'image Primtux7 s'installera automatiquement.

IV- Réajustement de la taille de la partition

Après l'installation de Primtux7, avec Gparted, j'ai constaté que sur l'ordinateur cloné, la taille globale des partitions correspondait à celle du disque d'origine (250 Gb) alors que mon disque physique ne faisait que 100 Gb. Problème...
De plus, la partition de Primtux7 n'occupait que 25 Gb tout le reste étant vide. Il n'y a pas d'ajustement automatique de la taille pour occuper tout l'espace disque, ce qui est dommage et nécessite donc une intervention supplémentaire (peut-être qu'il existe une astuce que je ne connais pas).
Aussi, avec GParted j'ai augmenté la taille de cette partition de 25 Gb à 98 Gb (pour ne pas dépasser la grandeur physique de 100 Gb du disque).

 

V- Prolongement - Évolutions

L'autre avantage de FOG est de pouvoir installer des applications supplémentaires ou faire des mises à jour à distance mais je n'ai pas encore eu le temps de tester. À voir... en situation réelle, si l'occasion se présente et se justifie (gros parcs de machines, ce qui est rarement le cas dans ma situation).

Il serait intéressant aussi d'automatiser certains réglages lors du déploiement : pouvoir renseigner directement (ne pas avoir à le faire sur toutes les machines après leur redémarrage) les adresses IP fixe, passerelle, serveur de partage, etc... Mais je n'ai pas trouvé d'exemple en ligne sur lequel m'appuyer...
Scripts de post installation :