web-dev-qa-db-fra.com

Comment démarrer les images Ubuntu Cloud dans vmware?

Je souhaite exécuter une image de nuage Ubuntu sur VMWare.

J'ai juste besoin de savoir comment définir les propriétés OVF de manière compréhensible par VMWare pour pouvoir passer les paramètres à cloud-init.

Ce que j'ai fait

Installez VMWare Player 4.0.4 à l’aide du correctif correctif de vmware workstation 8.0.2/player 4.0.2 pour linux 3.2+ afin de contourner l’échec de la compilation du module Ethernet virtuel.

Téléchargez precise-server-cloudimg-AMD64.ovf , ainsi que le fichier precise-server-cloudimg-AMD64.img (format compressé QCOW2, 220 Mo)

Convertissez l'image de QCOW2 en VMDK:

qemu-img convert -O vmdk precise-server-cloudimg-AMD64-disk1.img disk.vmdk

Editez l'élément OVF <File> pour modifier les tailles ovf: href et ovf: afin qu'elles correspondent à la sortie de qemu-img:

<File ovf:href="disk.vmdk" ovf:id="file1" ovf:size="689569792"/> 

Éditez l'élément <Disk> pour définir le format VMDK fragmenté et la capacité souhaitée en octets (8 Go ici):

<Disk ovf:capacity="8589934592" ovf:diskId="vmdisk1" ovf:fileRef="file1" 
ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#sparse"/>

Supprimez tous les éléments <Property> car vmplayer ne les reconnaît pas.

Configurez la section VirtualHardwareSection pour définir CPU et RAM à goûter.

Exécutez le fichier OVF dans vmplayer ou convertissez-le en vmx et exécutez vmx:

ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx

Malheureusement, je ne peux pas me connecter en tant qu'ubuntu à l'invite, car les propriétés OVF n'ont pas été fournies à cloud-init. Comment dois-je faire cela?

6
Graham

Cette réponse est basée sur le NoCloud README de CloudInit et vous donne l'initiation au cloud sur le lecteur VMWare.

Créez le fichier "méta-données" en utilisant "localhost" comme nom d'hôte à résolution garantie pour éviter les délais DNS qui obligent Sudo à prendre du temps dans un environnement d'hyperviseur local:

local-hostname: localhost

Créez le fichier "données-utilisateur" pour CloudInit info. Celui-ci définit le mot de passe sur Ubuntu et me demande de le changer lors de la première connexion:

#cloud-config
password: ubuntu

Générez seed.iso à partir de ces fichiers:

genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

Attachez "seed.iso" au VM avant le premier démarrage (configurez-le pour se connecter au démarrage), et lorsque grub apparaît, ajoutez également ce paramètre de noyau pour le premier démarrage:

ds=nocloud-net

La machine va démarrer et se configurer. Pour les prochains démarrages, nous devons éditer edit /etc/default/grub et exécuter Sudo update-grub pour lui dire que nous ne sommes pas dans EC2 (pas de service de métadonnées dans le cloud):

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 ds=nocloud"
3
Graham

J'ai trouvé un moyen de rendre les images de nuage Ubuntu amorçables, et de mettre ma réponse

En voici l'essentiel:

mount -o loop cloud-image.img /mnt/image
extlinux --install /mnt/image/
echo "DEFAULT /vmlinuz" > /mnt/image/extlinux.conf
echo "APPEND root=/dev/sda init=/usr/lib/cloud-init/uncloud-init" \
     "ubuntu-pass=ubuntu ds=nocloud" >> /mnt/image/extlinux.conf
umount /mnt/image

Le résultat est essentiellement un disque dur amorçable. Vous pouvez convertir cela en utilisant tous les outils disponibles en fonction de votre virtualisation, et (comme vous pouvez le voir sur le APPEND root=/dev/sda), des ajustements peuvent être nécessaires en fonction de votre matériel virtuel (scsi ou ide ou sata) ...

0
mogsie

Cette réponse concerne un pangolin précis et décrit un moyen de résoudre ce problème sans recourir à une image de CD (que je ne pouvais pas utiliser avec VMware ESX).

Il semble que les images en nuage Ubuntu contiennent maintenant un secteur de démarrage (quelque chose que je ne me souviens pas qu'ils l'avaient fait auparavant). Si vous convertissez l'image en vmdk à l'aide de qemu-img et que vous nettoyez le fichier OVF comme décrit, vous pouvez le démarrer dans grub sans plus tarder. Grub a un délai d’expiration par défaut de 5 secondes, vous devriez donc pouvoir edit modifier les paramètres de démarrage lors du premier démarrage pour inclure:

init=/usr/lib/cloud-init/uncloud-init ubuntu-pass=ubuntu ds=nocloud-net console=tty0

Ceci imprimera tout sur tty0, définira le mot de passe ubuntu sur quelque chose de connu et forcera l'initialisation "uncloud". et vous permettra de vous connecter avec les informations d'identification fournies. Notez que la ligne de commande est visible pour toute personne se connectant (cat /proc/cmdline]). Vous devez donc modifier la configuration de grub après le premier démarrage (voir ci-dessous), puis redémarrez.

J'ai eu du succès avec cette technique en utilisant VMware ESX avec seulement vncviewer installé localement; Aucun outil VMware autre que ovftool n’est utilisé pour télécharger l’ovf sur ESX. Vraisemblablement, la même technique fonctionnera avec un lecteur VMware.

Pour rendre les choses plus permanentes, modifiez à nouveau /etc/default/grub et définissez à nouveau add ds = nocloud-net sur la ligne de commande afin d'éviter que cloud-init n'apporte de modifications supplémentaires à votre image. Exécutez update-grub pour le faire tenir et redémarrer.

0
mogsie