我们为客户制作了一个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