Как мне загрузить образы Ubuntu Cloud в vmware?

Я хочу запустить образ облака Ubuntu на VMWare.

Мне просто нужно знать, как установить свойства OVF так, чтобы VMWare понимал их, чтобы передать параметры в cloud-init.

Что я сделал

Установите VMWare Player 4.0.4, используя исправление vmware workstation 8.0.2 / player 4.0.2 для патча linux 3.2+, чтобы обойти ошибку компиляции для виртуального модуля Ethernet.

Загрузите Precision-Server-Cloudimg-amd64.ovf, а также файл Precision-Server-Cloudimg-AMD64.img (сжатый формат QCOW2, 220 МБ)

Преобразовать изображение из QCOW2 в VMDK:

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

Редактировать OVF <File> элемент для изменения ovf:href и ovf:size, чтобы соответствовать выводу qemu-img:

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

Изменить <Disk> элемент для установки разреженного формата VMDK и требуемой емкости в байтах (8 ГБ здесь):

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

Удалить все <Property> элементы, потому что vmplayer не распознает их.

Настройте раздел VirtualHardwareSection, чтобы настроить процессор и оперативную память по вкусу.

Либо запустите OVF в vmplayer, либо преобразуйте в vmx и запустите vmx:

ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx

К сожалению, я не могу войти в систему как "ubuntu" в командной строке, потому что свойства OVF не были предоставлены cloud-init. Как мне это сделать?

3 ответа

Решение

Этот ответ основан на NoCloud README от CloudInit и дает вам cloud-init на проигрывателе VMWare.

Создайте файл "метаданные", используя "localhost" в качестве имени хоста с гарантированным разрешением, чтобы избежать тайм-аутов DNS, из-за которых sudo уходит в давность в среде локального гипервизора:

local-hostname: localhost

Создайте файл "user-data" для информации CloudInit. Этот устанавливает пароль на Ubuntu и просит меня изменить его при первом входе в систему:

#cloud-config
password: ubuntu

Создайте seed.iso из этих файлов:

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

Присоедините "seed.iso" к виртуальной машине перед первой загрузкой (установите ее для подключения при запуске), и, когда появится grub, также добавьте этот параметр ядра для первой загрузки:

ds=nocloud-net

Машина загрузится и настроится сама. Для будущих ботинок нам нужно отредактировать правку /etc/default/grub и беги sudo update-grub чтобы сказать это, мы не в EC2 (нет службы облачных метаданных):

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 ds=nocloud"

Этот ответ относится к точному ящеру и описывает способ решения этой проблемы без обращения к образу компакт-диска (который я не смог получить с помощью VMware ESX).

Кажется, что Ubuntu Cloud Images теперь содержат загрузочный сектор (что-то, что я не могу вспомнить, они делали ранее). Если вы конвертируете изображение в vmdk используя qemu-img и очистите OVF, как описано, вы можете загрузить его в grub без лишних слов. Grub имеет тайм-аут по умолчанию 5 секунд, поэтому вы должны иметь возможность eДит параметры загрузки при первой загрузке, чтобы включить:

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

Это распечатает все в tty0, установит пароль ubuntu на что-то известное и принудительно инициализирует "uncloud". и позволит вам войти с предоставленными учетными данными. Обратите внимание, что командная строка видна всем, кто входит в систему (cat /proc/cmdline), поэтому вы должны изменить конфигурацию grub после первой загрузки (см. ниже) и перезагрузиться.

Я добился успеха с этой техникой, используя VMware ESX с установленным локально только vncviewer; никакие инструменты VMware, кроме ovftool, не использовались для загрузки ovf в ESX. Предположительно та же самая техника будет работать с VMware Player.

Чтобы сделать вещи более постоянными, измените /etc/default/grub и снова установите в командной строке add ds=nocloud-net, чтобы cloud-init не вносил дальнейших изменений в ваш образ. Бежать update-grub затем заставить его застрять и перезагрузиться.

Я нашел способ сделать Ubuntu Cloud Images загрузочным и разместил свой ответ

Вот суть этого:

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

В результате получается загрузочный жесткий диск. Вы можете преобразовать это, используя любые имеющиеся у вас инструменты, подходящие для вашей виртуализации, и (как вы можете видеть из APPEND root=/dev/sda) вещи могут нуждаться в настройке в зависимости от того, какое у вас виртуальное оборудование (scsi, ide или sata)...

Другие вопросы по тегам