3

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

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

这样做的最佳实践方式是什么?

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

如果是这样,Linux 上是否有标准工具可以做到这一点,还是我们必须自己编写?

或者是否有其他方式将设置发送到客户操作系统?

4

1 回答 1

3

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

OVF 环境是 OVF 中 ProductSection 中的一个特殊部分,您可以在其中使用自定义键/值对指定属性。

像这样:

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

2) ISO 传输

<VirtualHardwareSection ovf:transport="iso">在 OVF 中指定。Cloud/Virt 平台将提取 Product Section,将其作为文件放入 ISO9660 映像,ovf-env.xml并以 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

于 2017-09-01T08:10:44.450 回答