wake-up-neo.com

Wie starte ich Ubuntu Cloud-Images in VMware?

Ich möchte ein Ubuntu-Cloud-Image auf VMWare ausführen.

Ich muss nur wissen, wie die OVF-Eigenschaften so festgelegt werden, dass VMWare sie versteht, um Parameter an cloud-init zu übergeben.

Was ich getan habe

Installieren Sie VMWare Player 4.0.4 mit dem Patch vmware workstation 8.0.2/player 4.0.2 für Linux 3.2+ , um den Kompilierungsfehler für das virtuelle Ethernet-Modul zu umgehen.

Download exact-server-cloudimg-AMD64.ovf und auch die exact-server-cloudimg-AMD64.img-Datei (komprimiertes QCOW2-Format, 220 MB)

Konvertieren Sie das Image von QCOW2 nach VMDK:

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

Bearbeiten Sie das Element OVF <File>, um die Größe von ovf: href und ovf: an die Ausgabe von qemu-img anzupassen:

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

Bearbeiten Sie das <Disk> -Element, um das sparsame VMDK-Format und die gewünschte Kapazität in Byte festzulegen (8 GB hier):

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

Entfernen Sie alle <Property> Elemente, da vmplayer sie nicht erkennt.

Konfigurieren Sie den Abschnitt VirtualHardwareSection, um die CPU und RAM nach Belieben festzulegen.

Führen Sie die OVF entweder in vmplayer aus oder konvertieren Sie sie in vmx und führen Sie die vmx aus:

ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx

Leider kann ich mich an der Eingabeaufforderung nicht als "ubuntu" anmelden, da die OVF-Eigenschaften nicht für cloud-init bereitgestellt wurden. Wie soll ich das machen?

6
Graham

Diese Antwort basiert auf NoCloud README von CloudInit und gibt Ihnen Cloud-Init auf VMWare-Player.

Erstellen Sie die Datei "meta-data" mit "localhost" als garantiert aufzulösendem Hostnamen, um DNS-Zeitüberschreitungen zu vermeiden, die Sudo in einer lokalen Hypervisor-Umgebung in die Jahre kommen lassen:

local-hostname: localhost

Erstellen Sie die Datei "Benutzerdaten" für CloudInit info. Dieser setzt das Passwort auf Ubuntu und fordert mich auf, es beim ersten Login zu ändern:

#cloud-config
password: ubuntu

Generiere seed.iso aus diesen Dateien:

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

Hängen Sie "seed.iso" vor dem ersten Start an das VM an (stellen Sie es so ein, dass es beim Start eine Verbindung herstellt). Wenn grub erscheint, fügen Sie auch diesen Kernel-Parameter für den ersten Start hinzu:

ds=nocloud-net

Der Computer bootet und konfiguriert sich selbst. Für zukünftige Starts müssen wir edit /etc/default/grub editieren und Sudo update-grub ausführen, um festzustellen, dass wir uns nicht in EC2 befinden (kein Cloud-Metadatendienst):

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

Ich habe einen Weg gefunden, die Ubuntu Cloud Images bootfähig zu machen, und setze meine Antwort

Hier ist der Kern davon:

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

Das Ergebnis ist im Grunde eine bootfähige Festplatte. Sie können dies mit den für Ihre Virtualisierung verfügbaren Tools konvertieren, und (wie Sie unter APPEND root=/dev/sda sehen können) müssen die Dinge möglicherweise angepasst werden, je nachdem, welche virtuelle Hardware Sie verwenden (scsi oder ide oder sata) ...

0
mogsie

Diese Antwort bezieht sich auf präzises Pangolin und beschreibt eine Möglichkeit, dieses Problem zu lösen, ohne auf ein CD-Image zurückzugreifen (das ich mit VMware ESX nicht zur Arbeit bringen konnte).

Es scheint, dass die Ubuntu Cloud Images jetzt einen Bootsektor enthalten (etwas, an das ich mich nicht erinnern kann, dass sie es früher getan haben). Wenn Sie das Image mit qemu-img in vmdk konvertieren und die OVF wie beschrieben bereinigen, können Sie es tatsächlich ohne weiteres in grub booten. Grub hat eine Standard-Zeitüberschreitung von 5 Sekunden, daher sollten Sie in der Lage sein, e die Startparameter beim ersten Start zu ändern, um Folgendes einzuschließen:

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

Dies gibt alles auf tty0 aus, setzt das Ubuntu-Passwort auf etwas Bekanntes und erzwingt die "Uncloud" -Initialisierung. und ermöglicht Ihnen die Anmeldung mit den angegebenen Anmeldeinformationen. Beachten Sie, dass die Befehlszeile für alle Benutzer sichtbar ist, die sich anmelden (cat /proc/cmdline). Sie sollten daher die Grub-Konfiguration nach dem ersten Start ändern (siehe unten) und neu starten.

Ich hatte Erfolg mit dieser Technik unter Verwendung von VMware ESX, wobei nur vncviewer lokal installiert war. Keine anderen VMware-Tools als ovftool zum Hochladen der ovf auf ESX. Vermutlich funktioniert die gleiche Technik mit einem VMware Player.

Um die Dinge dauerhafter zu machen, ändern Sie /etc/default/grub und setzen Sie ds = nocloud-net erneut in die Befehlszeile, um zu verhindern, dass Cloud-Init weitere Änderungen an Ihrem Image vornimmt. Führen Sie update-grub aus, damit es haftet, und starten Sie es neu.

0
mogsie