Depuis plusieurs années OVH propose des serveurs dédiés via trois gammes :

  • OVH même, centré sur le haut de gamme et les entreprises prêtes à y mettre le prix.
  • SoYouStart, pour du bon matériel à budget raisonnable.
  • Kimsufi, l’offre low-cost.

Lors de la création d’un serveur dédié, on peut choisir parmi des modèles d’installation modifiables dans une certaine mesure (e.g. schéma de partition ou exécution d’un script post-installation), mais on se retrouve bloqué si besoin de quelque chose de spécial – un autre système d’exploitation, un système de fichiers spécifique, etc.

Modèles d'installation SoYouStart

Une astuce est d’utiliser IPMI, disponible sur la plupart des serveurs OVH et permettant d’installer une image ISO [1][2]. Étant donné que SoYouStart propose essentiellement du matériel OVH à la retraite, certains de leurs serveurs ont également IPMI, et je m’attend à ce qu’il en soit de même pour Kimsufi au fil du temps.

Mais si IPMI n’est pas disponible (ou ne fonctionne pas à cause de ce satané Java) et qu’on ne souhaite pas payer pour un KVM IP, une solution consiste à démarrer une image ISO depuis le mode rescue via QEMU KVM.

Devrait marcher aussi bien chez OVH et SoYouStart que Kimsufi.

Activer le mode rescue

  • Accéder à l’interface web du serveur dédié.
  • Désactiver le monitoring.
  • Basculer en mode rescue depuis le menu Boot / Netboot.
  • Redémarrer le serveur.
  • Une fois démarré, on reçoit un mail avec des identifiants SSH pour se connecter.
# ssh root@XXX.XXX.XXX.XXX
  • Comme on peut le voir, le mode rescue est une image basée sur Debian :
# uname -a
Linux rescue.ovh.net 4.19.84-mod-std-ipv6-64-rescue #1387440 SMP Fri Aug 21 12:01:09 UTC 2020 x86_64 GNU/Linux
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.9 (jessie)
Release:        8.9
Codename:       jessie

Effacer les disques

Une fois connecté au mode rescue, on peut nettoyer les disques avant l’installation. La plupart des programmes d’installation peuvent repartitionner les disques donc ce n’est pas strictement nécessaire, mais on s’assure ainsi de gérer de suite les éventuels problèmes de RAID / montage.

  • Vérifier si le serveur dispose d’un RAID logiciel :
# lsblk
# cat /proc/mdstat
  • Si oui (md0 : active raid1 sda2[0] sdb2[1]), démonter le RAID et l’arrêter :
# umount /dev/md0
# mdadm --stop /dev/md0

En cas d’erreurs umount: /dev/md0: target is busy ou mdadm: Cannot get exclusive access to /dev/md0:Perhaps a running process, mounted filesystem or active volume group?, vérifier les volume groups via vgdisplay et /dev/mapper/, puis les détruire avec dmsetup remove vg-name si nécessaire.

  • Effacer les tables de partition existantes des disques (1M * 10 devrait être suffisant):
# dd if=/dev/zero of=/dev/sda bs=1M count=10
# dd if=/dev/zero of=/dev/sdb bs=1M count=10

Démarrer l’ISO via QEMU KVM

Les disques désormais nettoyés, on peut préparer l’installation proprement dite.

  • Télécharger n’importe quel ISO de son choix. Dans cet exemple, j’utiliserai Proxmox VE:
# wget http://download.proxmox.com/iso/proxmox-ve_7.0-1.iso
# sha256sum proxmox-ve_7.0-1.iso
  • Installer QEMU, KVM, et OVMF (firmware UEFI pour les VMs):
# apt-get update
# apt-get install qemu qemu-kvm ovmf
  • Démarrer l’ISO via qemu-system-x86_64, en ajustant les paramètres suivants comme souhaité (man page) :
    • -enable-kvm: activer la virtualisation KVM
    • -nodefaults: désactiver la création de divers périphériques par défaut (on va les spécifier nous-mêmes)
    • -cdrom /root/proxmox-ve_7.0-1.iso: chemin vers l’image CD-ROM
    • -hdX /dev/sdX: passe-plat des disques matériels
    • -bios /usr/share/ovmf/OVMF.fd: charger le firmware UEFI – par défaut BIOS si non fournie
    • -smp 4 -m 4G: configurer 4 vCPUs et 4 GB de RAM virtuelle
    • -net nic -net user: créer une interface réseau en mode utilisateur (fausse NIC pour la mise en place de la configuration réseau)
    • -vga std: émuler un écran VGA standard
    • -vnc localhost:0: exposer le premier écran VGA (0) via VNC sur localhost
    • -usbdevice tablet: requis pour que la session VNC prenne correctement en charge la souris
    • -k language: utiliser une disposition clavier spécifique (e.g. fr) – par défaut la session VNC utilise en-us si non fournie
# qemu-system-x86_64 \
  -enable-kvm \
  -nodefaults \
  -cdrom /root/proxmox-ve_7.0-1.iso \
  -hda /dev/sda \
  -hdb /dev/sdb \
  -bios /usr/share/ovmf/OVMF.fd \
  -smp 4 -m 4G \
  -net nic -net user \
  -vga std \
  -vnc localhost:0 \
  -usbdevice tablet \
  -k fr

Accéder à QEMU KVM via VNC

Maintenant que QEMU est démarré avec notre image et expose l’affichage via VNC, nous pouvons commencer l’installation.

  • Effectuer un forward du port VNC via SSH depuis la machine locale :
# ssh root@XXX.XXX.XXX.XXX -L 5900:localhost:5900
  • Se connecter à localhost:5900 depuis un client VNC (e.g. TightVNC).

Interface graphique du programme d'installation Proxmox VE depuis TightVNC via QEMU

  • Le programme d’installation devrait s’afficher : procéder comme d’habitude.
  • Lorsque invité à configurer le réseau ou si on configure manuellement le réseau depuis l’invite de commande une fois le programme d’installation terminé, copier la configuration réseau telle que disponible depuis la session SSH du mode rescue :
# ip addr show eth0
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet <SERVER_IP>/24 brd <SERVER_BROADCAST> scope global eth0
# ip route
default via <GATEWAY_IP> dev eth0
# cat /etc/resolv.conf
nameserver 213.186.33.99

En particulier :

  • IP (<SERVER_IP>) : IP du serveur dédié (e.g. 169.254.10.20).
  • Passerelle (<GATEWAY_IP>) : trois premiers octets de l’IP du serveur avec 254 comme dernier octet (e.g. 169.254.10.254).
  • DNS : le DNS OVH par défaut est 213.186.33.99.

Désactiver le mode rescue

Les disques sont maintenant amorcés : on peut stopper QEMU et le mode rescue.

  • shutdown now depuis la session VNC sur QEMU.
  • Accéder à l’interface web du serveur dédié.
  • Basculer sur le disque depuis le menu Boot / Netboot.
  • reboot depuis la session SSH du mode rescue.

Voilà ! À ce stade, soit :

  • Le serveur démarre sans problème et récupère la configuration réseau.
  • Le serveur ne le fait pas, auquel cas on peut toujours :
    • Si disponible, lancer IPMI et enquêter (e.g. corriger la configuration réseau).
    • Revenir en mode rescue et enquêter (e.g. monter les disques et corriger la configuration réseau).
    • Revenir en mode rescue et recommencer.

Ne pas oublier de réactiver le monitoring à partir de l’interface web une fois satisfait 🙂

Article précédent Article suivant