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