Как я могу экспортировать машину VirtualBox в устройство OVA, используя Python?
Мне нужно создать (экспортировать) виртуальную машину (VirtualBox) в устройство OVA/OVF.
Я пытался использовать IMachine.export_to()
метод (через оболочку pyvbox), например:
import virtualbox
from virtualbox.library import ExportOptions
vbox = virtualbox.VirtualBox()
vm = vbox.find_machine(VM_NAME)
appliance = vbox.create_appliance()
p = appliance.write('ovf-2.0',
[ExportOptions.create_manifest],
'~/tmp/test5.ovf')
desc = slredmine.export_to(appliance, '~/tmp/test5.ovf')
Приведенный выше код не делает то, что я хочу: ova/ovf не создается.
ОБНОВИТЬ
Порядок инструкций был неверным. Смотрите мой ответ, написанный ниже.
2 ответа
Решаемая
import virtualbox
from virtualbox.library import ExportOptions
VM_NAME = 'foovmname'
vbox = virtualbox.VirtualBox()
vm = vbox.find_machine(VM_NAME)
appliance = vbox.create_appliance()
desc = slredmine.export_to(appliance, VM_NAME)
p = appliance.write('ovf-2.0',
[ExportOptions.create_manifest],
'~/tmp/test5.ovf')
Согласно документации pyvbox, он может экспортировать только в формат OVF, но это не должно иметь большого значения, в зависимости от того, что вы хотите с ним делать.
Документация цитата:
Как и при импорте, сначала вызовите IVirtualBox.create_appliance(), чтобы создать пустой объект IAppliance.
Для каждой машины, которую вы хотите экспортировать, вызовите IMachine.export_to() с объектом IAppliance, который вы только что создали. Каждый такой вызов создает один экземпляр IVirtualSystemDescription внутри устройства.
При желании вызовите IVirtualSystemDescription.set_final_values () для каждой виртуальной системы (машины), чтобы переопределить предложения, сделанные процедурой IMachine.export_to().
Наконец, вызовите write() со спецификацией пути, чтобы записать файл OVF.
Не стесняйтесь поделиться своим кодом, если вы застряли.