On a l'habitude d'utiliser VirtualBox au travers de son interface graphique.
Cependant on peut avoir besoin de mettre en place un serveur de virtualisation (si on est pas trop conformiste et qu'on veut parler de virtualisation pour VirtualBox) avec VirtualBox sur un serveur sans interface graphique. Pour cela VirtualBox arrive avec une option très intéressante : VBoxHeadless.
Nous allons voir dans cet article comment mettre un tel serveur sur une GNU/Debian Lenny.
Installation
Rajoutez la ligne suivante dans votre fichier /etc/apt/sources.list :
# VirtualBox
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
Récupérez la clé GPG :
# wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- |
apt-key add -
Et mettre à jour la liste des paquets :
# apt-get update
Puis on installe la dernière version de VirtualBox :
# apt-get install linux-headers-$(uname -r) build-essential virtualbox-3.1
On ajoute un utilisateur (autre que root) au groupe vboxusers :
# adduser sysadmin vboxusers
Utilisation de VBox en ligne de commande
Les commandes suivantes peuvent être utilisées avec un utilisateur standard appartenant au groupe vboxusers.
On va créer une machine virtuelle avec 1Go de Ram et 20Go de disque dur en utilisant une image iso d'Ubuntu 9.10 serveur :
$ VBoxManage createvm --name "Debian Lenny Server" --register
$ VBoxManage modifyvm "Ubuntu 9.10 server" --memory 1024 --acpi on --boot1 dvd
--nic1 bridged --nictype1 82543GC --cableconnected1 on --bridgeadapter1 eth0
$ VBoxManage createvdi -filename "ubuntu_910_server.vdi" -size 20000 -register
$ VBoxManage storagectl "Ubuntu 9.10 server" --name "IDE Controller" --add ide
$ VBoxManage storageattach "Ubuntu 9.10 server" --storagectl "IDE Controller"
--port 0 --device 0 --type hdd --medium "ubuntu_910_server.vdi"
$ VBoxManage registerimage dvd /home/sysadmin/ubuntu-9.10-server-amd64.iso
$ VBoxManage storageattach "Ubuntu 9.10 server" --storagectl "IDE Controller"
--port 1 --device 0 --type dvddrive --medium /home/sysadmin/ubuntu-9.10-server-amd64.iso
Pour démarrer cette nouvelle vm :
$ VBoxHeadless --startvm "Ubuntu 9.10 server" ... Listening on port 3389.
VirtualBox démarre la machine virtuelle et un serveur VRDP, pour y accéder il faut à partir d'un poste bureautique utiliser un client RDP. Personnellement j'utilise Gnone-RDP qui me permet de garder mes configurations d'accès RDP à toutes mes machines.
Ne pas oublier d'ouvrir le port 3389/tcp si vous avez un firewall.
Il suffit maintenant de suivre la procédure d'installation standard de la distribution choisie.
Pour arrêter la vm
$ VBoxManage controlvm "Ubuntu 9.10 server" poweroff
Pour mettre en pause la vm
$ VBoxManage controlvm "Ubuntu 9.10 server" pause
Pour la reseter une vm
$ VBoxManage controlvm "Ubuntu 9.10 server" reset
Lister les vms
Lister les vms existantes sur le système :
$ VBoxManage list vms
Lister les vms fonctionnant :
$ VBoxManage list runningvms
Désenregistrer une vm
$ VBoxManage unregistervm 0bc5fd29-bd92-4dcc-ad1d-be89f045a9a0
Récupérer une vm existante
Si on veut transférer une vm d'un VirtualBox bureautique à un VirtualBox HeadLess.
En théorie
En théorie, on dois recopier deux choses sur le nouveau serveur :
- l'image du disque : le fichier *.vdi
- le contenu du répertoire Machines/nom_vm
Après tout cela on devrait taper la commande suivante pour ajouter la machine :
$ VBoxManage registervm Machines/examplevm/examplevm.xml
En pratique
En pratique la commande registervm n'a pas fonctionné chez moi. J'ai donc exécuté les commandes suivantes :
On commence par transférer l'image VDI dans le répertoire HardDisks.
Puis on créer la vm :
$ VBoxManage createvm --name "vm" --ostype Linux --register
$ VBoxManage modifyvm "vm" --memory 1024 --acpi on --nic1 bridged --nictype1 82543GC
--cableconnected1 on --bridgeadapter1 eth0
$ VBoxManage storagectl "vm" --name "IDE Controller" --add ide --controller PIIX4
$ VBoxManage storageattach "vm" --storagectl "IDE Controller" --port 0 --device 0
--type hdd --medium "vm.vdi"
$ VBoxHeadless --startvm "vm" &