Passionné d’intégration de systèmes et de virtualisation, j’ai choisi de décrire dans cet article une vision plus inhabituelle d’Oracle VirtualBox qui est la répartition de machines virtuelles sur différents serveurs PC sous Windows (l’équivalent existe aussi sous linux) et de les administrer à distance via une interface web.
Cet article se veut avant tout pédagogique, même si des environnements de tests peuvent être gérés avec cette méthode.
Les hyperviseurs, moteurs de la virtualisation, sont classiquement divisés en type :
- type 1 : l’hyperviseur s’installe comme un OS sur le serveur et est optimisé pour le service à rendre.
- type 2 : l’hyperviseur est un logiciel qui tourne sur l’OS de l’hôte.
VirtualBox est un hyperviseur de type 2 que l’on utilise pour réaliser des tests, des POCs, …. Il est facile à mettre en oeuvre et possède un grand nombre d’adeptes. Il intègre une console d’administration de type client lourd qui permet de faire tourner localement des machines virtuelles.
Le but de cet article est de décrire l’utilisation de deux logiciels open source qui vont nous permettre :
- De démarrer automatiquement au boot du serveur des machines virtuelles grâce à un service Windows : VboxVmService
- D’accéder à l’administration des VM rattachées à des PC distants via une interface web: phpvirtualbox
Le paramétrage réalisé ne tient pas compte d’éventuels problèmes de sécurité, à vous de « blinder » l’installation éventuellement..
1. Briques utilisées pour réaliser l’installation
Plutôt que d’utiliser Apache avec PHP (c’est trop simple ?), j’ai choisi de changer un peu et d’utiliser IIS présent dans mon Windows 7 mais non installé.
La phase d’installation sera la suivante :
1) installation de VboxVmService
2) installation de PHP
3) installation de phpvirtualbox
4) installation d’IIS
5) paramétrage d’IIS
6) Paramétrages supplémentaires propres au lien entre VboxVmServicen phpvirtualbox et Virtualbox
Les liens de téléchargement des produits sont donnés en annexe..
2. Installation
a. Installation de VboxVmService
Cette installation ne présente pas de problème. L’installeur se présentant sous forme d’exécutable (VBoxVmService-4.0-Bayberry.exe) et demande simplement le répertoire d’installation.
Lancer le service..
b. Installation de PHP et paramétrage
Récupérer une version de PHP 5.5 pour WIndows non thread safe (suivant note http://php.net/manual/fr/install.windows.iis7.php ), ici php-5.5.0-nts-Win32-VC11-x64.zip, et la dézipper dans C:VirtualBoxAdmin
Renommer le fichier C:VirtualBoxAdminphp-5.5.0-nts-Win32-VC11-x64php.ini-development en php.ini
Dans le fichier php.ini :
Activer Soap en supprimant le commentaire devant le mot clé « extension » :
extension=php_soap.dll
Activer le paramètre timezone avec la valeur suivante (l’important est de l’activer quel que soit le time zone) :
date.timezone =Europe/Paris
Rajouter en fin de fichier :
fastcgi.impersonate = 1 fastcgi.logging = 0 cgi.fix_pathinfo=1 cgi.force_redirect = 0
Exécuter le programme C:VirtualBoxAdminphp-5.5.0-nts-Win32-VC11-x64php-cgi.exe.
Si une erreur est remontée concernant la non existance de la dll msvcr110.dll, télécharger sur microsoft.com une version de Visual C++ 2012
(http://www.microsoft.com/fr-fr/download/details.aspx?id=30679) et choisir VSU1vcredist_x64.exe
.
c. Installation de phpvirtualbox
Récupérer une version de phpvirtualbox, ici phpvirtualbox-4.2-4.zip, et la dézipper dans C:VirtualBoxAdmin.
d. Installation d’IIS
Panneau de configuration –> programmes et fonctionnalités –> Activer ou désactiver des fonctionnalités Windows
Cliquer dans les cases à cocher : Service Internet IIS et dans Fonctionnalités de développement d’applications –> CGI suivant l’image ci dessous
e. Paramétrage d’IIS
Ouvrir l’interface de paramétrage IIS et se positionner dans Default Web Site.
Cliquer sur mappage de gestionnaire
et choisir Ajouter un mappage de module
Paramétrer le module suivant l’image ci-dessous
Création d’un répertoire virtuel pointant sur l »installation de phpvirtualbox
Puis renseigner le répertoire virtuel comme ci-dessous :
.
f. Paramétrages supplémentaires propres au lien entre VboxVmService, phpvirtualbox et Virtualbox
Un problème de droit utilisateur existe lors du lancement du programme VboxWebsrv.exe qu iest appelé par le service VboxVmService. Pour le corriger, ouvrir une fenêtre de commandes et lancer :
C:\> dcomcnfg
Puis dans l’interface graphique, sélectionner
Services de composants –> ordinateurs –> Configuration DCOM –> VirtualBox Application
puis faire un clic droit et selectionner Propriétés
Dans le volet Identité, renseigner les champs « Cet utilisateur » avec le login/password d’un utilisateur ayant les droits d’administrateur.
Un autre problème est lié à l’authentification du web service de VirtualBox. Pour faire simple, j’ai détourné le problème en entrant la commande suivante :
"C:\Program Files\Oracle\VirtualBox\VBoxManage" setproperty websrvauthlibrary null
Mais vous pouvez jouer plus sportif en affinant la cause de ce problème 😉
Après ces modifications, arrêter et redémarrer le service
g. Déploiement sur plusieurs serveurs
Si vous comptez réaliser une ferme de serveurs Virtualbox, l’installation ci-dessus doit être réalisée sur chacun des serveur de la ferme. De plus penser à paramétrer correctement le firewall Windows et activer le service RPC pour permettre les accès distants sur la console des machines virtuelles.
Le paramètre « var $servers » du fichier config.php de phpvirtualbox autorise la connexion à plusieurs serveurs virtualbox distants à partir de la même interface web.
3. Utilisation de l’interface web phpvirtualbox
Nous voici prêts à utiliser notre interface graphique. Pour y accéder, entrer : « http://localhost/virtualboxadmin », le login et le mot de passe par défaut sont admin/admin.
a. Importation des machines virtuelles existantes
Les machines virtuelles crées avec le client lourd n’apparaissent pas dans la console php. Il est cependant possible de les importer à l’aide de la commande : menu machine –> ajouter –> choisir un fichier xxx.vbox
.
b. Paramétrage de la console phpvirtualbox
L’accès en mode console est grisé par défaut dans l’interface graphique.
Pour l’activer, il faut aller cliquer sur la VM et choisir Configuration–>affichage–>bureau à distance
Le port serveur doit être unique sur chaque serveur, il faut attribuer un port différent par VM par serveur.
Lorsque l’on clique sur l’icone console en haut à droite, la fenêtre de connexion apparait sous cette forme :
Il faut remplacer « null » par l’adresse IP de la machine à contacter (l’interface ne la rajoute pas automatiquement). Si les fonctionnalités console ne fonctionnent pas, il faut installer le Virtual Box Extension sur le serveur.
c. Paramétrage du service VboxVmService
Pour démarrer automatiquement des VM au boot du PC, il faut d’une part rendre automatique le démarrage du service. Ensuite, il faut manuellement (eh oui !) dire explicitement les VM qui doivent être démarrées automatiquement par le service. Pour cela il faut configurer le fichier VBoxVmService.ini se trouvant dans le répertoire d’installation du service en rajoutant une entrée par VM, incrémentée de 0 à n. Cette entrée comporte un paramétre AutoStart à renseigner par yes le cas échéant. Pour le paramétre ShutdownMethod , les choix possibles sont « savestate » and « acpipowerbutton » suivant que l’état de la machine virtuelle doit être sauvegardé au shutdown du serveur ou non.
[Vm0]
VmName=ubuntu
ShutdownMethod=savestate
AutoStart=yes
[Vm1]
VmName=winxp
ShutdownMethod=savestate
AutoStart=no
4. Conclusion
Vous voilà propriétaire d’une ferme de serveurs virtualisés avec des fonctionnalités basiques, certes, mais à bon marché et facile à exploiter..
Annexe
VboxVmService : http://sourceforge.net/projects/vboxvmservice
PHP sur Windows : http://windows.php.net/download
PHP VirtualBox : http://code.google.com/p/phpvirtualbox
Documentation PHP sur Windows : http://php.net/manual/fr/install.windows.iis7.php