install-automatique-debian

Installation automatique d’une VM sous Debian 8 dans xencenter

Comment installer une Machine virtuelle sous Debian 8 automatiquement à partir de XENCENTER ?

Régulièrement, je dois installer des machines virtuelles  DEBIAN sur une infrastructure XEN. Et chaque fois, c’est les mêmes questions qui reviennent et je réponds toujours les mêmes choses. Lassé de ce travail répétitif,  je voulais automatiser tout cela.

Mes prérequis c’était de créer une machine virtuel dans Xencenter avec les caractéristiques souhaitées. De faire « booter » celle ci  sur une image ISO présente sur un partage. Et ensuite l’installation doit me demander uniquement une adresse IP, un masque et une gateway   et toutes les autres questions sont remplies automatiquement.

Bien sur, pour que la machine récupère le bon nom, il faudra avoir préalablement créé une entrée DNS et un reverse DNS  correspondant.

 

1 – Créer un fichier de réponses

 

Tout d’abord on crée un fichier nomé preseed.cfg voici le mien:

#choix de la langue d'installation

d-i debian-installer/locale string fr_FR

# choix du clavier (select indique une liste de choix)
d-i keyboard-configuration/xkb-keymap select fr(latin9)
d-i console-keymaps-at/keymap select fr

# choix de l'interface automatique

d-i netcfg/choose_interface select auto
d-i netcfg/disable_autoconfig boolean true

# configuration du hostname

#d-i netcfg/get_hostname string server1

# configuration du domaine

d-i netcfg/get_domain string  daminoux.fr

# configuration du réseau en statique

d-i netcfg/disable_dhcp boolean true

# configuration du serveur de nom

d-i netcfg/get_nameservers string 192.168.1.254

# configuration de l'adresse IP ( pas utilisé dans mon cas )

#d-i netcfg/get_ipaddress string 192.168.0.10

# configuration du masque sous-réseau

#d-i netcfg/get_netmask string 255.255.255.0

# configuration de la gateway

#d-i netcfg/get_gateway string 192.168.0.254

# confirmation de la configuration statique

d-i netcfg/confirm_static boolean true

# désactivation des demande de clé wep

d-i netcfg/wireless_wep string

# type de rpotcole pour accéder aux mirroirs

d-i mirror/protocol string ftp

# choix du mirroir

d-i mirror/ftp/hostname string ftp.fr.debian.org

# choix du répertoire dans le mirroir

d-i mirror/ftp/directory string /debian

d-i mirror/ftp/proxy string

# Type de distribution (stable testing...)

d-i mirror/suite string stable

# configuration du fuseau horaire

d-i clock-setup/utc boolean true

d-i time/zone string Europe/Paris

# serveur ntp

d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.daminoux.fr

d-i partman-auto/method string lvm

# partion boot pour amorcer lvm
d-i partman-auto/disk string /dev/xvda
d-i grub-installer/bootdev  string default

# Si l'un des disques à partitionner automatiquement contient une ancienne
# configuration LVM, l'utilisateur recevra normalement un avertissement.
# Cet avertissement peut être évité :  
d-i partman-lvm/device_remove_lvm boolean true

# De même pour un Raid logiciel existant déjà :
d-i partman-md/device_remove_md boolean true

# Et aussi pour la confirmation concernant la création de partitions lvm :
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true


d-i partman-auto/choose_recipe select atomic

# Si vous avez indiqué la méthode à utiliser, partman créera automatiquement
# les partitions sans demander de confirmation.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

#configuration du compte root

d-i passwd/root-password password motdepasseroot

d-i passwd/root-password-again password motdepasseroot

#configuration d'un autre user

d-i passwd/user-fullname string daminoux

d-i passwd/username string daminoux

d-i passwd/user-password password motdepassedaminoux

d-i passwd/user-password-again password motdepassedaminoux

# ajout de non-free et contrib dans /etc/apt/sources.list

d-i apt-setup/non-free boolean true

d-i apt-setup/contrib boolean true

# Sélection d'une install standard, sans desktop

tasksel tasksel/first multiselect standard, ssh-server

# ajout des packages supplémentaires

d-i pkgsel/include string vim ntp snmpd fusioninventory-agent

# Valeurs autorisées : none, safe-upgrade, full-upgrade
d-i pkgsel/upgrade select full-upgrade

# installation de grub

d-i grub-installer/only_debian boolean true

d-i grub-installer/with_other_os boolean true

d-i finish-install/reboot_in_progress note

# extinction de la machine après installation

d-i debian-installer/exit/poweroff boolean true

# script post install 
d-i preseed/late_command string \
 in-target wget http://www.daminoux.fr/debian-post-install.sh; \
 in-target chmod +x debian-post-install.sh; \
in-target /bin/sh debian-post-install.sh; \
in-target rm -f debian-post-install.sh

Pour l’adapter il ne vous restera plus qu’à changer:

  • le nom de domaine
  • l’adresse ip du serveur DNS
  • le fqdn du serveur ntp
  • le mot de passe root et l’utilisateur supplémentaire et son mot de passe
  • les packages supplémentaires

 

Vous aurez pu remarquer qu’à la fin je télécharge un script debian-post-install.sh. C’est un petit script qui fini de configurer la machine virtuel. Vous pouvez trouver le détail ici

2- Générer une image ISO avec le fichier preseed.cfg

Avant il faut télécharger une Image debian netinstall

1 – je crée un répertoire pour monter notre image ISO original

mkdir /mnt/ISO

2 – je crée un répertoire où je copierai l’image ISO

sudo mkdir /mnt/DEBIAN

3 – Je monte l’image ISO sous le répertoire /mnt/ISO

sudo mount -O loop  debian-8.6.0-amd64-netinst.iso /mnt/ISO/

4 – Je copie tout le contenu de l’image dans le répertoire /mnt/DEBIAN

sudo cp -a /mnt/ISO/.* /mnt/DEBIAN/

Bien vérifier que le répertoire /mnt/DEBIAN/.disk est bien présent !

5 – je copie le fichier preseed.cfg à la racine du futur ISO

sudo cp ./preseed.cfg /mnt/DEBIAN/

6 – Je modifie les paramètres de boot par défaut en éditant le fichier

sudo vi /mnt/DEBIAN/isolinux/txt.cfg

et je remplace

append  vga=788 initrd=/install.amd/initrd.gz --- quiet

par

append  vga=788 initrd=/install.amd/initrd.gz --- quiet preseed/file=/cdrom/preseed.cfg auto=true priority=critical lang=fr locale=en_US.UTF-8 console-keymaps-at/keymap=fr-latin9

 

7 – Je génère une nouvelle image ISO

sudo genisoimage -r -J -o debian-8.6.0-amd64-netinst_daminoux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /mnt/DEBIAN

 

Ensuite il ne reste plus qu’a remettre l’ISO sur le partage et créé une VM dans xencenter et faire booter notre VM sur notre ISO.

 

Ressources:

http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMFHS-045/Une-installation-de-Debian-automatique

https://wiki.deimos.fr/Automatiser_une_installation_de_Debian

https://www.debian.org/releases/stable/amd64/apbs04.html.en

Laisser un commentaire