FOG : Free Open-Source Ghost et Debian 8
>>> Solution de clonage et de déploiement de systèmes
Version PDF

Dans cet article, j’expliquerai l’installation du serveur FOG, puis j’expliquerai comment faire aspirer un disque pour le déployer ensuite.


Sommaire :

I) Introduction
II) Installation
1) Téléchargement de la solution
2) Installation de FOG
3) Problème de démarrage des services FOG
III) Configuration
1) Modification du mot de passe
2) Créer un utilisateur
3) Menu PXE timeout
IV) Préparation du serveur FOG
1) Storage Management
2) Image Management
3) Group Management
V) Aspiration d’une machine source
1) Enregistrement rapide
2) Problème de timeout default.ipxe
3) Aspiration d’une machine source
VI ) Déploiement d’une image
1) Déploiement Unicast
2) Déploiement Multicast
3) Blocage des tâches de déploiement


I) Introduction

Haut de page

FOG, pour Free Open-Source Ghost, est une solution de clonage et de déploiement de systèmes d’exploitation et de logiciel sur des postes PCs. Les systèmes d’exploitation supportés sont Windows et Linux. FOG installe et utilise plusieurs services Apache2, MySQL, PHP5, TFTP, etc. Il permet le déploiement de systèmes via le réseau en s’appuyant sur les protocoles DHCP, PXE, UDPCast, NFS et TFTP. L’administration centralisée se fait via une interface web et permet de gérer l’ensemble des postes unitairement ou par groupe selon que le déploiement se fait en unicast ou multicast.

Les autres fonctionnalités :

- Déploiement de logiciels.

- Installations automatisées d’imprimantes locales.

- Wake On Lan, insertion dans une base Active Directory, reboot, etc.

- Multiples services de boot : diagnostic mémoire, diagnostic disque, antivirus, récupération de fichiers, effacement de disque.

Je commencerai par installer le serveur sur une Debian 8, je ferai une capture d’un PC avec Windows 7. Pour finir, je ferai un déploiement sur deux machines en simultané.

II) Installation

Haut de page

1) Téléchargement de la solution

- Connectez-vous sur votre serveur Debian 8.

- Configurez une adresse IP Fixe sur le serveur, très important pour la suite de l’installation.

- Tapez la commande suivante pour télécharger la solution Fog dans le répertoire "opt"

cd /opt
wget -O fog.tar.gz http://sourceforge.net/projects/freeghost/files/latest/download?source=files

--2016-03-20 00:00:23--  http://freefr.dl.sourceforge.net/project/freeghost/FOG/fog_1.2.0/fog_1.2.0.tar.gz
Résolution de freefr.dl.sourceforge.net (freefr.dl.sourceforge.net)… 88.191.250.136, 2a01:e0d:1:8:58bf:fa88:0:1
Connexion à freefr.dl.sourceforge.net (freefr.dl.sourceforge.net)|88.191.250.136|:80… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 59126147 (56M) [application/x-gzip]
Sauvegarde en : « fog.tar.gz »

fog.tar.gz              100%[================================>]  56,39M   664KB/s   ds 1m 45s

2016-03-20 00:02:08 (549 KB/s) — « fog.tar.gz » sauvegardé [59126147/59126147]

- Dézippez l’archive.

tar xzvf fog.tar.gz

2) Installation de FOG

- Exécutez le script d’installation dans le dossier "/bin".

cd /opt/fog_1.2.0/bin
./installfog.sh

- Suivez les différentes étapes de l’installation. Pour commencer, indiquez la distribution sur laquelle vous installez FOG. Sélectionnez le choix "2".

      ..#######:.    ..,#,..     .::##::.
 .:######          .:;####:......;#;..
 ...##...        ...##;,;##::::.##...
    ,#          ...##.....##:::##     ..::
    ##    .::###,,##.   . ##.::#.:######::.
 ...##:::###::....#. ..  .#...#. #...#:::.
 ..:####:..    ..##......##::##  ..  #
     #  .      ...##:,;##;:::#: ... ##..
    .#  .       .:;####;::::.##:::;#:..
     #                     ..:;###..

 ###########################################
 #     FOG                                 #
 #     Free Computer Imaging Solution      #
 #                                         #
 #     http://www.fogproject.org/          #
 #                                         #
 #     Developers:                         #
 #         Chuck Syperski                  #
 #         Jian Zhang                      #
 #         Peter Gilchrist                 #
 #         Tom Elliott                     #
 #     GNU GPL Version 3                   #
 ###########################################

 Version: 1.2.0 Installer/Updater

 What version of Linux would you like to run the installation for?

         1) Redhat Based Linux (Redhat, CentOS, Mageia)
         2) Debian Based Linux (Debian, Ubuntu, Kubuntu, Edubuntu)

 Choice: [2] 2

- Deux types d’installation sont possibles, installation en mode normal ou en mode stockage. Choisissez l’installation "Normal".

Starting Debian / Ubuntu / Kubuntu / Edubuntu Installtion.

 FOG Server installation modes:
     * Normal Server: (Choice N)
         This is the typical installation type and
         will install all FOG components for you on this
         machine.  Pick this option if you are unsure what to pick.

     * Storage Node: (Choice S)
         This install mode will only install the software required
         to make this server act as a node in a storage group

 More information:
    http://www.fogproject.org/wiki/index.php?title=InstallationModes

 What type of installation would you like to do? [N] N

- L’installation vous demande de confirmer l’adresse IP du serveur. Si l’adresse IP correspond bien à l’adresse souhaitée alors appuyez sur la touche "Entrée".

What is the IP address to be used by this FOG Server? [adr:172.16.1.7]

- On vous demande ensuite si vous voulez configurer l’adresse IP de votre routeur dans le serveur DHCP. Tapez "y", puis définissez la passerelle de votre réseau.

Would you like to setup a router address for the DHCP server? [Y/n] y
 What is the IP address to be used for the router on the DHCP server? [172.16.1.254]

- Même question mais pour l’adresse du serveur DNS. Tapez "Y", puis définissez l’adresse de votre DNS.

Would you like to setup a DNS address for the DHCP server and client boot image? [Y/n] y
What is the IP address to be used for DNS on the DHCP server and client boot image? [172.16.1.254] 8.8.8.8

- L’installation vous demande si vous voulez utiliser une autre interface qu’ETH0. Dans mon cas, je veux utiliser ETH0 alors je tape "N".

Would you like to change the default network interface from eth0?
 If you are not sure, select No. [y/N]

- Voulez-vous utiliser le serveur DHCP de FOG, tapez "Y".

Would you like to use the FOG server for DHCP service? [Y/n] Y

- TRÈS IMPORTANT, à l’étape suivante tapez "N". Si vous installez le package langue, l’installation va échouer.

This version of FOG has internationalization support, would
 you like to install the additional language packs? [y/N] N

- Pour la dernière étape, tapez "N".

Would you like to donate computer resources to the FOG Project
 to mine cryptocurrency?  This will only take place during active
 tasks and should NOT have any impact on performance of your
 imaging or other tasks.  The currency will be used to pay for
 FOG Project expenses and to support the core developers working
 on the project.  For more information see:

 http://fogproject.org/?q=cryptocurrency

 Would you like to donate computer resources to the FOG Project? [y/N] N

- Vérifiez les réponses puis validez.

Here are the settings FOG will use:
        Base Linux: Debian
        Detected Linux Distribution: Debian
        Installation Type: Normal Server
        Server IP Address: 172.16.1.7
        DHCP router Address: 172.16.1.254
        DHCP DNS Address: 8.8.8.8
        Interface: eth0
        Using FOG DHCP: 1
        Internationalization: 0
        Donate: 0


 Are you sure you wish to continue (Y/N) Y

- L’installation commence ...

- Un message s’affiche vous annonçant que l’installation de Mysql va vous demander de configurer un mot de passe pour la base de données. Tapez sur la touche "Entrée".

    We are about to install MySQL Server on
    this server, if MySQL isn't installed already
    you will be prompted for a root password.

    Press enter to acknowledge this message.

- Mysql server vous demande de définir un mot de passe.

- Puis de le confirmer.

- L’installation vous demande si vous avez défini un mot de passe pour le serveur Mysql. Tapez "N" puis retapez le mot de passe saisi précédemment.

Did you leave the mysql password blank during install? (Y/n) N

 * Please enter your mysql password:
 * Please re-enter your mysql password:

- Connectez-vous via votre navigateur Web à l’adresse suivante :

- Lorsque le message "Update/Install Successful" apparaît, retournez sur votre serveur.

- Tapez sur la touche "Entrée" pour continuer le script d’installation.

Press [Enter] key when database is updated/installed.

- Si comme moi vous avez le message d’erreur suivant :

 * Starting FOG Multicast Management Server...Failed!

- Redémarrez votre serveur

reboot

- Re-connectez-vous sur votre serveur.
- Retournez dans le répertoire "/opt/fog_1.2.0/bin"
- Exécutez de nouveau le script.

cd /opt/fog_1.2.0/bin
./installfog.sh

- Retapez les mêmes choix que précédemment (à l’identique).

- Lors de la deuxième exécution du script, vous n’avez plus l’erreur.

* Starting FOG Multicast Management Server...OK

- Répondez Non à la dernière question.

 Would you like to notify the FOG group about this installation?
   * This information is only used to help the FOG group determine
     if FOG is being used.  This information helps to let us know
     if we should keep improving this product.

 Send notification? (Y/N) N

- L’installation est terminée.

Setup complete!

 You can now login to the FOG Management Portal using
 the information listed below.  The login information
 is only if this is the first install.

 This can be done by opening a web browser and going to:

     http://172.16.1.7/fog/management

     Default User:
            Username: fog
            Password: password

Script terminé, le fichier est /var/log/foginstall.log

- Connectez-vous sur l’interface web via votre navigateur.

3) Problème de démarrage des services FOG

Après l’installation du serveur FOG, les services "FOGMulticastManager", "FOGScheduler" et "FOGImageReplicator" ne démarrent pas en même temps que le système. Je pense que c’est un bug dans le script d’installe.

Les trois services sont importants sans eux pas de déploiement en Multicast, pas de planification des déploiements.

Comment voir si les services sont bien démarrés ?

- Tapez les commandes suivantes :

ps aux | grep FOGMulticastManager
ps aux | grep FOGTaskScheduler
ps aux | grep FOGImageReplicator

- Si comme moi vous obtenez ceci, alors vous avez le problème :

root@fog:~# ps aux | grep FOGMulticastManager
root       1495  0.0  0.2  12748  2212 pts/0    S+   12:34   0:00 grep FOGMulticastManager

root@fog:~# ps aux | grep FOGTaskScheduler
root       1497  0.0  0.2  12748  2072 pts/0    S+   12:34   0:00 grep FOGTaskScheduler

root@fog:~# ps aux | grep FOGImageReplicator
root       1499  0.0  0.2  12748  2240 pts/0    S+   12:34   0:00 grep FOGImageReplicator

- Si vous obtenez ceci, alors vous n’avez pas de problème et les trois services sont bien démarré :

root@fog:~# ps aux | grep FOGMulticastManager
root       1462  0.1  2.2 265080 23016 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGMulticastManager/FOGMulticastManager
root       1556  0.0  0.2  12748  2208 pts/0    S+   12:35   0:00 grep FOGMulticastManager

root@fog:~# ps aux | grep FOGTaskScheduler
root       1478  0.1  2.2 264820 22800 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGTaskScheduler/FOGTaskScheduler
root       1558  0.0  0.2  12748  2212 pts/0    S+   12:35   0:00 grep FOGTaskScheduler

root@fog:~# ps aux | grep FOGImageReplicator
root       1495  0.1  2.2 264840 22652 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGImageReplicator/FOGImageReplicator
root       1565  0.0  0.2  12748  2212 pts/0    S+   12:35   0:00 grep FOGImageReplicator

- Pour résoudre le problème, je modifie le fichier "/etc/rc.local".

vim /etc/rc.local

- J’ajoute les lignes suivantes :

sleep 10
service FOGMulticastManager restart
service FOGScheduler restart
service FOGImageReplicator restart
exit 0

- Pour finir, redémarrez le serveur.

reboot

- Puis je vérifie que les services sont bien lancés après le démarrage en tapant les commandes suivantes :

ps aux | grep FOGMulticastManager
ps aux | grep FOGTaskScheduler
ps aux | grep FOGImageReplicator

Vous devez obtenir ceci :

root@fog:~# ps aux | grep FOGMulticastManager
root       1462  0.0  2.2 265080 23072 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGMulticastManager/FOGMulticastManager
root       1607  0.0  0.2  12748  2128 pts/0    S+   12:37   0:00 grep FOGMulticastManager

root@fog:~# ps aux | grep FOGTaskScheduler
root       1478  0.0  2.2 264820 22800 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGTaskScheduler/FOGTaskScheduler
root       1609  0.0  0.2  12748  2176 pts/0    S+   12:37   0:00 grep FOGTaskScheduler

root@fog:~# ps aux | grep FOGImageReplicator
root       1495  0.0  2.2 264840 22652 ?        S    12:35   0:00 /usr/bin/php -q /opt/fog/service/FOGImageReplicator/FOGImageReplicator
root       1611  0.0  0.2  12748  2204 pts/0    S+   12:37   0:00 grep FOGImageReplicator

III) Configuration

Haut de page

1) Modification du mot de passe

- Cliquez sur "User Management".

- Cliquez sur "List All Users".

- Cliquez sur l’utilisateur "fog".

- Définissez le nouveau mot de passe de l’utilisateur "fog". Puis cliquez sur "Update".

  • Minimum 4 caractères et pas de caractères spéciaux.

2) Créer un utilisateur

Nous allons maintenant ajouter un deuxième utilisateur.

- Toujours dans le menu "User Management", cliquez sur "Create New User".

- Définissez le nom et le mot de passe du nouvel utilisateur. Puis cliquez sur "Create User".

3) Menu PXE timeout

Le délai d’affichage du menu PXE de FOG est trop rapide pour sélectionner le choix. Nous allons donc augmenter le timeout du menu.

- Cliquez sur "FOG Configuration".

- Cliquez sur "PXE Boot Menu".

- Modifiez le champ "Menu Timeout (in seconds)" et cliquez sur "Save PXE MENU"

IV) Préparation du serveur FOG

Haut de page

Avant de commencer l’aspiration d’une machine ou le déploiement d’une image, nous allons préparer le serveur FOG.

1) Storage Management

- Cliquez sur "Storage Management".

- Cliquez sur "DefaultMember", qui est le stockage par défaut créé automatiquement lors de l’installation.

- Vous pouvez modifier le nombre de client max dans le champ "Max Clients".

2) Image Management

- Cliquez sur "Image Management"

- Cliquez sur "Create New Image"

- Définissez :

  • Le nom de l’image
  • Le groupe de stockage
  • Le type de système d’exploitation
  • L’image type
    - Puis cliquez sur "Add".

3) Group Management

- Cliquez sur "Group Management".

- Cliquez sur "Create New Group".

- Définissez un nom de groupe. Cliquez sur "Add".

V) Aspiration d’une machine source

Haut de page

1) Enregistrement rapide

La machine source est pour moi la machine qui sera aspirée.
Pour pouvoir faire une aspiration, Fog doit analyser la machine. Démarrez la machine source en PXE.

- Si vous avez la même erreur que moi, passez à l’étape suivante.

- Sinon vous devez obtenir ceci. Sélectionnez l’option "Quick Registration and Inventory".

- Laissez le script faire l’inventaire, la machine source va redémarrer automatiquement après le script.

- Connectez-vous sur l’interface web de FOG. Puis cliquez sur "Host Management".

- Cliquez sur "List all Hosts"

- Vous pourrez voir votre machine source.

- Cliquez sur "Edit", modifiez le "Hostname" puis sélectionnez le "Host image". Cliquez sur "Update" pour valider.

- Retournez sur "List all Hosts". Puis sélectionnez la machine, sélectionnez le groupe et cliquez sur "Process group changes".

- Passez ensuite au chapitre V.3

2) Problème de timeout default.ipxe

- Allez dans le répertoire "tftdboot’.

cd /tftpboot

- Renommez le fichier "undionly.kpxe".

mv undionly.kpxe undionly.kpxeREAL

- Créez un lien symbolique.

ln -s pxelinux.0.old undionly.kpxe

- Créez un répertoire "pxelinux.cfg"

mkdir /tftpboot/pxelinux.cfg

- Créez un fichier "default" dans le nouveau répertoire.

vim /tftpboot/pxelinux.cfg/default

- Ajoutez les lignes suivantes dans le fichier. Modifiez x.x.x.x par l’adresse IP de votre serveur FOG.

DEFAULT vesamenu.c32
MENU TITLE Fog Reimage Menu
MENU COLOR TITLE        1;36;44    #ffffffff #00000000 std
LABEL iPXE Boot
MENU DEFAULT
KERNEL ipxe.krn
APPEND dhcp && chain http://x.x.x.x/fog/service/ipxe/boot.php?mac=${net0/mac}
PROMPT 0
TIMEOUT 1

Maintenant, retournez au chapitre V.1.

3) Aspiration d’une machine source

- Dans le menu "Host Management" et "List all Hosts", cliquez sur "Upload".

- Sélectionnez "Schedule Instant Deployment" et cliquez sur "Create upload task for Host Client1".

- Redémarrez la machine source en PXE. L’aspiration va commencer automatiquement.

VI ) Déploiement d’une image

Haut de page

1) Déploiement Unicast

- Première étape du déploiement, vous devez démarrer votre machine à déployer en PXE pour faire un "Quick Registration and Inventory".

- Allez sur l’interface web du serveur FOG. Dans le menu "Host Management" et "List all Hosts", cliquez sur la nouvelle machine qui apparaît.

- Cliquez sur "Edit", modifiez le "Hostname" puis sélectionnez le "Host image". Cliquez sur "Update" pour valider.

- Cliquez sur "List all Hosts".

- Puis sélectionnez la nouvelle machine inventoriée, sélectionnez le groupe et cliquez sur "Process group changes".

- Toujours dans "List all Hosts", cliquez sur "Download" sur votre machine à déployer.

- Sélectionnez l’option "Schedule Instant Deployment", puis cliquez sur "Create Download task for Host Client2".

- Redémarrez votre machine à déployer sur PXE une nouvelle fois. Le déploiement devrait démarrer automatiquement.

- Une fois le déploiement terminé, la machine redémarre automatiquement sur le nouveau système d’exploitation.

2) Déploiement Multicast

Pour le déploiement multicast, il y a deux méthodes possibles.

a) Première méthode

La première méthode consiste à sélectionner chaque machine faisant partie du déploiement multicast.

- La première étape du déploiement multicast est la même chose que pour le déploiement Unicast. Vous devez démarrer vos machines à déployer en PXE pour faire un "Quick Registration and Inventory".
- Allez sur l’interface web du serveur FOG, dans le menu "Host Management" et "List all Hosts".
- Éditez chaque machine (en cliquant sur l’icône crayon) afin de définir un hostname et une image.

- Retournez sur "List all Hosts". Puis sélectionnez les machines, sélectionnez le groupe et cliquez sur "Process group changes".

- Pour chaque machine que vous voulez déployer, cliquez sur "multicast".

- Sélectionnez l’option "Schedule Instant Deployment", puis cliquez sur "Create Multi-Cast for Host ClientX".

- Pour vérifier les machines à déployer, cliquez sur "Task Management" dans le menu.

- Vous devez obtenir la liste des déploiements en cours ou en attente.

- Redémarrez toutes vos machines à déployer. Vos machines doivent afficher l’écran ci-dessous. Tant que toutes vos machines ne seront pas prêtes, le déploiement ne commencera pas.

- Dès que toutes les machines sont prêtes, le téléchargement de l’image commence. A la fin du téléchargement, les machines vont redémarrer automatiquement sur le nouveau système.

b) Deuxième méthode

La deuxième méthode consiste à lancer le multicast sur un groupe de machines. Toutes les machines du groupe seront donc déployées.

- Comme pour tous les autres types de déploiement, commencez par démarrer vos machines à déployer en PXE pour faire un "Quick Registration and Inventory".
- Allez sur l’interface web du serveur FOG, dans le menu "Host Management" et "List all Hosts".

- Éditez chaque machine (en cliquant sur l’icône crayon) afin de définir un hostname et une image.

- Dans le menu "Group Management".

- Cliquez sur "List all Groups"

- Cliquez sur le groupe que nous avons créé.

- Cliquez sur "Membership"

- Si vous n’avez pas encore ajouté vos machines dans le groupe, vous devez obtenir ceci :

- Comme nous voulons seulement les 3 dernières machines, nous allons refaire le groupe avec seulement les 3 machines. Cliquez sur "Delete" pour retirer les machines du groupe. Puis sélectionnez les machines Client3, Client4 et Client5 avant de cliquer sur "Add Host(s) to Group". Pour finir, cliquez sur "Update Hosts".

- Retournez sur "List all Groups". Puis cliquez sur le bouton "Multicast" pour lancer l’action.

- Cliquez sur "Create Multi-Cast for Host ClientX".

- Vous obtenez ceci :

- Pour vérifier les machines à déployer, cliquez sur "Task Management" dans le menu.

- Vous devez obtenir la liste des déploiements en cours ou en attente.

- Redémarrez toutes vos machines à déployer. Vos machines doivent afficher l’écran ci-dessous. Tant que toutes vos machines ne seront pas prêtes, le déploiement ne commencera pas.

- Dès que toutes les machines sont prêtes, le téléchargement de l’image commence. A la fin du téléchargement, les machines vont redémarrer automatiquement sur le nouveau système.

3) Blocage des tâches de déploiement

Si vous avez un problème de blocage lors de vos déploiements, où les tâches multicast restent bloquées.

Voici une méthode qui peut fonctionner.

- Connectez-vous sur l’interface web de FOG, puis dans "Task management" supprimez toutes les tâches en cours.

- Connectez-vous en SSH sur le serveur FOG

- Entrez dans la base de données Mysql en sélectionnant la base de données "Fog".

mysql -u root -p fog

- Affichez ensuite le contenu de la table multicastSessions.

select * from multicastSessions;

- Vous devez obtenir ceci :

mysql> select * from multicastSessions;
+------+---------------+------------+-------------+---------+-----------+-------------+---------------------+-----------+---------+---------------------+--------+--------------+---------+---------+---------+
| msID | msName        | msBasePort | msLogPath   | msImage | msClients | msInterface | msStartDateTime     | msPercent | msState | msCompleteDateTime  | msIsDD | msNFSGroupID | msAnon3 | msAnon4 | msAnon5 |
+------+---------------+------------+-------------+---------+-----------+-------------+---------------------+-----------+---------+---------------------+--------+--------------+---------+---------+---------+
|    1 | GRP_Windows_7 |      60552 | Windows764b | 1       |         0 | eth0        | 2016-04-04 11:41:47 |         2 |       5 | 2016-04-04 11:43:46 |      1 |            1 |         |         |         |
|    2 |               |      51870 | Windows764b | 1       |         0 | eth0        | 2016-04-04 12:05:48 |         6 |       5 | 2016-04-05 13:05:55 |      1 |            1 |         |         |         |
|    3 |               |      53056 | Windows764b | 1       |        -1 | eth0        | 2016-04-04 12:05:52 |         2 |       5 | 2016-04-05 13:05:56 |      1 |            1 |         |         |         |
|    4 | GRP_Windows_7 |      60674 | Windows764b | 1       |         0 | eth0        | 2016-04-05 13:06:03 |         0 |       1 | 0000-00-00 00:00:00 |      1 |            1 |         |         |         |
+------+---------------+------------+-------------+---------+-----------+-------------+---------------------+-----------+---------+---------------------+--------+--------------+---------+---------+---------+
4 rows in set (0.00 sec)

- Videz la table "multicastSessions" et la table "multicastSessionsAssoc ".

truncate table multicastSessions;
truncate table multicastSessionsAssoc;

- On affiche de nouveau le contenu de la table.

mysql> select * from multicastSessions;
Empty set (0.00 sec)

- Vous pouvez si vous le voulez redémarrer votre serveur, mais même sans redémarrage votre serveur est de nouveau opérationnel.

 
 
11 avril 2016  --  N.Salmon
 
 
 
 
Commentaires :
Répondre à cet article

  •  FOG : Free Open-Source Ghost et Debian 8    > 26 octobre 16:50, par bastien

    Super article très bien détaillé

 
 
Se connecter | Copyright © 2016 Idum