Propriétés OVF pour un déploiement de VM flexible avec VMware.
Permettre un déploiement flexible de VM, ne plus se poser de question lors d’une importation d’un OVF et pouvoir déployer ceux-ci sans inquiétude. En voilà une idée qu’elle est bonne et totalement faisable, assez facilement d’ailleurs.
Activer les options vApp sur les VM
Il suffira pour cela d’activer les Options vApp dans la ou les VM concernées. Petit point sur le vApp, il n’est pas nécessaire d’utiliser un container vApp pour utiliser les options vApp. Cette option permet simplement de pouvoir définir des propriétés personnalisées pour les VM et d’ajouter des identificateurs pour un déploiement ultérieur par export/import d’OVF.
Pour activer l’option Modifier les paramètres de machine virtuelle -> Onglet Options -> Options vApp -> Activer.
Cela ne fait que l’activer, il faudra ensuite définir les informations sur la VM dans le menu Avancé des Options vApp, sur le Nom de produit, version, etc…. Ces champs sont optionnels et ne feront qu’être renseignés dans l’OVF mais cela permet d’identifier vos OVF parmis d’autres ensuite.
Plus important, il faut régler comment la VM aura accès au fichier d’environnement OVF dans le menu Paramètres OVF à la section Transport d’environnement OVF. Deux choix, vous pouvez choisir d’accéder au fichier par le lecteur CDROM, auquel cas, il faudra monter celui-ci et consulter le fichier ovfenv.xml ou alors il est possible d’y accéder par les VMware tools. Vous pouvez choisir les deux méthodes et ensuite gérer cela dans votre script au cas où l’une des deux méthodes échoue.
Définir des propriétés
Puis, au choix, soit vous positionnez les propriétés au niveau de la vApp, soit au niveau de la VM si vous n’utilisez pas de container vApp. Il me semble, que les propriétés de la vApp écrasent celles des VM si elles ont le même nom. Cela peut aussi créer des conflits et des problèmes au déploiement. Je vous déconseille donc de doubler vos propriétés, mettez les propriétés communes au niveau de la vApp puis, si nécessaire, sur les VM pour certaines spécificités.
C’est à vous de répartir cela, évitez juste d’avoir la même dans la vApp et la VM ;)
Dans la vApp :
Sur la vApp en question, Modifier les paramètres -> Onglet Options -> Avancé -> Propriétés.
Dans la VM :
Sur la VM en question, Modifier les paramètres -> Onglet Options -> Options vApp, sous-menu Avancé -> Propriétés.
L’inconvénient, le seul à vrai dire, est qu’il faudra créer un/des script(s) afin de pouvoir gérer ces propriétés et leur donner un impact, de la consistance, que ce soit sur l’OS ou sur l’application utilisée. Et donc ce sera à vous de maintenir et faire évoluer ce script. Rien d’insurmontable donc…
Le cas le plus typique lorsque l’on veut déployer des VM dans des infrastructures extérieur est de pouvoir gérer la configuration réseau car l’on vous impose d’utiliser certaine adresses IP ou encore vous ne voulez pas avoir à gérer cela et vous laisserez donc le soin à celui qui déploiera la vApp de configurer lui-même cette partie au moment du déploiement.
Plutôt chouette non ?
Par exemple, configurons le réseau d’une VM grâce aux propriétés OVF. Dans la vApp, je définis 5 propriétés : ip, netmask, gateway, dns1 et dns2. Avec lesquelles je vais configurer mon réseau de ma VM linux ou windows. Je choisis d’activer les deux transports d’environnement OVF.
J’ajoute les propriétés, toutes de type ip, puis j’installe les scripts. Pour linux j’ai écris un script, ovfenv, à mettre dans /etc/init.d (créer pour Redhat mais avec un peu d’adaptation ça doit se porter aisément). Copiez donc ce script puis ajouter le dans le gestionnaire de service et activer-le :
<pre># chkconfig –add ovfenv
# chkconfig ovfenv ovfenv
# chkconfig –list ovfenv</pre>
Pour ceux qui voudrait le modifier et l’adapter prenez seulement garde à ce qu’il s’exécute avant l’activation du réseau sinon la configuration arrivera trop tard le réseau étant déjà démarré. Sous RedHat, le réseau démarre à la 10ème position, ce script s’exécute donc en 9ème.
Et pour Windows j’ai repris et légèrement modifier le script setupip.py donné dans le billet d’un blog VMware décrivant parfaitement la procédure avec une vidéo en bonus. Il faudra donc pour windows installer Python et lors de son installation cocher la case ajoutant python au PATH windows. Puis mettre le script où bon vous semble. Puis enfin, créer un fichier .bat dans C: par exemple ou où vous voulez avec une ligne
<pre>python <path_to_your_setupip.py></pre>
Enfin créer une tâche planifier avec comme déclencheur le démarrage du système et comme action l’exécution du fichier bat.
Ressources:
OVF whitepaper
Blog Vmware
Post de blog sur la définition de propriétés OVF
EDIT: Mise à jour des liens vers la dernière version des scripts. Celui pour linux prend désormais en charge la configuration DNS et celui pour windows prend en charge les deux méthode de transport d’environnement OVF