Как мне загрузить образы 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)...