Personal tools
You are here: Home Ressources Documentation Automatiser l'installation d'une Debian
Log in


Navigation
 
Document Actions

Automatiser l'installation d'une Debian

La traduction par certains membres de Parinux d'un article sur FAI, système d'installation automatique pour Debian

Automatiser l'installation d'une Debian (Partie 1)

Par: Carla Schroder
Lundi, 6 décembre 2004 03:47:59 PM EST
URL: http://www.linuxplanet.com/linuxplanet/tutorials/5667/1/

Pré-requis et introduction

La prochaine fois que vous avez une envie folle d'installer une grappe de machines Debian, facilitez-vous la vie et utilisez FAI (Fully Automatic Installation). FAI est un installeur polyvalent et intelligent pour faire des installations automatiques en masse de Debian. Utilisez-le pour installer des clusters, chaînes de serveurs, laboratoires ou salles de classe d'informatique ou des nouveaux réseaux. Une installation automatique présente plusieurs possibilités
  • Installation rapide après le remplacement d'un disque dur
  • Configuration rapide d'installations provisoires comme des salons, des demonstrations, des soirées réseaux et autres
  • Reformatage rapide et re-installation au début de nouvelles classes à l'école pour que les étudiants n'héritent pas du bazar que leurs prédécesseurs leur ont laissé.
  • Reformatage rapide et re-installation pour des nouveaux employés ou des stagiaires.

Vous allez construire un serveur d'installation centralisé qui contient un miroir Debian. Ceci peut très bien être un vieux PC avec un très gros disque dur ; vous aurez besoin de 10 Go d'espace disque juste pour les paquetages Debian. (N'essayez même pas si vous n'avez pas une connexion haut débit.) Un portable peut faire un très bon serveur FAI. Les clients pour l'installation iront chercher leurs fichiers sur ce serveur. Les clients n'auront besoin que de se connecter au réseau et de démarrer, soit par disquette, soit par la carte réseau. Les fichiers seront transférés aux clients via HTTP, FTP ou NFS, au choix.

Installer et configurer FAI se fait en deux temps : la configuration du serveur d'installation et la personalisation des scripts d'installation client. Une fois ceci est fait, FAI fait tout le travail et la seule chose que vous ayez à faire, c'est que ça n'ait pas l'air trop évident. La première partie couvre la mise en place du serveur, la seconde partie montrera comment réaliser les configurations clients et comment lancer une installation.

Mettre en place un miroir Debian local

Comme toujours, lancez apt-get update d'abord pour mettre à jour vos listes de paquetages. Puis, installez tous les paquetages nécessaires pour FAI :

# apt-get install fai fai-kernels debmirror mknbi dhcp3-server bootp tftpd-hpa rsh-server rsync

Vous découvrirez à quoi servent ces outils au fur et à mesure que nous avancerons. Ensuite, créez un répertoire pour accueillir votre miroir. Rappelez-vous que vous aurez besoin de beaucoup d'espace disque. Dans cet exemple, il s'agit de /debmirror, isolé sur sa propre partition et il y a 15 bon gros gigaoctets qui lui sont alloués.

Maintenant, vous pouvez télécharger les fichiers. Vérifiez la liste de miroirs pour en trouver un proche de chez vous. Utilisez le script mkdebmirror, situé dans /usr/share/doc/fai/examples/utils/ pour télécharger et construire les répertoires miroirs. Ensuite, modifiez le script pour prendre en compte vos préferences. Cet exemple crée un miroir Sid. Notez que le script d'origine inclus avec FAI fait un miroir de l'archive de sécurité. Ceçi n'est pas une bonne idée. D'une part, il n'y a pas d'archive de sécurité pour Sid. D'autre part, les mises à jour de sécurité peuvent être téléchargées directement de debian.org, alors débarrassez vous de la section debian-security. Il est aussi utile d'ajouter l'option -v aux commandes debmirror pour que vous puissiez suivre son avancement. Voici un exemple complet :

#! /bin/sh
# $Id: mkdebmirror,v 1.19 2004/07/08 11:35:44 lange Exp $
# Thomas Lange, lange@informatik.uni-koeln.de, (c) 2001-2004
# crée un miroir debian partiel avec les commandes debmirror(1) and rsync

# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rsync_disks() {
# récupère les disquettes de démarrage
rsync --delete -av $2::debian/dists/$1/main/disks-$arch $destdir/debian/dists/$1/main/
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
update_from() {
# met à jour le miroir local à partir d'un hôte
host=$1
allopt="$debug --passive --getcontents --nosource --arch=$arch --ignore=disks-$arch/"
defopt="$allopt --host=$host --dist=$dist"
echo "------------------ crée un miroir pour debian ------------------"
# utilise l'option -v pour augmenter la verbosité
debmirror -v $destdir/debian $defopt
echo "------------------ crée un miroir pour debian-non-US ------------------"
debmirror -v $destdir/debian-non-US $defopt -r /debian-non-US -s non-US/main,non-US/contrib,non-US/non-free
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# programme principal
#
# vous devez juste ajuster ici le nom de l'hôte du miroir et le nom des distributions

debug="$@"
arch=i386
dist=sid destdir=/files/scratch/debmirror
# d'abord, se synchronise avec un miroir proche de chez vous
update_from ftp.us.debian.org
# récupère les images des disquettes d'installation avec rsync
rsync_disks sid ftp.us.debian.org

Sauvegardez vos modifications et lancez le script mkdebmirror :

# /usr/share/doc/fai/examples/utils/mkdebmirror
------------------ crée un miroir pour debian ------------------
Mirroring to /files/scratch/debmirror/debian from ftp://anonymous:ftp.us.debian.org//debian/
Arches: i386
Dists: sid
Sections: main,contrib,non-free,main/debian-installer
Passive mode on.
Attempting to get lock, this might take 2 minutes before it fails.
Get Release files.
?0% Getting: dists/sid/Release
?0% Getting: dists/sid/Release.gpg
Get Packages and Sources files and other miscellany
. dists/sid/main/binary-i386/Packages.gz needs fetch
?0% Getting: dists/sid/main/binary-i386/Packages.gz
...

rsync a parfois un comportement un peu bizarre ; s'il échoue avec un message d'erreur, essayez de relancer le script plusieurs fois avant de chercher des erreurs.

Configurer le serveur FAI

Le temps du téléchargement des fichiers du miroir peut être mis à profit pour configurer votre serveur. Ouvrez /etc/fai/sources.list et configurez une section pour pointer vers votre serveur FAI local ; les machines clientes l'utiliseront. Voir /usr/share/doc/examples/etc/sources.list pour une aide sur cette partie.

Ensuite, modifiez /etc/fai/fai.conf. Dans cet exemple, le serveur miroir est Windbag, configuré pour utiliser FTP. Vous pouvez choisir FTP, HTTP ou NFS :

installserver=windbag
mirrorhost=$installserver

# Si votre serveur possède plusieurs cartes réseau,
# spécifiez celle à utiliser ici: SERVERINTERFACE=eth0

FAI_DEBMIRROR=$mirrorhost:/files/scratch/debmirror # le script fai-setup créera l'utilisateur "fai"
LOGUSER=fai
FAI_LOGPROTO=ftp
# Nom du serveur de log. S'il n'est pas spécifié, le serveur d'installation sera utilisé
LOGSERVER=windbag
# répertoire avec accès en écriture sur le serveur distant, quand FTP est utilisé
LOGREMOTEDIR="upload"
# mot de passe pour se connecter au serveur de log, quand FTP est utilisé
LOGPASSWD=

# l'espace de configuration sur le serveur d'installation
FAI_CONFIGDIR=/usr/local/share/fai
# emplacement de l'espace de configuration, tel que vu par le client d'installation
# il peut être remplacé par T170 via BOOTP
FAI_LOCATION=$installserver:$FAI_CONFIGDIR
# le répertoire de configuration local sur le client d'installation
FAI=/fai

# le type de système d'exploitation (linux, sunos)
OS_TYPE=`uname -s | tr /A-Z/ /a-z/`

Enfin, modifiez /etc/fai/make-fai-nfsroot.conf. NFS est la méthode la plus rapide pour les installations clientes, le serveur d'installation FAI l'exige et vous aurez toujours la possibilité d'utiliser FTP ou HTTP pour l'installation du client.

NFSROOT_ETC_HOSTS="192.168.1.100 $mirrorhost"
FAI_DEBOOTSTRAP="sid file:/files/scratch/debmirror"

Maintenant, lancez le script fai-setup :

# fai-setup

Ceci va prendre un certain temps puisqu'il faut construire un système de fichiers NFS chrooté, générer des clés SSH et copier beaucoup de fichiers. Lorsque ceci est terminé, votre serveur FAI est fin prêt. Revenez la semaine prochaine pour apprendre à configurer et faire une installation cliente.

Ressources

FAI est fournit avec un excellent manuel, qui est aussi installé dans /usr/share/doc/fai/fai-guide.html. Le répertoire /usr/share/doc/fai/ est rempli d'exemples de scripts et de configuration. L'aide se trouve ici. FAI utilise des utilitaires Linux standard (comme rsync, debmirror, NFS, et ainsi de suite) reliés entre eux par des scripts Perl et Bash, aussi pouvez-vous consulter leurs pages man respectives. Voir Informations pour les propriétaires de miroirs pour plus d'information sur les miroirs.


Lancer les clients

La semaine dernière, la première partie a couvert la configuration basique d'un serveur Debian FAI (Fully Automatic Installation). Aujourd'hui, nous allons configurer les installations clients--paramètres du serveur réseau, quel logiciels nous allons installer et la méthode de démarrage du client. FAI permet de démarrer via le réseau ce qui est rapide et facile lorsque cela fonctionne. FAI permet aussi de démarrer les clients à partir de disquettes de démarrage FAI.

La plupart des cartes réseau et cartes mères modernes permettent le démarrage à partir du réseau. Par exemple, les séries Linksys LNE100TX et LNE100M, les séries D-Link DFE 500, Netgear FA312, Intel PRO/100, la plupart des cartes 3Com et la plupart des cartes réseau IBM permettent le démarrage réseau. Il y a trois étapes pour activer le démarrage réseau. Vous aurez d'abord besoin d'une carte réseau et d'une carte mère qui le supportent.

Ensuite, vous aurez besoin d'activer le démarrage réseau dans le BIOS système et de vous assurer que la carte réseau est le deuxième périphérique de démarrage. Faites du disque dur le premier périphérique de démarrage. Ceci ne vaut que pour les systèmes qui n'ont pas de système d'exploitation installé, il ne pourra pas démarrer du disque dur et il ira donc au périphérique de démarrage suivant. Ensuite, quand vous redémarrerez après l'installation, il démarrera du disque dur. Ii y a des instructions spéciales pour les cartes 3Com et, bien sûr, vérifiez la documentation de votre propre matériel.

La dernière partie consiste à envoyer des informations de démarrage sur le réseau aux PCs clients. Les PCs clients prennent une adresse IP, un noyau et un système de fichiers racine du serveur FAI. Visiblement, on se retrouve dans la situation de l'oeuf et de la poule lorsqu'on se prépare à installer Debian sur des postes clients sans qu'il y ait de système d'exploitation installé. L'astuce consiste a récupérer les adresses MAC des PC clients puis à configurer dhcpd.conf sur le serveur FAI pour attribuer un nom de machine et une adresse IP à chaque adresse MAC.

Si vous voulez installer des PC qui possèdent déjà un système d'exploitation, aucun problème, le serveur FAI écrasera tout. Souvenez-vous simplement de configurer le BIOS pour un démarrage réseau, puis de la changer après l'installation pour un démarrage à partir du disque dur.

Pour configurer FAI pour le démarrage réseau, installez d'abord syslinux si ce n'est pas déjà fait. Puis créez les fichiers de démarrage FAI :

#fai-chboot -IFv workstation1 workstation2 workstation3

Vous devez nommer chaque machine. Puis, créez cette entrée dans /etc/inetd.conf :

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /boot/fai

Utilisation de disquettes de démarrage et configuration de dhcpd.conf

Si vous choisissez des disquettes de démarrage plutôt que le démarrage réseau, utilisez simplement /usr/sbin/make-fai-bootfloppy, qui est livré avec FAI, pour créer les disquettes. Ce petit utilitaire fait tout le travail : il installe GRUB comme chargeur de démarrage, charge un noyau puis utilise DHCP pour récupérer toutes les informations réseau. Quelques fois, il est plus facile d'utiliser des disquettes plutôt que de s'embêter à faire fonctionner le démarrage par le réseau. Vous pouvez utiliser les deux, FAI s'en fiche.

Modifiez le fichier échantillon /usr/share/doc/files/examples/etc/dhcpd.conf pour qu'il ait votre nom de serveur et les adresses IP de votre réseau. Puis, copiez-le dans /etc/dhcp3/dhcpd.conf. Alors, vous aurez besoin de récupérer toutes les adresses IP et d'attribuer à chacun des clients un nom de machine et une adresse IP dans /etc/dhcp3/dhcpd.conf. Je sais, c'est pénible, ennuyeux et pas très amusant. Mais c'est une étape nécessaire.

L'auteur de FAI, Thomas Lange, fournit gracieusement un moyen simple de collecter et trier les adresses MAC avec tcpdump. D'abord, lancez la commande suivante sur le serveur FAI. Vous pouvez appeler le fichier de sortie comme vous le voulez :

# tcpdump -qte broadcast and port bootpc > /tmp/mac.list

Puis, allumez tous les PC clients. Ceux-ci vont envoyer des paquets de broadcast pour essayer de comprendre qui et où ils sont. Ils n'obtiendront pas de réponse parce que dhcpd ne tourne pas encore alors ils auront peut-être un moment de dépression. Mais ce n'est que provisoire, ne vous inquiétez pas. Arrêtez tcpdump avec Ctrl+C puis utilisez la commande suivante pour trier votre résultat de tcpdump :

# perl -ane 'print "\U$F?0\n"' /tmp/mac.list | sort | uniq
0:4:5A:DC:37:F3
0:A:E4:40:8B:FD
00:03:6D:00:83:CF

Maintenant, vous pouvez prendre toutes les adresses MAC clientes et créer des entrées dans /etc/dhcp3/dhcpd.conf en attribuant à chacun un nom de machine et une adresse IP comme ceci :

host workstation1 {
hardware ethernet 0:4:5A:DC:37:F3;
fixed-address 192.168.1.25;
}

host workstation2 {
hardware ethernet 0:A:E4:40:8B:FD;
fixed-address 192.168.1.26;
}

Puis, relancez le serveur DHCP :

# /etc/init.d/dhcp3-server restart

Vous pourrez ensuite obtenir les adresses MAC en démarrant le PC client avec un système de secours comme Knoppix ou tomsrtbt et en lançant /sbin/ifconfig.

Configuration de l'installation cliente

Enfin, il est temps de configurer les paquetages que vous voulez installer et autres options d'installation. Tout ceci repose dans /usr/local/share/fai sur le serveur FAI. Ceci sera monté sur les installations clientes comme /fai. Le moyen le plus rapide, pour ceux qui veulent une installation FAI de test le plus rapidement possible, est de copier les scripts d'exemple dans le répertoire courant :

# cp -a /usr/share/doc/fai/examples/simple/* /usr/local/share/fai/

Pour personnaliser la sélection de paquetages, modifiez /usr/local/share/fai/package_config/DEFAULT. Pour personnaliser le partitionnement du disque, modifiez /usr/local/share/fai/disk_config/SMALL_IDE. /usr/local/share/fai/class/DEFAULT.var contient un certain nombre de variables que vous voudrez sans doute modifier, tel que le fuseau horaire, le mot de passe root par défaut des PC clients et les modules du noyau. Pour commencer l'installation, redémarrez le client PC. Vous pouvez suivre l'installation de tous les clients avec la commande faimond. Tout les clients vérifient si ce service est lancé sur le serveur d'installation et l'informent de leur progrès. Pour beaucoup d'utilisateurs, ceci est suffisant pour créer un serveur FAI utilisable.

Personnaliser FAI peut sembler une tache imposante une fois qu'on a jeté un coup d'oeil sur toutes les options disponibles. D'ailleurs, sa flexibilité est quasi-illimité, restreint seulement par vote capacité a écrire et modifier des scripts. FAI utilise des commandes Linux standards collées ensemble par des scripts shell Bourne et Perl et de la configuration cfengine. L'une des fonctionnalités les plus sympathiques est les classes. Les classes peuvent être utilisés pour définir toutes sortes de types d'installation : serveur, portable, poste bureautique, poste de développement et même plusieurs composants d'installation que vous pouvez mélanger. Créer et gérer des classes mérite un article à part entière; vous pouvez gagner un peu de temps avec la définition de classes.

Comme vous le voyez, la configuration initiale de FAI peut devenir très compliquée. Par contre, rien ne peut surpasser FAI en matière de flexibilité, c'est parfait pour les réseaux mixtes qui contiennent plusieurs type de PC. Et une fois configuré, les installations clientes sont ultra-rapides.

Ressources

FAI est livré avec un excellant manuel installé dans /usr/share/doc/fai/fai-guide.html. Le répertoire /usr/share/doc/fai/ est rempli de scripts et d'exemples de configuration. Le peit guide Wake on LAN

Notes sur le matériel problématique.

Le site web de PXE Linux, tftp-hpa, Syslinux et énormément d'information sur le démarrage réseau par le maître du démarrage de systèmes d'exploitation, H. Peter Anvin.

by Seyman Emmanuel last modified 15-05-07 15:35