我们为客户制作了一个 OVA,它使用 DHCP 来查找其 IP 地址。它使用 CoreOS 作为客户操作系统。
一些客户希望能够使用静态 IP 地址,并在 VMWare 中进行配置。
这样做的最佳实践方式是什么?
在控制台上拥有用户界面的唯一方法是部署虚拟机的人在 IP 地址、网络掩码和 DNS 等中键入密钥吗?
如果是这样,Linux 上是否有标准工具可以做到这一点,还是我们必须自己编写?
或者是否有其他方式将设置发送到客户操作系统?
我们为客户制作了一个 OVA,它使用 DHCP 来查找其 IP 地址。它使用 CoreOS 作为客户操作系统。
一些客户希望能够使用静态 IP 地址,并在 VMWare 中进行配置。
这样做的最佳实践方式是什么?
在控制台上拥有用户界面的唯一方法是部署虚拟机的人在 IP 地址、网络掩码和 DNS 等中键入密钥吗?
如果是这样,Linux 上是否有标准工具可以做到这一点,还是我们必须自己编写?
或者是否有其他方式将设置发送到客户操作系统?
可以使用 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