Я пытался создать новую виртуальную машину с использованием существующих файлов виртуальной машины .vmx и .vmdk с хоста ESX в Python с использованием модуля pyvmomi. Я новичок в pyvmomi, и для pyvmomi не так много интерактивной помощи. Я проверил пример кода в github(https://github.com/vmware/pyvmomi-community-samples/tree/298bf74446f3fcc5743d6435763ff6dc16ab4cbc/samples), но ничего не найдено. Пожалуйста, дайте мне указатели.
создать виртуальную машину с помощью модуля pyvmomi из файлов .vmx и .vmdk
Ответы (2)
Допустим, имя Virtualachine: 1001-web1.myhost.com
Тогда хост-система, на которую вы хотите его поместить: host1.myesxhost.com
На хосте есть хранилище данных с именем: Local1.
Хост находится в папке с именем: Prod.
Вам нужно получить файлы с виртуальной машины в хранилище данных Local1. Я позволю тебе разобраться с этой частью. Их нужно поместить в папку с именем: 1001-web1.myhost.com
Затем вам нужно найти папку Prod и хост-систему 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 будет содержать MOREF новой виртуальной машины.
Это псевдокод, поэтому синтаксис может быть отключен, но вам придется следовать этому процессу.
Если вы знаете путь хранилища данных к файлу vmx, вы можете использовать следующее:
from pyVim import folder
folder.Register("[datastore]TestVM/TestVM.vmx")