Automatiser une installation de Debian

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Debian

Software version
Operating System 7.0
Website Debian Website
Last Update 07/05/2013
Others

1 Introduction

Il n'est pas toujours facile de faire 10 serveurs à l'identique. C'est pourquoi cette section va aider à avoir une installation propre et maitrisée.

2 preseed.cfg

Vous devez d'abord créer le fichier de préconfiguration et le placer là où vous le voulez. Voici le preseed que j'utilise pour Debian Wheezy (regarez sur mon Git pour la version la plus récente) :

Configuration File preseed.cfg
# Preseed file for Debian
# Made by Pierre Mavro / Deimosfr
 
# To create a temporary web server to quickly serve this preseed file,# simply type one of this command in the same folder than preseed :# while true; do nc -l -p 8000 -q 1 < preseed.cfg ; done# python -m SimpleHTTPServer 
# For more informations :
# http://wiki.deimos.fr/Automatiser_une_installation_de_Debian
 
### Contents of the preconfiguration file (for wheezy)
d-i debian-installer/language string en
d-i debian-installer/country string FR
d-i debian-installer/locale string en_US.UTF-8
 
### Keyboard
d-i console-keymaps-at/keymap select fr
d-i keyboard-configuration/xkb-keymap select fr
d-i console-keymaps-at/keymap select fr
d-i keymap select fr(latin9)
 
### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/wireless_wep string
 
### Apt mirror
d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.fr.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i mirror/suite string wheezy
 
### Account setup
d-i passwd/root-login boolean false
d-i passwd/make-user boolean true
d-i passwd/root-password password soleild-i passwd/root-password-again password soleild-i passwd/user-fullname string Deimosd-i passwd/username string deimosd-i passwd/user-password password soleild-i passwd/user-password-again password soleil 
### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
d-i clock-setup/ntp boolean true
 
### Partitioning
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/new_vg_name string vgos
# Partition will be :
# /boot : ~128M ext4
# / : [1-∞]G LVM ext4
# /var : [768-2048]M LVM ext4
# swap : [RAM*150%-2048]M LVM
d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
              128 3000 128 ext4                               \
                      $primary{ }                             \
                      $bootable{ }                            \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /boot }                     \
                      options/noatime{ noatime }              \
              .                                               \
              1024 4000 -1 ext4                               \
                      $lvmok{ }                               \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
                      options/noatime{ noatime }              \
                      lv_name{ root }                         \
              .                                               \
              768 1000 2048 ext4                              \
                      $lvmok{ }                               \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /var }                      \
                      options/noatime{ noatime }              \
                      lv_name{ var }                          \
              .                                               \
              100% 1000 150% linux-swap                       \
                      $lvmok{ }                               \
                      method{ swap } format{ }                \
                      lv_name{ swap }                         \
              .
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
d-i partman-md/confirm boolean true
d-i partman/mount_style select uuid
 
### Base system installation
d-i base-installer/install-recommends boolean false
 
### Apt setup
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/use_mirror boolean true
d-i apt-setup/services-select multiselect security, volatile
d-i apt-setup/security_host string security.debian.org
d-i apt-setup/volatile_host string volatile.debian.org
 
### Package selection
tasksel tasksel/first multiselect standard
d-i pkgsel/upgrade select safe-upgrade
popularity-contest popularity-contest/participate boolean true
d-i pkgsel/include string openssh-server
 
### Grub
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
 
# Finish install
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true

J'ai surligné une petite astuce pour monter rapidement un serveur web temporaire pour pouvoir balancer le preseed sans avoir à refaire une image ISO. J'ai également surligné la partie login et mot de passe (soleil) qui est donc à changer :-)

3 Charger le fichier de préconfiguration

Pour ce qui est du chargement de ce fichier, vous pouvez choisir ce que vous souhaitez (fichier, http...) lors de l'amorçage de l'installation (grub) :

Command
# Version serveur Web
preseed/url=http://host/path/to/preseed.cfg
# Version CD
preseed/file=/cdrom/preseed.cfg
# Version clef USB
preseed/file=/hd-media/preseed.cfg

Vous pouvez également éditez le fichier txt.cfg sur un cdrom afin de lui indiquer l'emplacement du fichier :

Configuration File isolinux/txt.cfg
default install
label install
    menu label ^Install
    menu default
    kernel /install.amd/vmlinuz
    append preseed/file=/cdrom/preseed.cfg auto=true priority=critical lang=fr locale=en_US.UTF-8 console-keymaps-at/keymap=fr-latin9 vga=788 initrd=/install.amd/initrd.gz -- quiet

4 Utiliser un serveur DHCP pour indiquer les fichiers de préconfiguration

l est aussi possible d'utiliser DHCP pour spécifier un fichier à télécharger sur le réseau. DHCP permet d'indiquer un nom de fichier. Normalement ce fichier sert à un amorçage sur le réseau. S'il s'agit d'une URL, le système d'installation qui permet une préconfiguration de type network téléchargera le fichier et l'utilisera comme fichier de préconfiguration. Voici un exemple montrant comment configurer le fichier dhcpd.conf appartenant à la version 3 du serveur ISC DHCP (paquet debian dhcp3-server).

Configuration File /etc/dhcp/dhcpd3.cfg
if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Remarquez que l'exemple précédent n'autorise le fichier qu'aux clients DHCP qui s'identifient comme « d-i ». Les autres clients DHCP ne sont pas affectés. Vous pouvez aussi mettre le texte dans un paragraphe à destination d'un seul hôte pour ne pas préconfigurer toutes les installations faites dans votre réseau.

Une bonne façon d'utiliser cette technique est de ne préconfigurer que les valeurs liées à votre réseau, par exemple le nom de votre miroir Debian. De cette manière les installations utilisent automatiquement le bon miroir et la suite de l'installation peut se faire interactivement. Il faut être très prudent si l'on veut automatiser toute l'installation avec une préconfiguration de type DHCP.

5 Ressources

http://www.debian.org/releases/stable/s390/apbs02.html.fr
http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/une-installation-de-debian-automatique-2