如何在 vmware 中启动 Ubuntu Cloud 映像?

Gra*_*ham 7 uec vmware virtualization

我想在 VMWare 上运行 Ubuntu 云映像。

我只需要知道如何以 VMWare 理解的方式设置 OVF 属性,以便将参数传递给 cloud-init。

我所做的

安装 VMWare Player 4.0.4,使用vmware 工作站 8.0.2 / player 4.0.2 fix for linux 3.2+ patch解决虚拟以太网模块编译失败的问题。

下载precision-server-cloudimg-amd64.ovf,以及 precision-server-cloudimg-amd64.img 文件(压缩 QCOW2 格式,220MB)

将镜像从 QCOW2 转换为 VMDK:

qemu-img convert -O vmdk precise-server-cloudimg-amd64-disk1.img disk.vmdk
Run Code Online (Sandbox Code Playgroud)

编辑 OVF<File>元素以更改 ovf:href 和 ovf:size 以匹配 qemu-img 的输出:

<File ovf:href="disk.vmdk" ovf:id="file1" ovf:size="689569792"/> 
Run Code Online (Sandbox Code Playgroud)

编辑<Disk>元素以设置稀疏 VMDK 格式和所需的字节容量(此处为 8GB):

<Disk ovf:capacity="8589934592" ovf:diskId="vmdisk1" ovf:fileRef="file1" 
ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#sparse"/>
Run Code Online (Sandbox Code Playgroud)

删除所有<Property>元素,因为 vmplayer 无法识别它们。

配置 VirtualHardwareSection 部分以设置 CPU 和 RAM。

在 vmplayer 中运行 OVF,或转换为 vmx 并运行 vmx:

ovftools custom.ovf mymachine.vmx
vmplayer mymachine.vmx
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法在提示符下以“ubuntu”身份登录,因为尚未向 cloud-init 提供 OVF 属性。我该怎么做?

Gra*_*ham 4

这个答案基于CloudInit 的 NoCloud 自述文件,并为您提供 VMWare 播放器上的云初始化。

创建文件“meta-data”,使用“localhost”作为保证解析的主机名,以避免 DNS 超时导致 sudo 在本地管理程序环境中花费很长时间:

local-hostname: localhost
Run Code Online (Sandbox Code Playgroud)

为CloudInit信息创建文件“user-data” 。这个设置了 ubuntu 的密码,并要求我在第一次登录时更改它:

#cloud-config
password: ubuntu
Run Code Online (Sandbox Code Playgroud)

从这些文件生成seed.iso:

genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
Run Code Online (Sandbox Code Playgroud)

在首次启动之前将“seed.iso”附加到虚拟机(将其设置为启动时连接),并且当 grub 出现时,还为首次启动添加此内核参数:

ds=nocloud-net
Run Code Online (Sandbox Code Playgroud)

机器将自行启动并配置。对于未来的启动,我们需要编辑 edit/etc/default/grub并运行sudo update-grub以告诉它我们不在 EC2 中(无云元数据服务):

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0 ds=nocloud"
Run Code Online (Sandbox Code Playgroud)