Pavnay

 
  • Increase font size
  • Default font size
  • Decrease font size
FrançaisEnglish

[PXE] Installation par réseau

Imprimer

Système

 

L'installation par PXE peut sembler un peu gadget mais nous utilisons cette technique pour l'installation massive de machine.

En effet, dans le cadre d'un PRA (Plan de Reprise d'Activité), il faut installer plusieurs dizaines de serveurs et l'installation de chaque machine est couteuse en temps.

L'installation par PXE permet de procéder à une installation sans CD ou DVD d'installation, seulement en ayant l'option PXE d'activé dans le bios. 

Le principe : au boot du serveur, la machine requête un serveur DHCP qui lui attribue une adresse IP, passe le relais à un serveur TFTP qui distribue un mini noyau linux qui se charge de lancer l'installation.

En plus du PXE, il est possible d'ajouter un mécanisme d'installation automatique. Ici nous avons choisit Kickstart car il est simple à mettre en place et le fichier de configuration est facilement lisible. Il existe d'autre mécanisme comme FAI (Fully Automated Installation) mais qu semble plus compliqués...

Pour information, une installation de 2 serveurs avec MySQL et DRBD complètement configurés prends en tout et pour tout 20 minutes... Le plus long, qui n'est pas prévu dans l'installation, c'est l'injection de données dans la base !!!

  1. Logiciels
  2. Création du miroir
  3. Configurationdu serveur DHCP
  4. Installation et configuration du serveur TFTP
  5. Configuration d'Apache HTTPD
  6. Configuration du serveur DNS (optionnel si Kickstart)
  7. Kickstart
  8. Astuces

 

Logiciels:

  • apt-mirror : Utilitaire pour créer et maintenir un mirroir de package
  • Serveur DHCP : Pour l'attribution d'une adresse IP (bien sûr) mais aussi pour fournir le serveur PXE
  • Serveur TFTP : Serveur FTP pour initier un menu d'installation et pour fournir un système linux minimaliste
  • Apache HTTPD : Serveur pour fournir les packages nécessaires aux installations
  • Serveur DNS ( optionnel avec Kickstart ) : Serveur pour faire maintenir les miroirs au sein du réseau
  • Kickstart Configurator : Utilitaire pour des installations automatisées

Création du miroir :

Créer l'arborescence suivante :

/mirroir/mirror
            	/skel
            	/var 


Installer le package apt-mirror
Créer et éditer le fichier /mirroir/apt-mirror-configuration

exemple :
############# config ##################

#
set base_path /mirroir
#
# if you change the base path you must create the directories below with write privileges
#
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh
## set defaultarch xxxx (votre architecture i386/hppa/powerPC/ia64...)
set defaultarch i386
set nthreads     2
set tilde 0
#

#
# Miroir Hardy Installer
#
deb http://archive.ubuntu.com/ubuntu hardy main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer
deb http://archive.ubuntu.com/ubuntu hardy-updates main/debian-installer restricted/debian-installer universe/debian-installer
deb http://archive.ubuntu.com/ubuntu hardy-backports    main/debian-installer
deb http://archive.ubuntu.com/ubuntu hardy-security main/debian-installer restricted/debian-installer universe/debian-installer
deb http://archive.ubuntu.com/ubuntu hardy-proposed main/debian-installer restricted/debian-installer universe/debian-installer

deb-amd64 http://archive.ubuntu.com/ubuntu hardy-updates main/debian-installer restricted/debian-installer universe/debian-installer
deb-amd64 http://archive.ubuntu.com/ubuntu hardy-backports    main/debian-installer
deb-amd64 http://archive.ubuntu.com/ubuntu hardy-security main/debian-installer restricted/debian-installer universe/debian-installer
deb-amd64 http://archive.ubuntu.com/ubuntu hardy-proposed main/debian-installer restricted/debian-installer universe/debian-installer

############# end config ##############
deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy-security main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-updates universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-security universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
 
deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy-security main restricted
deb-src http://archive.ubuntu.com/ubuntu/ hardy universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-security universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy-security main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy-updates universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy-security universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse<u>


ATTENTION :

la ligne set base_path positionne le répertoire du miroir et set defaultarch positionne l'architecture par défaut.
Si set defaultarch vaut i386, les deb doivent être deb et deb-amd64.
set defaultarch vaut amd64, les deb doivent être deb et deb-i386.


Exécuter : 

		apt-mirror /mirroir/apt-mirror-configuration 

Et ... attendre ...

Configuration du serveur DHCP :

  • Serveur sous Windows

Activer les options de zone 066 (avec l'adresse IP du serveur TFTP ) et 067 ( avec le fichier pxelinux.0 ).

Désactiver l'option 060 ( PXEClient )

  • Serveur sous Linux :
Configurer la zone DHCP avec l'option next-server pointant sur le serveur TFTP et l'option filename avec pxelinux.0 comme valeur.

exemple :


subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.90 192.168.1.100;
        option domain-name-servers 192.168.1.11;
        option domain-name "pavnay.local";
        next-server 192.168.1.11;
        filename "pxelinux.0";
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.11;
        default-lease-time 600;
        max-lease-time 7200;

} 


Installation et configuration du serveur TFTP :

Installer le package tftpd-hpa.
Editer le fichier /etc/default/tftpd-hpa et le changer comme suit :


#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /tftpboot/linux-install" 


Créer l'arborescene /tftpboot/linux-install/pxelinux.cfg
Créer le fichier /tftpboot/linux-install/boot.txt et l'éditer

exemple :


 Boot Menu -
=============

1. etch_i386_install
2. Ubuntu Gutsy 
3. Ubuntu Hardy 
4. Ubuntu Hardy Kickstart
5. Ubuntu Hardy server Kickstart


Créer et éditer le fichier /tftpboot/linux-install/pxelinux.cfg/default

exemple :


DISPLAY boot.txt
 
 DEFAULT 1
 
 LABEL 1
         kernel debian/etch/i386/linux
         append vga=normal initrd=debian/etch/i386/initrd.gz
 LABEL 2
         kernel ubuntu/gutsy/linux
         append vga=normal initrd=ubuntu/gutsy/initrd.gz
 
 LABEL 3
         kernel ubuntu/hardy/ubuntu-installer/i386/linux
         append priority=low vga=normal initrd=ubuntu/hardy/ubuntu-installer/i386/initrd.gz
 
 LABEL 4
         kernel ubuntu/hardy/ubuntu-installer/i386/linux
         append priority=low vga=normal initrd=ubuntu/hardy/ubuntu-installer/i386/initrd.gz ks=http://192.168.1.11/ks.cfg
 
 LABEL 5
         kernel ubuntu/hardy/ubuntu-installer/i386/linux
 append base-installer/kernel/linux/extra-packages-2.6= pkgsel/install-pattern=~t^ubuntu-standard$ pkgsel/language-pack-patterns= pkgsel/install-language-support=false priority=low vga=normal initrd=ubuntu/hardy/ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw ks=http://192.168.1.11/ks.cfg --
 
 PROMPT 1
 TIMEOUT 0


ATTENTION : Les noyaux sont à mettre dans la bonne arborescence ( debian/etch/i386/linux est en fait /tftpboot/linux-install/debian/etch/i386/linux )
ATTENTION BIS : Les différents noyaux (linux et initrd.gz ) sont récupérables via les netboot ( par exemple http://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/ pour Hardy et http://debian.mirror.inra.fr/debian/dists/etch/main/installer-amd64/20070308etch2/images/netboot/ pour Etch, bien faire attention aux architectures i386 et amd64 )
ATTENTION TER :
Pour les installations par Kickstart, mettre la bonne adresse IP / URL vers le fichier kc.cfg

Installer le package syslinux
Copier /usr/lib/syslinux/pxelinux.0 vers /tftpboot/linux-install/pxelinux.0

exemple de l'arborescence :


ll -R /tftpboot
/tftpboot
            	/linux-install
                               boot.txt
                               pxelinux.0
                               /debian
                                           /etch
                                                    /i386
                                                            initrd.gz
                                                           						linux                                
                               /pxelinux.cfg
                                                  default

                             			/ubuntu
                                           /gutsy
                                                   					initrd.gz
                                                    linux
                                           /hardy
                                                     /ubuntu-installer
                                                                              /i386
                                                                                     								initrd.gz
                                                                                      linux 


Lancer le serveur tftpd-hpa : /etc/init.d/tftpd-hpa restart

Configuration d'Apache HTTPD :


Pour une installation sans Kickstart et en mirroir total, créer le VirtualHost suivant :


<VirtualHost *:80>
        ServerAdmin webmaster@ubuntu.com
        ServerName archive.ubuntu.com
        ServerAlias *.archive.ubuntu.com

        <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
                RewriteRule .* - [F]
        </IfModule>

        DocumentRoot /mirroir/mirror/archive.ubuntu.com
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /mirroir/mirror/archive.ubuntu.com>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost> 


Pour une installation avec Kickstart, ajouter ce qui suit à la configuration générale :

Alias /ubuntu /mirroir/mirror/archive.ubuntu.com/ubuntu
  <Directory "/mirroir/mirror/archive.ubuntu.com/ubuntu">
        Options Indexes
        AllowOverride None
        Order allow,deny
        Allow from all
  </Directory>


Configuration du serveur DNS ( optionnel si Kickstart ) :


Créer et éditer le fichier /etc/bind/db.ubuntu.com

ubuntu.com. IN SOA Toshiba.ubuntu.local. root.localhost. (
    20080726; Serial
    10800; refresh after 3 hours.
    3600; Retry after 1 hour.
    604800; expire after 1 week.
    86400; Minimum TTL of 1 day.
)

;
; Name servers declaration.
;

ubuntu.com.     IN NS     Toshiba.ubuntu.local.;

;
; Hostnames declaration.
;
Toshiba.ubuntu.com.       IN A  192.168.1.11;
security.ubuntu.com.    IN CNAME Toshiba;
archive.ubuntu.com.     IN CNAME Toshiba;
fr.archive.ubuntu.com.  IN CNAME Toshiba;


Editer le fichier /etc/bind/named.conf.local

zone "ubuntu.com" in {
        type master;
        file "/etc/bind/db.ubuntu.com";
}; 


Au fichier /etc/bind/named.conf.option

forwarders { 208.67.222.222; 208.67.220.220; 212.27.54.252; 212.27.53.252; };
forward first;


Redémarrer bind9.


Kickstart :


Utiliser Kickstart Configurator (sous Ubuntu) pour générer les fichiers ks.cfg.
Voici un extrait d'une installation par Kickstart.

L'installation Kickstart est décrit par un fichier de configuration où chaque ligne décrit une étape de l'installation.

Ici, nous commençons par définir les paramêtres systèmes tels que la langue, la prise en charge des périphériques de saisis et la zone horaire.

#System language
lang fr_FR 
#Language modules to install
langsupport fr_FR 
#System keyboard 
keyboard fr 
#System mouse 
mouse 
#System timezone 
timezone Europe/Paris 

Définition des utilisateurs :

#Root password
rootpw --iscrypted $1$X9qBwlnO$ZfZLp/KohRVYViaS4KgYG0
#Initial user 
user pavnay --fullname "pavnay" --iscrypted --password $1$inm.tMDr$8sloyukGUU45uRQZtngmo0 


NOTE : Il est possible de ne pas spécifié de mot de passe pour l'utilisateur root  en mettant à la place du mot de passe --disabled.
NOTE 2 :
Il est possible de ne pas encrypter les mots de passe en supprimant l'option --iscrypted et en mettant les mots de passe en clair

Suit la configuration de l'installation elle-même :

#Reboot after installation
reboot 
#Use text mode install 
text
#Use interactive kickstart installation method 
interactive 
#Install OS instead of upgrade 
install 
#Use Web installation 
url --url <a href="http://pxe.viadeo.local/ubuntu" target="_blank">http://pxe.pavnay.local/ubuntu</a> 
#System bootloader configuration 
bootloader --location=mbr

 

Définition des partitions (ici, on choisit de faire le partitionnement en automatique mais il est aussi possible de le laisser en manuel en ne spécifiant rien).

Ici, nous créons une partition système / de 5Go, une partition de swap de 200Mo et le reste du disque (grâce à l'option --grow) sera la partition /data, le tout avec un système de fichier ext3 (hormis le swap bien sûr).

#Clear the Master Boot Record
zerombr 
#Partition clearing information 
clearpart --all --initlabel 

#Disk partitioning information 
part / --fstype ext3 --size 5024 
part swap --size 204 
part /data --fstype ext3 --size 1 --grow  

 

Configuration du système d'authentification, du réseau et enfin, on supprime l'interface graphique avec skipx. Si vous voulez installer une interface graphique, il faut utiliser non pas skipx mais par exemple : xconfig --depth=8 --resolution=1024x768 --defaultdesktop=GNOME --startxonboot.

#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information 
network --bootproto=dhcp --device=eth0 
#Firewall configuration 
firewall --disabled 
#Do not configure the X Window System 
skipx

 

En suite viens l'installation des packages personnalisés? Il suffit de mettre le nom du package après le tag %package...

#Package install information
%packages 
openssh-server 
ntpdate 
snmpd 
g++ 
make 
vim 
zlib1g-dev 

 

Et enfin, voici la partie personnalisable : le tag %post (pour post installation) (il existe aussi la balise %pre pour pré-installation).

Cette balise permet de mettre un script bash qui sera exécuté à la fin de l'installation. Ci après, une installation d'un serveur web avec Apache + Tomcat + Java :

%post

# Récupération des archives des logiciels à installer
cd /usr/local/src 
wget http://pxe.pavnay.local/packages/common/current/apache.tar.gz 
wget http://pxe.pavnay.local/packages/common/current/tomcat-web.tar.gz 
wget http://pxe.pavnay.local/packages/i386/current/jrockit.tar.gz 
wget http://pxe.pavnay.local/packages/common/current/tomcat-connector.tar.gz 
wget http://pxe.pavnay.local/packages/config/current/webserver_conf.tar.gz 

# Installation de la JVM
cp jrockit.tar.gz /usr/local 
cd /usr/local 
tar xvzf jrockit.tar.gz 
version=$(ls -d jrockit-*) 
ln -s $version java 
echo "export JAVA_HOME=/usr/local/java" >> /etc/profile 
echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile 

# Installation de tomcat
cp /usr/local/src/tomcat-web.tar.gz /usr/local/. 
tar xvzf tomcat-web.tar.gz 
version=$(ls -d jakarta-tomcat*) 
ln -s $version tomcat 

# Installation d'Apache
cp /usr/local/src/apache.tar.gz /tmp/. cd /tmp 
tar xvzf apache.tar.gz 
version=$(ls -d httpd-*) 
cd $version 
./configure --prefix=/usr/local/$version --disable-cgi --disable-cgid --disable-imagemap --disable-userdir --enable-rewrite --enable-headers --enable-deflate --with-mpm=prefork 
make 
make install 
ln -s /usr/local/$version /usr/local/apache2 

# Installation du connecteur Apache / Tomcat
cp /usr/local/src/tomcat-connector.tar.gz /tmp/. 
cd /tmp 
tar xvzf tomcat-connector.tar.gz 
version=$(ls -d tomcat-connectors-*) 
cd $version/native 
./configure --with-apxs=/usr/local/apache2/bin/apxs 
make 
make install 

# Installation des scripts de configuration de la machine qui s'exécuteront au premier démarrage de la machine (Adressage IP, etc...)
cd /usr/local/src 
wget http://pxe.pavnay.local/packages/config/current/core_conf.tar.gz  
for conf in *_conf.tar.gz 
do 	tar xfvz $conf done  

echo "alias ll='ls -alh --color=auto'" >> /etc/profile 
echo "chmod +x /usr/local/src/firststart.sh" >> /root/.bashrc 
echo "/usr/local/src/firststart.sh" >> /root/.bashrc  
echo "search pavnay.local" > /etc/resolv.conf 
echo "nameserver 192.168.1.5" >> /etc/resolv.conf 

 

Et voilà...

Il ne reste plus qu'à démarrer la machine en PXE ( touche F12 ).

Astuces

  • Personalisation du menu de boot
Cette installation permet d'avoir à l'écran de boot un menu dans lequel il faut saisir un numéro correspondant à l'option voulue (l'affichage se fait grâce au fichier /tftpboot/install-linux/boot.txt et la gestion du menu grâce au fichier /tftpboot/linux-install/pxelinux.cfg/default).Il est possible d'avoir un menu plus agréable où la sélection se fait par les touches flèches 'haut" et "bas". Pour y parvenir, il suffit de mettre le fichier menu.c32 (disponible dans l'archive de syslinux et rendu exécutable) dans le répertoire /tftpboot/install-linux/  et de modifier le fichier default. Les modifications sont simples, il suffit de remplacer l'entête du fichier par :

DEFAULT menu.c32 
PROMPT 0 
TIMEOUT 0  
F1 netinstall.txt  
MENU TITLE Installation PXE 


Avec syslinux, il est possible de faire des personnalisations assez poussées du menu (changer les couleurs, ajouter une images en fond d'écran, etc...).

Attention toute fois !!! Syslinux peut désactiver les claviers USB brancher sur la machine. Ainsi, revenir au menu décrit plus haut est une solution portable pour toutes les machines...


  • Partitionnement automatique
Le partitionnement automatique peut ne pas fonctionner.
En effet, suivant les controleurs RAID, les disques durs peuvent ne pas être reconnus. Nous avons été confronté à ce problème avec des lames DELL M600.
Une solution est d'utiliser le module megaraid mais nous n'avons pas été en mesure de le faire fonctionner...
Pour utiliser le megaraid, il suffit d'ajouter au fichier Kickstart avant le partitionnement, la ligne suivante :

device scsi megaraid 


Commentaires
Ajouter un nouveau
+/-
Ecrire un commentaire
Nom:
Email:
 
Titre:
 
:D:):(:0:shock::confused:8):lol::x:P:oops::cry:
:evil::twisted::roll::wink::!::?::idea::arrow:
 

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Actualités

Peinture sur figurine