我一直在尝试使用Python中现有vm的.vmx和.vmdk文件创建一个新的vm,使用pyvmomi模块。我是pyvmomi的新手,没有太多关于pyvmomi的在线帮助。我已经检查了github(https://github.com/vmware/pyvmomi-community-samples/tree/298bf74446f3fcc5743d6435763ff6dc16ab4cbc/samples)中的示例代码,但没有找到相关的东西。请给我指点。
发布于 2015-03-24 02:01:25
假设虚拟机的名称是:1001-web1.myhost.com
那么你想放在上面的HostSystem是:host1.myesxhost.com
主机有一个名为:Local1的数据存储区
主机位于名为Prod的文件夹中
您需要将文件从虚拟机放入Local1数据存储区。我会让你弄清楚这部分的。需要将它们放在名为1001-web1.myhost.com的文件夹中
接下来,您需要在清单中找到文件夹Prod和HostSystem HostSystem,以便获得它们的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的更多信息。
这是伪代码,因此语法可能会关闭,但这是您必须遵循的过程。
发布于 2015-09-07 15:45:48
如果您知道vmx文件的数据存储区路径,则可以使用以下命令:
from pyVim import folder
folder.Register("[datastore]TestVM/TestVM.vmx")https://stackoverflow.com/questions/29213289
复制相似问题