Copier une VM facilement sous ESX

Rédigé par gorki - - Aucun commentaire

Le problème :

Un petit souci de gestion de VM sous VMWare ESX 5.

Alors oui je sais, normalement on fait du Ansible, Stack, Puppet pour les anciens pas si anciens.

Mais dans mon cas, je duplique 1 VM par an et je n'ai pas forcément ces outils à disposition au moment de le faire.

Solution :

Assez simple à faire si la VM est bien pensée au départ (windows ou linux) :

  • un disque système
  • un disque par user (oracle, myuser,...)

Donc la marche à suivre :

  1. on se loggue en ssh sur l'ESX
  2. on va dans le répertoire des images : /vmfs/xxxx
  3. on duplique la VM en copiant le répertoire dans un nouveau (la VM a été préalablement arrêtée)
  4. dans le nouveau répertoire :
    1. on a les fichiers disques (*vmdk, *-flat.vmdk)
    2. on a le descripteur de VM (vmx, vmxf, vmxd, nvram)
    3. on renomme les fichiers descripteurs avec le nouveau nom
    4. on modifie dans les fichiers descripteurs les références à l'ancien nom
    5. on install la VM

Exemple de références :

// Fichier vmxf (référence au fichier vmx) : 

<vmxPathName type="string">oldvm.vmx</vmxPathName>


// Fichier vmx : 
// propriété qui peut-être supprimé : 
sched.swap.derivedName

// à modifier : 
extendedConfigFile="oldvm.vmxf"

// si les noms des disques sont en absolus, pensez-y, en relatif, pas de soucis

Dans l'exploration du stockage :

  1. sélectionner le fichier vmx
  2. installer
  3. ouvrir la console et lancer la VM
  4. cliquer sur "je l'ai copié"

 

Ensuite vu que c'est une VM copiée, modifer dans la VM (une fois lancée) :

  1. le hostname
  2. l'IP si pas de DHCP
    1. attention aux programmes qui peuvent utiliser l'IP externe (listener oracle par exemple)
  3. sous linux : le routage (/etc/hosts)
  4. sous linux : le montage des disques si l'UID a changé et qu'il n'est pas autodécté : (/etc/fstab)

 

 

Déployer des OVA Virtualbox vers un VCenter

Rédigé par gorki - - Aucun commentaire

Le problème :

J'ai des VM imposantes de 45Go à 100Go (ne me demandez pas pourquoi, c'est une contrainte externe...). Je les utilisais localement sous Virtualbox.

J'utilisais Virtualbox car celui-ci s'intégre mieux à mon Linux que VMWare qui nécessitait une recompilation avec une version GCC obsolète, un peu galère.

Les VM ont été transférées par l'hébergeur directement sur l'ESXi sur l'espace de stockage, au format OVA.

Le problème a été lors du déploiement de ces OVA en local sur l'ESXi, je devrais dire LES problèmes....

Solution :

Cela a été un peu long car je ne connaissais rien à VCenter (le manager de ESXi).

D'abord il faut savoir que c'est un OS, donc pas d'accès SSH pour aller voir ce qui se passe (enfin, voir la suite, ce n'est pas tout à fait vrai !)

1) Déployer OVA depuis le local store de l'ESXi

Bon ce n'est pas possible. Le client demande une URL et pas un chemin "local"

2) Webbrowser du local store (ne marche pas)

Malin le singe ! Le local store a un webbrowser : http://<ip esxi>/folder/ (d'ailleurs décrit ici par exemple)
Donc on redémarre le déploiement en indiquant une adresse en

http://172.16.29.100/folder/test/toto.ova?dcPath=ha%2ddatacenter&dsName=data

Le problème ici est que vu la taille des VM ou le serveur HTTP associé, on obtient au bout de quelques temps une erreur 503.

3) Format OVA Virtualbox non supporté

Alors avant de tomber sur l'erreur 503, VSphere a eu le temps d'analyser l'OVA pour indiquer que :

- le system est inconnu (normal virtualbox) : remplacer par vmware
- l'interface disque est inconnue (normal SATA alors que SCSI sur le serveur) : remplacer par du SCSI
- la carte son est inconnue (normal aussi, le serveur n'a pas le temps de jouer de la musique)i : supprimer la section

Pour corriger ça, c'est simple, c'est décrit à plusieurs endroits (ici, ) : il faut modifier l'OVF. Rappel dans l'OVA il y a un disque un VMDK + un descripteur l'OVF.

Donc modifier l'OVF. Qui est sur l'ESXi. Dans un OVA que je ne peux pas télécharger et uploader car trop gros. Easy (décrit ici):

  1. ouvrir l'accès SSH VSphere pour un utilisateur,
  2. transférer 7z portable,
  3. dézipper l'OVA avec 7z
  4. modifier le fichier OVF.

Petite astuce pour savoir où sont stocké les VMDK / OVA :

  1. accès SSH
  2. find . -name "*ova"

4) Recréer une VM à partir du VMDK (ne marche pas)

J'ai essayé de créer une nouvelle VM vierge en utilisant un disque VMDK existant.

Outre le fait qu'on ne peut sélectionner le VMDK que si un descripteur VMDK est recréé (méthode ici) au final la VM ne démarre pas. Un boot avec une iso GParted montre un disque vide. Le descripteur VMDK ne doit pas être correct pourtant monsieur ! je jure ! j'ai tout fait comme il faut !

5) Déploiement final

L'OVF est modifié, il reste à avoir un serveur HTTP digne de ce nom pour servir l'image au VCenter.

Sur le serveur j'avais déjà une VM existante... Donc :

  1. on transfère l'OVF et le VMDK sur la VM existante
  2. qui est trop petite, donc on l'agrandit avec un disque supplémentaire
  3. on créé les volume group, logical volum et filesystem sous linux
  4. on retransfère l'OVF et le VMDK dans un répertoire qui a de la place
  5. on démarre un serveur python dans ce répertoire :
python -m SimpleHTTPServer
  1. dans le vClient on donne l'adresse IP de la VM : http://<ip VM>:8000/monfichier.ovf
  2. et ça déploie.... pas. Enfin si mais lentement. Parce que même si la VM et l'ESXi sont dans le même sous réseau on passe par le poste du vClient... en ADSL...
  3. donc nouvelle VM (ou la même) : installation du vClient dans le même sous réseau et on utilise le vClient dans le même sous réseau

VICTORY.... Argh.... ça été dur.

datapump (expdp) et virtualbox répertoire partagé

Rédigé par gorki - - Aucun commentaire

Le problème :

Utiliser expdp (export Oracle) pour dumper une base sur un répertoire partagé VirtualBox

 

Solution :

 

ça ne marche pas.

J'ai testé plusieurs choses :

ça ne marche pas sous l'OS

  • mettre les droits du répertoire partagé à l'utilisateur oracle via chown/chmod. Ce n'est pas possible (même dans les sous-répertoires)

ça marche sous l'OS (je peux créer des répertoires/fichier), ça ne marche pas avec expdp :

  • ajouter l'utilisateur oracle au groupe vboxsf.  (ORA-39070)
  • monter le répertoire partagé pour l'utilisateur oracle (cf ce lien). (ORA-39070)
  • utiliser un répertoire local pour le LOG et le partagé pour le dump (cf ce lien). (ORA-27054)

Au final je dump en local sur ma VM après avoir fait de la place.

Les commandes utiles :

  • pour remonter le disque partager pour un autre user que root
mount -t vboxsf -o uid=1000,gid=1000 <folder name given in VirtualBox> /home/<user>/where/ever/you/want

 

Centos 6.3 en mode Guest Virtualbox

Rédigé par gorki - - Aucun commentaire

Le problème :

Plusieurs problèmes :

  • Impossible d'installer les Virtualbox guest additions
  • Impossible d'installer le repository EPEL
  • Impossible d'installer telnet, bash-completion

Solution :

Normalement pour installer Virtualbox guest additions, il faut installer dkms via EPEL or je n'y arrivais pas.

Donc :

yum install gcc make kernel kernel-devel kernel-headers bzip2 

Et puis dans les logs d'installation on trouve la réponse :

export KERN_DIR=/usr/src/kernels/x.x.x/
cd /media/VBOX_ADDITIONS...
./VBoxLinuxAdditions.run

et ça marche.

Attention à avoir la dernière version du kernel pour être cohérent avec les yum install précédent.

Sinon

yum update kernel

 

Pour le EPEL, j'avais un message d'erreur résolu ici.

  • Editer /etc/yum.repos.d/epel.repo
  • Décommenter les baseurl
  • Commenter les mirrorslist

 

 

Virtualbox, VPN et accès protégé

Rédigé par gorki - - Aucun commentaire

Le problème :

La machine virtuelle se connecte en VPN à une autre machine qui propose des services (mysql, apache)

Le but est d'avoir sous mon environnement de développement Linux, accès à cet environnement distant. Le VPN n'est compatible qu'avec Windows, donc lancement d'une machine virtuelle, connexion au VPN, connexion à la machine...

Et ensuite ?

Solution :

La machine virtuelle est en mode "Accès par pont", elle a donc sa propre adresse IP, (ex : 192.168.1.108) (cf cet article).

Via Putty (ou mRemoteNG), déclarer les tunnles suivants :

Source port : 3340

Destination : localhost:3306 (si la base mysql est directement sur la machine distante)

Mode : Local / IPV4

Cela permet depuis linux d'accéder à la base via : 192.168.1.108:3340

Explication : Putty établit un pont entre la machine distante et une port bindé sur l'adresse IPv4 de la machine virtuelle. Cette adresse étant accessible depuis l'environnement de développement.

 

 

 

Fil RSS des articles de cette catégorie