Anthonix.fr – High Tech/Informatique : Tutoriels & actualité, insolite, geek !
29Oct/103

[HowTo] Utilisation de clonezilla pour le déploiement d’images via pxe

Cette documentation a été rédigée par mes soins lors de mon stage au sein de l'IUT de Metz.

Cette solution est actuellement utilisée dans un parc de 850 machines.

Objectifs

Les objectifs au terme de ce projet sont de pouvoir :

- Démarrer depuis le serveur un ou des postes à distance (utilisation de WOL)

- Pouvoir choisir à distance depuis le serveur sur quel partition l’on veut démarrer (utile pour une maintenance)

- Pouvoir à distance faire une image d’un ou de plusieurs clients en multicast via PXE

- Pouvoir restaurer une image précédemment créée toujours via PXE (en multicast)

Installation du serveur

Pour commencer, nous allons installer le serveur, dans notre cas, nous allons prendre la netinstall Debian 5.0 (Lenny/stable) sur kernel 2.6.26-2-686. Rien de particulier à dire si ce n’est que le seul package à choisir lors de la netinstall est simplement le Système standard.

Pas à pas de la netinstall

- Booter sur le cd de netinstall Debian

- Choisir install

- French (langue)

- France (pays)

- Français (clavier)

- DHCP => annuler puis « continuer »

- Configurer vous-même le réseau

- Votre adresse IP

- Masque classe C

- Votre passerelle/routeur

- Votre serveur DNS

- Nom de la machine : Clonezilla

- Domaine : aucun

- Partitionnement manuel :

o Sda => créer table de partition

o Créer nouvelle partition primaire en ext3 (montage /) (dans notre cas pas de swap, RAM suffisante)

o Terminer partitionnement

- Choisir mot de passe, etc…

- Installer grub

Installation de DRBL/clonezilla

Avant toute chose, il va falloir ajouter les dépôts de clonezilla dans le sources.list (dans /etc/apt)

Deb http://drbl.sourceforge.net/drbl-core drbl stable

Mettre à jour la base de données locale des dépôts : apt-get update

Une erreur concernant la clé GPG ? Pas de panique, il suffit de récupérer la clé concernant drbl (wget http://drbl.nchc.org.tw/GPG-KEY-DRBL) et d’ajouter cette clé pour apt (apt-key add GPG-KEY-DRBL) !

Il faut maintenant créer une interface virtuelle : ifconfig eth0:0 IP netmask MASQUE up

Ce dernier point est utile car lors de l’installation de drbl/clonezilla, ce dernier est configuré pour utiliser 2 interfaces (LAN/WAN), nous y reviendrons après.

Nous allons maintenant récupérer le paquet .deb de drbl afin de l’installer.

Pour le récupérer, nous allons utiliser links2, un navigateur en console.

apt-get install links2 gpm

gpm est quant à lui aussi utile car il permet d’utiliser la souris en console, très pratique pour les copier/coller.

Il suffit maintenant de se rendre dans links2 et d’entrer l’url http://drbl.sourceforge.net/download/sourceforge/stable/pkg-files.php (ou http://bit.ly/dl-drbl) http://sourceforge.net/projects/drbl/files/drbl_stable/ afin de récupérer le paquet drbl_1.9.5-42_i386.deb drbl_1.12.15-1drbl_all.deb (Merci à @Ted, version à jour du 13/12/2012).

Passons maintenant à l’installation de celui-ci :

Dpkg –i drbl_1.9.5-42_i386.deb

Nous allons maintenant pouvoir lancer l’installation de clonezilla :

/opt/drbl/sbin/drblsrv –i

- Installer une distribution ? non, inutile

- Console série ? non, inutile

- Architecture : i586

- Mettre à jour le système d’exploitation : (Y) oui ou non (comme vous voulez…)

- Le script fait maintenant la mise à jour de l’OS et installe les paquets utiles pour mettre en place clonezilla….. (si l’on n’a pas modifié le sources.list en ajoutant les dépôts DRBL comme vu précédemment, il va y avoir une erreur avec la coupure du script.)

Configuration de drbl/clonezilla

Pour ce faire, il suffit de lancer la commande :

/opt/drbl/sbin/drblpush –i

Ensuite diverses questions vont être posées :

- dns, NIS, prefixe client : par défaut.

L’utilisation de l’interface virtuelle que l’on a créée précédemment va se faire ici. Drbl nous demande maintenant quelle est l’interface public (donc internet), ça sera l’interface eth0:0.

Répondre non aux 2 prochaines questions vu que l’on ne veut pas enregistrer ces clients, ni offrir les mêmes adresses aux clients, le serveur DHCPd (nous avons déjà la liste des macs adresses.) s’occupe de ça.

- Pour l’attribution d’IP, choisir une plage… (dans notre cas : entre 20 et 40) et valider via « y »

- Ne pas fournir de drbl (2) utilisant ltsp (inutile dans notre cas (pour clients légers)

- Fournir clonezilla BOX (1), c’est ce que nous avons besoin pour le déploiement.

- nous allons utiliser /images comme dossier de destinations de celles-ci.

- Aucun mot de passe de démarrage

- On définit un prompt de démarrage ! tempo à choisir (délai avant l’action par défaut), arrière-plan graphique (y)

- On désactive NAT, l’utilisation de PXE ne se fera qu’en LAN…

Et l’on poursuit..

La configuration se fait maintenant.

Afin de faciliter la gestion du parc par filtrage MAC, il est préférable d’ajouter dans /etc/dhcp3/dhcpd.conf les postes clients un par un afin de les nommer et donc de réserver les IPs, voici la syntaxe :

Host nom hôte {

Hardware ethernet @MAC ; #de l’hôte

Fixed-address @IP ; #de l’hôte

}

Et redémarrer le service dhcpd : /etc/init.d/dhcp3-server restart

Création d’images de grub pour la selection de la partition à booter à distance

Création d’image de disquette virtuelle

Pour commencer, il faut créer une image disquette (via VMware dans notre cas) du grub à envoyer en PXE.

Pour se faire, il faut se rendre dans les paramètres de la machine virtuelle dans l’onglet périphériques et sélectionner le floppy disk, et cliquer sur create disk. Il suffit de choisir un nom et ceci sera fait.

installation de grub

Nous allons maintenant procéder au formatage de la disquette via mke2fs :

mke2fs /dev/fd0

Puis monter la disquette dans un répertoire : mount -t ext2 /dev/fd0 /mnt

Et créer les 2 dossiers nécessaires à l’installation de grub :

mkdir –p /mnt/boot/grub

La prochaine étape est d’ajouter dans ce dernier le stage1 et stage2 de grub qui se trouve dans /boot/grub/ (cp /boot/grub/stage[1-2] /mnt/boot/grub).

Dès que les 2 stages de grub sont copiés, il faut démonter la disquette (umount /dev/fd0) et entrer dans grub (grub).

Afin de finaliser l’installation de ce dernier, il suffit d’entre les 2 commandes qui suivent (spécifier le périphérique et lancer l’installation) :

Configuration de grub

Grub est maintenant installé.

Cryptage du mot de passe

Afin de ne pas mettre le mot de passe de verrouillage grub en clair, nous allons le crypter en md5 via grub : (azerty pour les tests, ATTENTION : clavier grub en qwerty)

Configuration menu.lst

<

Il va maintenant falloir configurer le menu pour les partitions (dans ce cas, en défaut : Ubuntu) qui se trouve dans le répertoire monté /mnt/boot/grub/menu.lst:

Grub est maintenant configuré.

Création de l'image PXE

Nous pouvons maintenant procéder à la création de l’image de boot grub à partir de l’image disquette (ne pas oublier de démonter la disquette).

Pour cela, l’on va d’abord se rendre dans le répertoire root du serveur TFTP de clonezilla :

cd /tftpboot/nbi_img/

et enfin, créer l’image dans ce dernier :

# dd if=/dev/fd0 of=boot_ubuntu.img bs=1024 count=1440

L’image de boot PXE pour démarrer sur Ubuntu est maintenant prête. Pour Windows XP, il suffit de refaire la manipulation en modifiant simplement le default à 1 dans le menu.lst.

Configuration du menu de boot

Maintenant que les images de boot pour grub sont préparées, nous allons pouvoir les ajouter dans le menu de boot PXE. Pour se faire, il faut éditer le script situé dans /opt/drbl/sbin/generate-pxe-menu et se diriger vers la fin où l’on trouve les labels puis ajouter les 2 entrées pour ces menus (il est conseillé de les entrer après le label local, ce dernier restera par défaut comme ça).

On a aussi la possibilité de désactiver l’édition des menus en mettant l’option « ALLOWOPTIONS » à 0.

Définition des lignes :

Label : nom du label (vu sur clonezilla)

MENU DEFAULT : IMPORTANT : utilisé pour la configuration du boot via clonezilla

MENU HIDE : pareil

Menu label : nom du label vu sur le menu de boot pxe

Memdisk : utilisation de la mémoire du client pour charger l’image

Boot_xp.img : image à chargée

TEXT HELP/ENDTEXT : compléments d’aide lors de la sélection du label dans le menu pxe.

Pour changer le timeout du menu, il faut modifier timeout (40 = 4 secondes). On peut aussi modifier l’image de boot soit en changeant la valeur dans MENU BACKGROUND, soit en remplaçant drblwp.png situé dans /tftpboot/nbi_img/.

Le menu est maintenant configuré, il suffit de lancer ce script après l’avoir enregistré pour prendre en compte les résultats : /opt/drbl/sbin/generate-pxe-menu

Nous pouvons maintenant démarrer une machine en PXE pour voir les changements :

Utilisation de clonezilla

Voici divers exemples pour utiliser clonezilla (depuis la commande /opt/drbl/sbin/dcs) :

Premier menu :

2 choix sont proposés :

le premier permet de paramétrer une action pour TOUS les clients (c'est-à-dire sur tout le pool dhcp en récupérant les correspondances dans dhcpd.conf)

le second permet de paramétrer une action pour UN ou PLUSIEURS clients

Création de groupe

Il est possible de créer des groupes de MAC/IP pour éviter de sélectionner un à un les postes cibles.

Pour se faire il suffit de créer dans /etc/drbl/ un fichier contenant les adresses MAC ou IPs cibles.

Groupes par adresses MAC

/etc/drbl/MAC-grp-« nom du groupe »

Contenu (une IP par ligne) :

00:25:XX:XX:XX:XX

00:1c:XX:XX:XX:XX

Groupes par adresses IP

/etc/drbl/IP-grp-« nom du groupe »

Contenu (une IP par ligne) :

192.168.1.1

192.168.1.2

Exemple 1 : sélectionner le démarrage par défaut

Maintenant, si l’on veut que TOUS les postes démarrent automatiquement sur XP, il suffit de sélectionner le mode « All », de se rendre dans l’option « more » => « switch-pxe-menu » => « setdefault »=> cocher « xp ».

Exemple 2 : utilisation du wol (wake-on-lan)

Maintenant soit on démarrer les postes un à un… soit on relance dcs en sélectionnant une fois de plus le mode « All » et en sélectionnant par la suite « Wake-on-Lan ».

Attention lorsque l’on choisit ce paramètre, il reste par défaut même après le redémarrage de la machine. Donc il faut penser à changer la valeur de setdefault après reboot.

Exemple 3 : Backup d'un poste via PXE

Nous allons cette fois ci utiliser le mode « part » avec par la suite, le mode par adresse MAC.

On choisit le poste client à sauvegarder via la touche espace et l’on accepte.

Ensuite, il faut choisir « clonezilla start », suivis de « save-parts » (dans mon cas « save-disk ») et entrer le nom de l’image.

Exemple 4 : Restauration de plusieurs postes en Multicast

Encore une fois, nous allons choisir le mode « Part » .

On choisit les postes à restaurer en cochant avec la touche espace. (les hôtes affichés sont récupérés à partir des réservations IPs faites dans le dhcpd.conf)

Une fois les clients sélectionnés, il faut choisir le mode « clonezilla-start », ensuite au choix entre débutant et expert. Expert permettant de configurer plus d’options tel que la méthode de compression, la priorité des utilitaires à utiliser pour la restauration, etc…

Une fois choisi, il faut sélectionner « restore parts », choisir l’action à faire à la fin du clonage.

A noter : on ne peut faire de restauration sur un disque dur cible qui est plus petit que le disque dur dont provient l’image. Par ailleurs, il est possible de faire une restauration sur un disque dur plus grand que le disque dur source (clonezilla va s’occuper de redimensionner le MBR source afin que la taille de la table des partition soit proportionnelle à la taille du disque dur cible).

ensuite choisir le déploiement en multicast et le mieux est de choisir l’option ci-dessous :

Elle permet de spécifier un nombre de client cibles ainsi qu’un délai max avant le début du déploiement.

Imaginons que l’on veuille déployer une image sur 20 postes et que l’on mette un délai d’attente de 30 secondes : Si au bout de 30 secondes à partir du moment où le premier poste se connecte, les 20 postes connectés ne sont pas atteint, la restauration commence.

Lorsque la restauration est terminée, une notification est envoyée sur le Shell afin de prévenir l’état de la restauration.

Future mises à jour Clonezilla/Debian

Attention, pour les futures mises à jour clonezilla ou lorsque l’on veut mettre en place un nouveau kernel (via /opt/drbl/sbin/drblsrv –i), il faut faire une sauvegarde du script de génération de menu, de l’image splashboot ainsi que des images grub.

Posted by antho