0

我需要创建(导出)一个虚拟机(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。

更新

指令顺序错误。请参阅下面写的我的答案。

4

2 回答 2

0

根据 pyvbox 文档,它只能导出为 OVF 格式,但这并不重要,这取决于你想用它做什么。

文档引用:

与导入一样,首先调用 IVirtualBox.create_appliance() 创建一个空的 IAppliance 对象。

对于您要导出的每台机器,使用您刚刚创建的 IAppliance 对象调用 IMachine.export_to()。每个此类调用都会在设备内创建一个 IVirtualSystemDescription 实例。

如果需要,请为每个虚拟系统(机器)调用 IVirtualSystemDescription.set_final_values() 以覆盖 IMachine.export_to() 例程提出的建议。

最后,使用路径规范调用 write() 以写入 OVF 文件。

如果您遇到困难,请随时分享您的代码。

于 2016-11-15T13:04:37.610 回答
0

解决了

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')
于 2016-11-15T17:09:56.493 回答