使用.vmx和.vmd​​k文件中的pyvmomi模块创建vm

时间:2015-03-23 14:49:50

标签: python vmware pyvmomi

我一直在尝试使用pyvmomi模块在Python中使用来自ESX主机的现有vm的.vmx和.vmd​​k文件来创建新的vm。 我是pyvmomi的新手,并且pyvmomi没有太多的在线帮助。我已经检查了github(https://github.com/vmware/pyvmomi-community-samples/tree/298bf74446f3fcc5743d6435763ff6dc16ab4cbc/samples)中的示例代码,但没有找到相关内容。 请指点我。

2 个答案:

答案 0 :(得分:1)

让我们说Virtualachine的名字是: 1001-web1.myhost.com

然后你想要把它装上的HostSystem是: host1.myesxhost.com

主持人有一个名为 Local1

的数据存储区

主持人位于名为: Prod

的文件夹中

您需要将文件从VM获取到Local1数据存储区。我会让你想出这一部分。需要将它们放入名为的文件夹中: 1001-web1.myhost.com

接下来,您需要在清单中找到文件夹 Prod 和HostSystem host1.myesxhost.com ,这样您就拥有了ManagedObjectRef。您可以使用searchIndex.FindByDnsName查找主机,使用searchIndex.FindByInventoryPath查找文件夹(或其他一些方法..)

找到文件夹 Prod 后,您可以使用RegisterVM_Task注册虚拟机。

si = connect.SmartConnect(xxx)
host = si.content.searchIndex.FindByDnsName(None,"host1.myesxhost.com", False)
folder = si.content.searchIndex.FindByInventoryPath(xxx)
task = folder.RegisterVM_Task(path="[Local1] 1001-web1.myhost.com/1001-web1.myhost.com.vmx", name="new vm name", asTemplate=False, pool=None, host=host)

从这里开始,你应该能够监控任务的成功过程,task.info.result将包含新VM的MOREF。

这是伪代码,因此语法可能会关闭,但这是您必须遵循的过程。

答案 1 :(得分:0)

如果您知道vmx文件的数据存储路径,则可以使用以下命令:

from pyVim import folder

folder.Register("[datastore]TestVM/TestVM.vmx")