Installation et configuration d’un serveur FOG
FOG : Free Open-source Ghost est une solution de clonage et de déploiement de systèmes d’exploitation et de logiciels sur des ordinateurs. Il s’installe à l’aide d’un script qui compile plusieurs paquets nécessaires à sa mise en place. Il s’installe sur différent système d’exploitation, notamment sous Debian, Ubuntu…
Prérequis
Un serveur Windows 2012 avec le rôle Hyper-V qui nous permettra d’installer nos différentes machines tests
Une machine Debian sur laquelle nous allons télécharger et lancer le script d’installation de FOG
Un serveur DHCP, un DNS et Active Directory dans notre cas, nous avons utilisé les serveurs du lycée.
Une machine Windows 7 pour des tests
Avant de commencer, j’ai configuré la carte réseau de notre machine en IP statique dans le fichier « /etc/network/interfaces » afin d’éviter le changement d’adresse IP lors du redémarrage de la machine.
Par la suite, je suis allée sur le site FOG Project et téléchargé le fichier d’installation de Fog, version 1.5.5, qui de base va se loger dans le répertoire de Téléchargement de l’utilisateur, ensuite je l’ai déplacé dans le répertoire /usr/local, via la commande:
mv fogproject-1.5.5.tar.gz /usr/local.
Après il faut le décompresser avec la commande:
tar -xvzf fogproject-1.5.5.tar.gz .
Se déplacer dans le répertoire (/usr/local/fogproject-1.5.5/bin) où se trouve le script d’installation et le lancer avec la commande : « ./installfog.sh »
Une fois l’exécution de la commande, la page ci-dessous s’affiche et pour le paramétrage du serveur, j’ai été amenée à répondre à différentes questions.
Après avoir répondu à toutes les questions, un résumé de la configuration apparait afin de valider les réponses.
une fois les paquets installés, l’assistant demande de faire l’initiation de la base de données FOG, il faut se rendre sur le navigateur Web à l’adresse suivante : http://172.16.1.50/fog/management, et cliquer sur « Install/Upgrade Now » et lorsque le message « Update/Install Successful » apparait, on retourne sur le serveur FOG et tape la touche « entrée » pour continuer le script d’installation.
Configuration du serveur DHCP existant
FOG amorce les machines via PXE (Preboot eXecution Environnement). PXE est un environnement permettant d’amorcer les postes via le réseau. Cependant il a besoin d’un serveur DHCP pour fonctionner, puisque c’est ce dernier qui attribue une adresse IP au client PXE et indique également à ce client l’adresse du serveur TFTP hébergeant le fichier de boot PXE ainsi que son nom.
Le serveur DHCP étant mis en place, reste à configurer l’option 066 et 067 afin qu’il fonctionne avec le serveur FOG et le boot PXE des machines. Pour se faire dérouler le menu IPv4 sur le serveur DHCP et aller dans « options de serveur » et cliquez sur à configurer les options.
Cochez la case 066 et indiquez l’adresse du serveur FOG :
Cochez ensuite la case 067 qui est le fichier de boot PXE, et renseignez le nom du fichier, dont « undionly.kpxe ». C’est ce fichier qui permet le démarrage d’une machine sur le réseau.
Préparation du serveur FOG
Avant de commencer l’aspiration ou le déploiement d’une machine, nous allons préparer le serveur FOG.
Cliquez sur « Storage Management » ensuite sur « DefaultMember », qui est le stockage crée par défaut automatiquement lors de l’installation. Modifier éventuellement selon les besoins, le nombre de clients max dans le champs « Max Clients ».
Se rassurer également que le mot de passe se trouvant dans le menu FOG Configuration > FOG Settings > TFTP Server > TFTP FTP PASSWORD est le même que celui du menu Storage > All Storage > DefaultMember >Management Password, dans le cas contraire le copié et le remplacer, sinon nous allons rencontrer l’erreur suivante lors de la capture de l’image d’une machine :
Inventaire d’une machine hôte
Afin d’effectuer des tâches de déploiement, de capture d’images, etc.… le serveur FOG a besoin de répertorier toutes les machines hôtes qui s’y connectent. Lors de l’inventaire, chaque poste est répertorié par son adresse MAC. Il faudra par la suite la renommer selon la nomenclature prévue par l’établissement.
Pour inventorier une machine hôte sur le serveur, il faut amorcer le poste en PXE, c’est-à-dire booter sur le réseau (Pour se faire, se rendre dans le BIOS et changer l’ordre de démarrage de la machine, appuis long sur F12). Après l’amorçage via PXE l’écran ci-dessous apparait, et il faut cliquez très rapidement (on peut modifier ce délai dans le menu « FOG Configuration > iPXE Boot Menu >Menu Timeout ») sur « Quick Registration and Inventory » à l’aide des flèches du clavier
Par la suite je retrouve le poste enregistré sur le serveur par son adresse Mac dans le menu « Host Management >List all Hosts »
Création d’un groupe d’hôte
La création d’un groupe permet de déployer plusieurs machines simultanément.
Pour se faire cliquez sur le menu « Group Management > Create New Group et définir le nom du groupe. Cliquez sur « Add ». Une fois le groupe créé aller sur « List All Groups » et éditer le groupe créé.
Ensuite cliquez sur le menu « MemberShip » et ajouter toutes les machines que vous souhaitez joindre à ce groupe et cliquez sur « ADD Hosts to Group »
Création d’une image
Le clonage d’un poste consiste en la copie des partitions du disque dur d’un poste lambda. Pour se faire, une image doit être créée pour contenir les partions du disque dur sur le serveur FOG.
Pour créer une nouvelle image, aller sur « Image Management >Create New Image » ensuite renseignez les champs suivants:
Single Partition (NTFS Only, Resizable), Un seul disque dur, pour Windows uniquement (NTFS), la partition sera redimensionnée, c’est-à-dire qu’une partition de 320Go avec 25Go utilisés pourra être déployée sur un disque 50Go.
Multiple Partition –Single Disk: Clone toutes les partitions d’un seul disque. Les partitions ne sont pas redimensionnées et supportent plusieurs systèmes de fichier (NTFS, ext2, ext3, reiserfs, swap). Pratique pour cloner les dual-boot ou les systèmes Linux. Ce type supporte Windows 7 selon la documentation FOG
Multiple Partition –All Disks: Même chose, mais pour plusieurs disques durs.
Raw Image: Clone un disque dur secteur par secteur. Ceci transférera l’intégralité des données du disque (nulles ou pas) sur le serveur FOG.
Une fois créée, une image est vide. Il faut la remplir en capturant l’image d’une machine hôte.
Préparation d’une image
Pour cloner un poste, il faut déjà préparer le système d’exploitation qu’il y a dessus en installant tout ce qui est nécessaire à la finalité de l’image. Le système ne doit pas être intégré au domaine Active Directory avant la capture de l’image, sous peine de refus d’accès par le contrôleur de domaine lors du déploiement.
Pour la configuration de la machine test et son intégration au domaine, l’agent FOG doit y être installé.
Installation de l’agent FOG
Pour installer l’agent FOG, sur une machine :
Il faut récupérer le package d’installation de l’agent sur le serveur, via le lien : http://172.16.1.50/fog/client
Il faut exécuter « SmartInstaller.exe », l’agent FOG va ensuite s’installer. Un écran de confirmation apparaîtra, il faut indiquer l’adresse IP et ensuite cocher toutes les cases qui correspondent à la configuration des services FOG.
J’ai pu constater que le .exe de l’agent FOG se trouvait automatiquement dans le répertoire téléchargements de chaque machine qui était enregistrée sur le serveur. Ce qui nous évite d’aller le chercher sur sa page Web avant de l’installer.
L’agent FOG est à présent installé, il faut redémarrer la machine.
Aspiration d’une machine test
Lorsque la préparation du système est terminée, l’aspiration de la machine test peut être lancée. Le poste doit être répertorié sur le serveur et l’image créée précédemment doit lui être liée.
Pour ce faire aller sur l’interface web de FOG, puis click sur le menu « Host Management > List all Hosts », choisir l’hôte qui va être aspirée (la machine qui a été enregistrée au préalable sur le serveur)
Double cliquez sur l’image host pour l’éditer et modifier le « Hostname », puis sélectionner le « Host Image » (qui est l’image de capture créée auparavant) et cliquez sur « Update » pour valider.
Ensuite cliquez sur le menu « Basic Tasks », une nouvelle fenêtre s’ouvre cliquez sur « Capture »
Une fenêtre de paramétrage s’ouvre, l’on peut choisir plusieurs options comme le « Wake on lan » (consiste à déployer sur une machine éteinte à condition que cette option soit activée dans le Bios de la machine) et « Schedule Instant » ensuite click sur « Task »
Une fenêtre de confirmation de la création de la tâche de capture apparaît.
Ensuite on redémarre la machine en faisant un appui long sur la touche F12 afin que la machine boot en PXE, et la capture va commencer automatiquement. Après la capture la machine redémarre normalement.
Déploiement de l’image
Déploiement de l’image
La première étape du déploiement consiste à démarrer la machine à déployer en réseau comme à l’étape de la capture et cliquer sur « Quick Registration and Inventory », cette option permet à la machine de s’enregistrer sur le serveur FOG.
Ensuite aller sur l’interface du Web du serveur FOG. Dans le menu « Host Management > List all Hosts », cliquez sur la nouvelle machine qui apparaît pour l’éditer.
Modifiez le « Hostname » (donner un nom compréhensible), puis sélectionnez le « Host Image » (qui est l’image capturée). Ensuite click sur « Update » pour valider.
Si on souhaite l’intégrer au domaine lui renseigner le nom du domaine dans le menu Active Directory qui a été préalablement rempli dans FOG Configuration > FOG Settings >Active Directory Defaults afin de faciliter la configuration lors du déploiement.
Ensuite renseigner le groupe dans lequel il appartient dans l’onglet « MemberShip » et valider.
Nous retournons sur le menu « All Hosts », sur la machine que l’on souhaite déployer et cliquez sur le petit onglet « Deploy ».
Une fenêtre s’ouvre et nous demande de choisir le moment souhaité pour déployer l’image.
Sélectionner l’option « Schedule Instant », puis cliquez sur « Task ».
J’ai un message de confirmation de la création de la tache de déploiement qui s’affiche.
Ensuite je redémarre la machine à déployer afin qu’elle boot en PXE une nouvelle fois. Le déploiement démarre automatiquement. Aller sur le menu « Task Management > Active Tasks de la page Web du serveur FOG et voir l’évolution du déploiement.
Au niveau de la machine où se déploie l’image, nous avons l’écran ci-dessous
Une fois le déploiement terminé, la machine redémarre automatiquement sur le nouveau système d’exploitation.
NB: Si le déploiement se fait sur la même machine qui a été capturée, nous n’aurons plus besoin de l’enregistrer car elle existe déjà sur le serveur FOG, alors éditer la machine et renseigner les champs et cliquez sur update.
Soit à partir de la fenêtre ci-dessous cliquez juste sur « Deploy Image » et le déploiement sera lancé.
FOG : intégration Active Directory
Afin d’intégrer toutes les machines qui seront déployées dans un domaine Active Directory, il faut effectuer les configurations au niveau de la page Web du serveur FOG. Pour cela aller dans les menus ; FOG Configuration > FOG Settings > Active Directory Default et renseigner les champs suivants :
Ensuite clic sur « Update »
Une fois qu’il est configuré ainsi, il sera pré rempli au niveau de chaque machine qui sera enregistré sur le serveur sur l’onglet « List All Host à Active Directory
Le multicast est un envoi des mêmes données à plusieurs destinataires, il permet de lancer le déploiement sur un ensemble de machines répertoriées dans un groupe.
Les avantages du Multicast
Comme pour le déploiement unicast, je commencerais par démarrer les machines à déployer en PXE pour faire un « Quick Registration and Inventory ».
Une fois les machines enregistrées, je suis allée sur l’interface web du serveur FOG, dans le menu « Host Management >List All Hosts.
J’ai édité chaque machine (double clic sur la machine) afin de définir un hostname et une image.
Dans le menu « Group Management > List All Groups, click sur le groupe créé pour l’éditer, ensuite sur « Membership > Modify Membership … j’ai ajouté les machines renommées plus haut et cliqué sur « Add Hosts To Group »
Ensuite retour sur « List All Groups ». Puis clic sur l’onglet « Multicast » pour lancer l’action
Ensuite cliquez sur « Update » pour valider. Une fenêtre s’ouvre afin de valider le mode de déploiement.
Après avoir valider j’obtiens une nouvelle fenêtre de confirmation référençant toutes les machines sur lesquelles sera fait le déploiement.
Pour vérifier les machines à déployer, clic sur Task Management > Active Tasks
Je redémarre chaque poste à déployer. Et tant que toutes les machines ne seront pas prêtes, le déploiement ne commencera pas. Pour cela nous aurons l’écran ci-dessous sur les postes déjà redémarrés.
Dès que toutes les machines sont prêtes, le déploiement de l’image commence comme sur l’image ci-dessous
À la fin du déploiement, les machines redémarrent automatiquement sur le nouveau système d’exploitation.
Snapins
Un snapin est un exécutable Windows. Cet exécutable peut être un installateur (.exe, .msi), un modificateur de la base de registre (.reg), un script (.vb), etc.… bref tout ce qui est exécutable par une machine Windows est un Snapin.
Le but d’un snapin est d’être déployé sur des postes, via l’agent FOG. L’application est tout d’abord téléchargée, ensuite envoyée sur le serveur FOG, et sera par la suite liée à un groupe d’hôte pour être déployée sur ce dernier. Lorsqu’une machine hôte du serveur FOG détecte un snapin qui lui est destiné, il télécharge ce snapin et l’exécute sur ce dernier.
Mise en place d’un snapin
Un snapin est envoyé sur le serveur via l’interface Web de FOG. La taille par défaut d’un Snapin peut être modifiée dans un fichier de configuration PHP, dont /etc/php/7.0/apache2/php.ini.
Dans la section Ressource Limits, il faut changer la memory_limit à la valeur souhaitée.
Dans la section Data Handling, il faut passer post_max_size à la valeur souhaitée.
Dans la section File Uploads, il faut upload_max_filesize à la valeur souhaitée.
À la fin il faut redémarrer le serveur apache2 : « service apache2 restart »
Création d’un Snapin
Pour créer un snapin, il faut aller sur l’interface Web de FOG, menu « Snapin Management >Create New Snapin, ensuite renseigner les informations nécessaires à sa création dont :
Snapin Name : c’est le nom que prendra le snapin sur l’interface de FOG
Snapin Description : renseigner ici la version du logiciel par exemple et sa fonction.
Snapin Run With : c’est le chemin du programme qui va lancer le snapin.
Après avoir fournir toutes ces informations, cliquer sur « Add »
Dans mon contexte il m’a été demandé de créer les snapins suivants :
– Firefox
– LibreOffice
– Notepad++
– GeoGebra 5
– Python
– Chrome
La difficulté pour leur mise en place a été de trouver ces logiciels en .msi, Dans le cas contraire en .exe mais avec l’argument nécessaire. j’ai pu trouver les arguments suivant :
Chrome : msiexec.exe /i GoogleChromeStandaloneEnterprise64.msi /quiet
Firefox : msiexec.exe /i FirefoxESR-60.4.0-fr.msi /quiet
GeoGebra: msiexec.exe /i GeoGebra-Windows-Installer-5-0-516-0.msi /quiet ALLUSERS=2
GvR : GvRng-4.4_win32.exe /S
LibreOffice : msiexec.exe /i LibreOffice_6.0.7_Win_x64.msi /quiet
Notepad++ : msiexec.exe /i Notepad_MSI_Installer.msi /quiet
-Python: python-3.7.1.exe/quiet InstallAllUsers=1.
Pour python l’option « InstallAllUsers=1 permet qu’il soit installé pour tous les utilisateurs qui se connecteront à la machine.
Lier un snapin
Un snapin peut être lié individuellement ou par groupe. La liaison se fait via la page de gestion d’un hôte, section Snapin. Il faut choisir le snapin que l’on souhaite lier et cliquer sur le bouton « Add Snapin ».
La liaison par groupe fonctionne de la même façon, sauf qu’il faut passer par la page de gestion du groupe. Le snapin est lié à toutes les machines hôtes du groupe.
Déploiement du Snapin
Pour un déploiement individuel ou groupé, le procédé reste le même. Choisir le poste concerné, ensuite aller dans le menu « Basic Tasks > Advanced et faire le choix selon que l’on souhaite déployer un seul (Single Snapin) ou plusieurs snapins (All Snapins).
Lorsque que la tâche est lancée, le déploiement du Snapin démarre sur les postes ciblés. Il faut que l’agent FOG du poste contacte le serveur pour rapatrier le Snapin et le lancer. Il faut donc parfois attendre quelques minutes.
Ajout d’un second disque dur virtuel sur notre serveur FOG
Nous avons été emmenés dans un second temps à mettre en place un second disque sur le serveur FOG afin d’augmenter l’espace de stockage des différents systèmes d’exploitation que l’on va capturer.
La machine Debian étant sur hyper-V, nous avons éteint la machine, ensuite aller dans paramètre → Ajouter un matériel → contrôleur IDE 0 → Disque dur → ajouter.
Une nouvelle page s’ouvre, click sur nouveau et choisir le format du disque dur souhaité, dans notre cas, nous avons choisi le format VHD pour la simple raison que le VHDX a des fonctionnalités pas compatibles avec les serveurs antérieurs à 2012, le type de disque (taille fixe).
Ensuite renseigner le nom du disque et choisir son emplacement, la problématique de cette étape pour nous, a été de le mettre à un emplacement qui n’avait plus assez d’espace libre et lors de la copie des fichiers il s’est retrouvé saturé et les fichiers corrompus. D’où la nécessité de vérifier son espace de stockage et enfin la taille du disque (400Go).
Avant de commencer la configuration du nouveau disque, nous allons tout d’abord voir les disques présents sur la machine (éventuellement si le disque installé est bien présent). Avec la commande « fdisk -l ». Nous pouvons remarquer comme indiqué sur l’image ci-dessous que le nouveau disque s’appelle « sdb »et sa taille est bien de 400 Go.
Afin de vérifier le bon fonctionnement du disque nouvellement installé nous avons effectué des tests d’écriture et de lecture sur le disque avec la commande suivante : « dd if=/dev/sdb/zero of=sdb count=20 bs=512 »
Par la suite nous avons partitionné le disque dur pour effectuer les points de montage et le système de fichiers, grâce aux commandes suivantes :
Nous avons commencé par taper la commande suivante « fdisk /dev/sdb » pour accéder au disque.
Ensuite pour afficher les différentes options qui s’offrent à nous, nous avons saisi « m » et enchainé une succession de commande dont:
« n » pour créer une nouvelle partition.
« p » pour une partition de type primaire.
« 1 » pour spécifier le numéro de la partition.
On appuie une première fois ensuite une deuxième fois sur la touche « entrée » pour laisser par défaut les valeurs proposées.
« t » pour accéder à l’édition de l’identifiant du système de fichier de la partition.
« 83 » indique le code hexadécimal qui concerne le système linux.
« a » pour basculer l’amorçage sur la partition voulue.
« 1 » pour sélectionner la partition 1.
« w » pour écrire sur le disque et enregistrer les modifications.
Le disque est maintenant partitionné.
Nous avons créé une partition qui n’est pas préparé à être traitée avec un système de fichier spécifique, nous allons donc formater la partition créée avec le système de fichier « ext4 » à l’aide de la commande suivante :« mkfs.ext4 /dev/sdb1 ».
Le disque est configuré! Nous pouvons dès à présent déplacer notre ancien répertoire d’images. Nous allons copier tout le répertoire /images de l’ancien disque vers le répertoire /images.old. Pour cela, nous avons rentré la commande suivante :« mv /images /images.old »
Nous avons par la suite créé un nouveau point de montage, à l’aide de la commande:
« mkdir /images »
Ensuite monter le nouveau disque en tant que répertoire « /images » avec la commande suivante : « mount –t ext4 /dev/sdb1 /images »
Pour vérifier que le nouveau périphérique est bien monté. Taper la commande: « mount »
Nous avons fait une copie du dossier /images.old sur le nouveau disque: à l’aide de la commande: « rysnc –av –progress /images.old /images »
Maintenant, nous nous assurons que le nouveau périphérique est monté au démarrage du système en éditant le fichier : « /etc/fstab » et rajouter la ligne suivante comme sur l’image ci-dessous:
La modification de ce fichier permet de monter le disque dur au démarrage car ce fichier est lu et exécuté au démarrage de la machine.
Nous avons par la suite Modifié les autorisations sur le répertoire /images.
« chmod -R 777 /images »
Après cette modification, enregistrer le fichier et redémarrer le serveur.
Après le changement de l’adresse IP de notre serveur FOG nous avons été confronté à un problème à savoir celui de l’inaccessibilité des machines sur le serveur, pour cela nous avons procédé comme suit : dans un premier temps, nous sommes allés sur l’interface web du serveur et modifié les menus ci-dessous afin de mettre à jour la nouvelle adresse IP du serveur. Pour cela aller dans le menu Configuration → FOG Setting → TFTP Server → TFTP Host et Web Server → Web Host modifié l’adresse IP.
Par la suite en ligne de commande :
Aller dans le fichier /opt/fog/ .fogsettings et le mettre à jour en changeant l’adresse IP: « nano /opt/fog/.fogsettings
Après le changement relancer l’installation de FOG, pour cela se déplacer dans le répertoire où se trouve le fichier d’installation à l’aide de la commande :
« cd /opt/fogproject/./bin » et lancer le fichier d’installation qui s’y trouve « ./installfog.sh » et suivre la même procédure comme au début de l’installation et se rassurer que la nouvelle adresse IP est bien prise en compte.
Afin d’éviter l’erreur ci-dessous après le changement d’adresse IP du serveur FOG:
Aller dans le menu Storage et éditer DefaultMember, changer la case « IP Adress » ensuite cliquer sur « update », taper la touche F5 pour actualiser, vous verrez le disque apparaître.