我们为客户制作了一个 OVA,它使用 DHCP 来查找其 IP 地址。它使用 CoreOS 作为客户操作系统。
一些客户希望能够使用静态 IP 地址,并在 VMWare 中对其进行配置。
这样做的最佳实践方法是什么?
是在控制台上拥有用户界面的唯一方法吗?部署虚拟机的人在其中键入 IP 地址、网络掩码和 DNS 等信息?
如果是这样,Linux 上是否有标准工具可以执行此操作,还是我们必须自己编写?
或者是否有其他方式将设置发送到客户操作系统?
最佳答案
可以使用 OVF/OVA 将信息传递给 guest 操作系统。 功能称为 OVF Environment 或 VMware Guestinfo 接口(interface)。我不确定这是否真的适合您的用例和需求。
OVF Environment 是 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
.它可以是 VMware VM Tools 或作为 CDROM 附加的 ISO 镜像。
1) VM 工具传输
VMware tools 或 Open VMware tools 应该安装在 Guest OS 中。
您应该在 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,将其作为文件ovf-env.xml
放入ISO9660镜像中。并作为 CDROM 附加到第一个可用的 IDE 设备。
然后你可以挂载这个CDROM,读取文件,解析值并应用配置。
如果不想自己解析值,可以考虑cloud-init
作为 guest 内部应用配置的选项。有很多模块可以应用 IP 配置、SSH key 或只是编写和执行文件/命令。
http://cloudinit.readthedocs.io/en/latest/topics/datasources/ovf.html
您提到了支持 VMware Guestinfo 接口(interface)的 CoreOS。
https://coreos.com/os/docs/latest/booting-on-vmware.html
关于vmware - 如何制作可使用静态 IP 地址的 OVA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613308/