我们为客户制作了一个OVA,它使用DHCP来查找其IP地址。它使用CoreOS作为客户操作系统。
有些客户希望能够使用静态IP地址,在VMWare中进行配置。
这样做的最佳做法是什么?
在控制台上设置用户界面的唯一方法是在IP地址,网络掩码和DNS等中部署虚拟机密钥的人员?
如果是这样,Linux上是否有标准工具来执行此操作,或者我们是否必须自己编写?
或者是否有其他方式将设置发送到来宾操作系统?
答案 0 :(得分:1)
有可能使用OVF / OVA将信息传递给来宾操作系统。 功能称为OVF环境或VMware Guestinfo接口。我不确定这是否真的适合您的用例和需求。
OVF环境是ProductSection中OVF的一个特殊部分,您可以在其中指定具有自定义键/值对的属性。
像这样:
<ProductSection ovf:required="false">
<Property ovf:key="my-static-address" ovf:type="string" ovf:userConfigurable="true" ovf:value="10.10.10.10">
<Label>My static IP address</Label>
<Description>Message about my static IP address</Description>
</Property>
<Property ovf:key="foo" ovf:type="string" ovf:userConfigurable="true" ovf:value="bar">
<Description>foobar</Description>
</Property>
</ProductSection>.
如果您要指定ovf:userConfigurable="true"
,则用户在部署期间可以指定静态IP地址,例如。
然后有两种方法可以将其传递给VM本身。这称为transport
。它可能是VMware VM Tools或作为CDROM附加的ISO映像。
1)VM Tools传输
应在Guest OS中安装VMware工具或Open VMware工具。
您应该在OVF中指定:
<ovf:VirtualHardwareSection ovf:transport="com.vmware.guestInfo">
部署后,您可以通过vmware-rpc阅读产品部分:
vmware-rpctool "info-get guestinfo.ovfEnv"
将返回XML格式的Product Section。然后由您来解析此XML,提取键/值并应用配置(例如静态IP)。
2)ISO传输
您在OVF中指定<VirtualHardwareSection ovf:transport="iso">
。
然后,Cloud / Virt平台将提取产品部分,将其作为文件ovf-env.xml
添加到ISO9660映像,并作为CDROM连接到第一个可用的IDE设备。
然后,您可以挂载此CDROM,读取文件,解析值并应用配置。
如果您不想自己解析值,可以将cloud-init
视为guest虚拟机中的一个选项以应用配置。有很多模块可以应用IP配置,SSH密钥或只是编写和执行文件/命令。
http://cloudinit.readthedocs.io/en/latest/topics/datasources/ovf.html
您已经提到了支持VMware Guestinfo接口的CoreOS。
https://coreos.com/os/docs/latest/booting-on-vmware.html