Magazine High tech

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Publié le 21 avril 2013 par Cr@zy @crazyws

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Ça faisait un moment que je n'avais pas fait de tuto alors je reviens ici avec un pour vous expliquer comment procéder à une virtualisation ou plutôt exécuter des machines virtuelles avec VirtualBox 4.2 sur un serveur Debian Squeeze. Normalement vous utilisez l'interface graphique VirtualBox pour gérer vos machines virtuelles mais un serveur ne dispose pas forcément d'un environnement desktop. Heureusement, VirtualBox est livré avec un outil appelé VBoxHeadless qui permet de vous connecter aux machines virtuelles via une connexion de bureau à distance sans avoir besoin de l'interface VirtualBox.

Dans ce tuto j'utilise une VM basée sur Windows Server 2012 Standard mais vous pouvez utiliser n'importe quel autre système accepté par VirtualBox.

Voici les chapitres de ce tuto :

  • Préparation de l'environnement
  • Installation de VirtualBox sur votre serveur Debian Squeeze
  • Installation du pack d'extension VirtualBox
  • Importer une VM
  • Se connecter à distance à une VM
  • Gérer ses VMs via le navigateur avec phpVirtualBox
Préparation de l'environnement

Avant d'installer VirtualBox sur votre serveur, il va falloir créer un utilisateur spécifique au contrôle de virtualbox que l'on appellera vbox :

root@server:~# groupadd vbox
root@server:~# useradd -d /home/vbox -m -g vbox -s /bin/bash vbox

Si vous souhaitez mettre vos VMs sur un autre disque vous pouvez changer le chemin du home ou bien créer un lien symbolique.
Créez un mot de passe pour cette utilisateur :

root@server:~# passwd vbox
Installation de VirtualBox sur votre serveur Debian Squeeze

Pour installer VirtualBox sur votre serveur Debian Squeeze, vous devez avoir les privilèges root.
Commençons par ajouter le repository à notre configuration aptitude :

root@server:~# cd /tmp/
root@server:~# vi /etc/apt/sources.list

Et ajoutez ceci à la fin du fichier sources.list :

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

Téléchargeons et ajoutons la clé publique :

root@server:~# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | apt-key add -

Ensuite mettons à jour la base de données des packages et notre système :

root@server:~# apt-get update
root@server:~# apt-get upgrade

Recherchons les versions disponibles de VirtualBox...

root@server:~# aptitude search virtualbox
v   virtualbox                      -
p   virtualbox-3.2                  - Oracle VM VirtualBox
p   virtualbox-4.0                  - Oracle VM VirtualBox
p   virtualbox-4.1                  - Oracle VM VirtualBox
i   virtualbox-4.2                  - Oracle VM VirtualBox
p   virtualbox-ose                  - x86 virtualization solution - base binarie
p   virtualbox-ose-dbg              - Solution de virtualisation x86 - symboles
p   virtualbox-ose-dkms             - x86 virtualization solution - kernel modul
p   virtualbox-ose-fuse             - x86 virtualization solution - virtual file
p   virtualbox-ose-guest-dkms       - x86 virtualization solution - guest additi
p   virtualbox-ose-guest-source     - x86 virtualization solution - guest additi
p   virtualbox-ose-guest-utils      - x86 virtualization solution - non-X11 gues
p   virtualbox-ose-guest-x11        - x86 virtualization solution - X11 guest ut
p   virtualbox-ose-qt               - x86 virtualization solution - Qt based use
p   virtualbox-ose-source           - Solution de virtualisation x86 - source du

...et lançons l'installation en téléchargeant virtualbox-4.2 ainsi que les headers de votre kernel (chez moi 2.6.32-5-amd64). DKMS assurera que les modules du noyau hôte de VirtualBox seront correctement mis à jour si une nouvelle version du noyau est installée :

root@server:~# apt-get install linux-headers-$(uname -r) build-essential virtualbox-4.0 dkms
Installation du pack d'extension VirtualBox

Depuis la version 4.x, VirtualBox a mis en place un pack d'extensions et a externalisé certaines fonctionnalités comme l'accès au bureau à distance (VRDP) qui faisait auparavant parti de VirtualBox. Nous aurons donc ici besoin de ce pack d'extension pour accéder à distance à nos VMs.
Pour cela rendez-vous sur la page de téléchargement de VirtualBox et téléchargez la dernière version du VirtualBox Extension Pack pour la version 4.2 de VirtualBox :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

root@server:~# cd /tmp/
root@server:~# wget http://download.virtualbox.org/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack
root@server:~# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

Ajoutons notre utilisateur créé en début de tuto au groupe vboxusers créé lors de l'installation de VirtualBox :

root@server:~# adduser vbox vboxusers

Maintenant vous pouvez utiliser VirtualBox sur votre serveur avec en ligne de commande avec VBoxHeadless et VBoxManage.

Importer une VM

Avant d'importer une VM avec VBoxManage, il va falloir convertir celle-ci au format OVF (Open Virtualization Format).
La majorité des logiciels de virtualisation comme VMware Workstation et VirtualBox sont capables d'exporter vers ce type de format. Je vais prendre ici pour exemple VirtualBox.

Ouvrez VirtualBox sur votre machine et cliquez sur Fichier > Exporter une application virtuelle... :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Choisissez la VM à exporter :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Sélectionnez le format OVF lors de l'export et générez le fichier manifest :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Cliquez sur Suivant puis Exporter et attendez la fin du processus :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Vous aurez trois fichiers de créés :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Copiez-les sur votre serveur Debian Squeeze et entrez cette commande pour importer la VM avec l'utilisateur vbox :

vbox@server:~# VBoxManage import /tmp/w2k12.ovf

Ceci devrait apparaître dans la console :

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting /tmp/w2k12.ovf...
OK.
Disks:  vmdisk1 26843545600     -1      http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized       w2k12-disk1.vmdk        -1      -1
Virtual system 0:
 0: Suggested OS type: "Windows2012_64"
    (change with "--vsys 0 --ostype "; use "list ostypes" to list all possible values)
 1: Suggested VM name "W2k12"
    (change with "--vsys 0 --vmname ")
 2: Number of CPUs: 1
    (change with "--vsys 0 --cpus ")
 3: Guest memory: 2048 MB
    (change with "--vsys 0 --memory ")
 4: Sound card (appliance expects "", can change on import)
    (disable with "--vsys 0 --unit 4 --ignore")
 5: USB controller
    (disable with "--vsys 0 --unit 5 --ignore")
 6: Network adapter: orig Bridged, config 3, extra slot=0;type=Bridged
 7: CD-ROM
    (disable with "--vsys 0 --unit 7 --ignore")
 8: IDE controller, type PIIX4
    (disable with "--vsys 0 --unit 8 --ignore")
 9: IDE controller, type PIIX4
    (disable with "--vsys 0 --unit 9 --ignore")
10: SATA controller, type AHCI
    (disable with "--vsys 0 --unit 10 --ignore")
11: Hard disk image: source image=w2k12-disk1.vmdk, target path=/home/vbox/VirtualBox VMs/W2k12/w2k12-disk1.vmdk, controller=10;channel=0
    (change target path with "--vsys 0 --unit 11 --disk path";
    disable with "--vsys 0 --unit 11 --ignore")
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully imported the appliance.

Vous êtes maintenant prêt à démarrer votre VM avec le nom donné lors de l'import. Ici :

vbox@server:~# VBoxHeadless --startvm "W2k12"

Et vous allez très probablement vous retrouver avec ce type d'erreur si vous importez une VM qui venait d'un système Windows :

Oracle VM VirtualBox Headless Interface 4.2.12
(C) 2008-2013 Oracle Corporation
All rights reserved.

VRDE server is listening on port 3389.
Error: failed to start machine. Error message: Failed to open/create the internal network 'HostInterfaceNetworking-Contrôleur Realtek PCIe GBE Family' (VERR_INTNET_FLT_IF_NOT_FOUND).
Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)

Quand on regarde les propiétés de la VM pour le champs NIC 1 (Network Interface Controller), on trouve ceci en tapant la commande :

vbox@server:~# VBoxManage showvminfo "W2k12" | grep NIC
NIC 1:           MAC: 08002747035F, Attachment: Bridged Interface 'Contrôleur Realtek PCIe GBE Family', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 2:           disabled
NIC 3:           disabled
NIC 4:           disabled
NIC 5:           disabled
NIC 6:           disabled
NIC 7:           disabled
NIC 8:           disabled

Réassignons correctement l'interface :

vbox@server:~# VBoxManage modifyvm "W2k12" --bridgeadapter1 eth0

En relancant la commande VBoxManage showvminfo on devrait maintenant avoir pour le champs NIC 1 ceci :

NIC 1:           MAC: 08002747035F, Attachment: Bridged Interface 'eth0', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none

Vous devriez maintenant ne plus avoir d'erreur au démarrage de votre VM

:)

Attention car la commande citée plus haut pour le démarrage de la VM ne vous rendra pas la main et permet juste d'avoir des détails si des erreurs surviennent au lancement de la VM. Utilisez plutôt cette commande pour lancer votre VM :

vbox@server:~# VBoxManage startvm "W2k12" --type headless
Waiting for VM "W2k12" to power on...
VM "W2k12" has been successfully started.
Se connecter à distance à une VM

Maintenant que notre VM est lancée, on va y accéder via la Connexion bureau à distance :

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Et voilà

:)

Gérer ses VMs via le navigateur avec phpVirtualBox

Après le mode barbu avec les lignes de commande, on va passer au mode lama avec une IHM se rapprochant de très prés à celle de VirtualBox sur votre navigateur avec phpVirtualBox.

En pré-requis il vous faudra évidemment un serveur web comme Apache 2 avec PHP 5 d'installé.

Téléchargez la version de phpVirtualBox compatible avec la version de VirtualBox installé (ici la 4.2).
Et décompressez l'archive sur votre serveur web :

root@server:~# cd /tmp/
root@server:~# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip
root@server:~# unzip phpvirtualbox-4.2-4.zip -d /var/www

Copiez le fichier config.php-example vers config.php :

root@server:~# cd /var/www/phpvirtualbox-4.2-4
root@server:~# cp config.php-example config.php
root@server:~# vi config.php

Et modifiez la configuration du fichier en changeant les variables username et password pour y mettre le nom de l'utilisateur qui démarre VirtualBox. C'est-à-dire vbox et le mot de passe associé. Vous n'aurez probablement pas besoin de changer la variable location si vous êtes sur le même serveur.

Il va maintenant falloir modifier les paramètres de lancement du service vboxwebsrv.

root@server:~# vi /etc/default/virtualbox
VBOXWEB_USER=vbox
VBOXWEB_HOST=127.0.0.1

Une documentation plus complète est disponible sur le wiki de phpVirtualBox pour la configuration du service.

Maintenant que c'est fait, vous pouvez démarrer le service web VirtualBox en exécutant cette commande en root :

/etc/init.d/vboxweb-service start
Starting VirtualBox web service:done..

Ouvrez votre navigateur et entrez l'adresse vers phpVirtualBox. Le username et mot de passe par défaut est admin.

VirtualBox sur un serveur Debian Squeeze avec VBoxHeadless

Voilà maintenant vous pouvez gérer vos VMs à distance très facilement!
J'espère que ce tuto servira à certains d'entre vous

;)


Retour à La Une de Logo Paperblog

A propos de l’auteur


Cr@zy 408 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte