我们为客户制作了一个OVA,它使用DHCP查找其IP地址。它使用CoreOS作为来宾操作系统。

一些客户希望能够使用静态IP地址,并在VMWare中进行配置。

最佳做法是什么?

在控制台上拥有用户界面的唯一方法是在其中将虚拟机密钥部署在IP地址,网络掩码和DNS等中的人吗?

如果是这样,Linux上是否有标准工具可以执行此操作,还是我们必须编写自己的工具?

还是有其他方法可以将设置发送到来宾操作系统?

最佳答案

可以使用OVF / OVA将信息传递给来宾OS。
功能称为OVF环境或VMware Guestinfo接口。我不确定这是否真的适合您的用例和需求。

OVF环境是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。它可以是作为CDROM附加的VMware VM Tools或ISO映像。

1)VM Tools传输

VMware工具或Open VMware工具应安装在Guest OS中。
您应该在OVF中指定:<ovf:VirtualHardwareSection ovf:transport="com.vmware.guestInfo">部署后,您可以通过vmware-rpc阅读产品部分:vmware-rpctool "info-get guestinfo.ovfEnv",它将返回XML格式的产品部分。然后由您来解析此XML,提取键/值并应用配置(例如静态IP)。

2)ISO运输

您可以在OVF中指定<VirtualHardwareSection ovf:transport="iso">
然后,Cloud / Virt平台将提取产品部分,将其作为文件ovf-env.xml放置到ISO9660映像中,并以CDROM形式附加到第一个可用的IDE设备。
然后,您可以安装此CDROM,读取文件,解析值并应用配置。

如果您不想自己解析值,则可以将cloud-init作为来宾系统中的一个选项来应用配置。有很多模块可以应用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

09-04 00:07