VirtualBox est dans son usage le plus courant, un outil de virtualisation sur les postes bureautiques. Néanmoins il a des avantages indéniables pour émuler et paramétrer certaines caractéristiques de machines physiques tel que les bios EFI, des cartes réseaux en mode promiscuous, …

Il peut alors être tentant d’utiliser VirtualBox pour certaine virtualisation de systèmes d’exploitation dans un mode hébergé sur du matériel en datacenter. Mais VirtualBox est un logiciel graphique, il faut donc pouvoir le piloter depuis un terminal et exporter l’affichage des machines virtuelles sur un protocole réseau de prise en main à distance. On parle alors de lancer Virtualbox en mode headless.

Préparatifs et installation de VirtualBox

Tout d’abord nous partons du principe que votre serveur qui va accueillir la virtualisation VirtualBox est installé, cette installation a été testée ici sous Debian 6 Squeeze et Ubuntu 11.10 pour la branche 4.1 de VirtualBox.

Ajout du dépôt officiel VirtualBox

Dans votre fichier /etc/apt/sources.list ou dans un nouveau fichier virtualbox dans /etc/apt/sources.list.d/ :

Pour Ubuntu 11.10 :

deb http://download.virtualbox.org/virtualbox/debian oneiric contrib

Pour Debian 6 :

deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free

Ensuite nous allons télécharger et installer la clef publique du dépôt VirtualBox :

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

L’empreinte de la clef à vérifier est :

7B0F AB3A 13B9 0743 5925  D9C9 5442 2A4B 98AB 5139
Oracle Corporation (VirtualBox archive signing key) 

Installation des composants de VirtualBox

On passe à l’installation des packages et des prérequis pour la suite :

apt-get install virtualbox-4.1 build-essential dkms linux-header-$(uname -r)

Nous avons ajouter le nécessaire pour compiler des programmes grâce au paquet build-essential car nous
allons devoir installer manuellement le pack d’extension de VirtualBox nécessaire pour déporter l’affichage des machines virtuelles en RDP. En effet depuis la branche 4 de VirtualBox, un certain nombre de composants pas forcément utile pour toutes les installations ont été regroupé dans ce pack d’extension.

Il faut se rendre sur la page de téléchargement de VirtualBox pour trouver le lien du pack d’extension.
Pour l’exemple ici nous sommes sur la version 4.1.8, VBoxManage s’occupe de compiler et d’installer le pack d’extension.

cd /usr/src
wget http://download.virtualbox.org/virtualbox/4.1.8/Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.1.8-75467.vbox-extpack

Enfin il faut mettre dans le groupe vboxusers l’utilisateur qui lancera les machines virtuelles au travers de VirtualBox, admettons ici vbox.

adduser vbox vboxusers

Piloter VirtualBox en ligne de commande

La plupart des tâches d’administration de VirtualBox se font grâce à la commande VBoxManage.

Création d’une machine virtuelle

Par défaut VirtualBox va mettre tous le nécessaire des machines virtuelles dans le répertoire /home/vbox/.VirtualBox, libre à vous de faire un lien symbolique de ce dossier vers un répertoire normal.

Pour créer une machine nommée web-1 nous allons lancer les commandes suivantes :

VBoxManage createvm --name "web-1" --register

Votre machine virtuelle est crée, il reste à lui ajouter des composants tels des disques durs, des périphériques.

VBoxManage modifyvm "web-1" --memory 512 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
VBoxManage createhd --filename web-1.vdi --size 50000
VBoxManage storagectl "web-1" --name "IDE Controller" --add ide
VBoxManage storageattach "web-1" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium web-1.vdi
VBoxManage storageattach "web-1" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /data/isos/debian-6.0.3-amd64-netinst.iso

Importer une machine virtuelle existante

Si vous voulez transférer une machine existante sur ce nouveau serveur et pouvoir lancer l’instance, il va falloir déposer le fichier de configuration XML de la machine virtuelle dans le dossier .VirtualBox/Machines/nom-machine de l’utilisateur qui va la lancer. Puis dans le dossier .VirtualBox/VDI l’image disque nom-machine.vdi.

Une fois la copie effectuée, il faut indiquer à VirtualBox de prendre en compte cette nouvelle instance.

VBoxManage registervm Machines/nom-machine/nom-machine.xml

A présent cette machine peut être manipulée comme les autres.

Si vous n’utilisiez pas l’export RDP de l’affichage, il faut changer l’option dans la configuration de la machine importée.

VBoxManage modifyvm "nom-machine" --vrde on

Contrôle des machines virtuelles

Pour démarrer une machine virtuelle avec un export RDP de l’affichage il faut lancer la commande :

VBoxHeadless --startvm "web-1"

Pour arrêter une machine :

VBoxManage controlvm "web-1" poweroff

Pour suspendre et mettre en veille une machine :

VBoxManage controlvm "web-1" pause

Pour redémarrer une machine :

VBoxManage controlvm "web-1" reset

Pour prendre le contrôle de la partie graphique de vos machines virtuelles, il faut lancer une connexion RDP sur le serveur où les machines tournent. Pour la sélection du port RDP soit vous l’activez / désactivez en fonction de vos besoins, soit il faut scripter les paramètres ou les processus pour trouver quel port RDP est attaché à quelle machine virtuelle.