如何使用Python将VirtualBox计算机导出到OVA设备?

时间:2016-11-15 12:17:05

标签: python virtual-machine virtualbox ovf appliance

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

答案 0 :(得分:0)

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

文档引用:

  

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

     

对于您要导出的每台计算机,请调用IMachine.export_to()   使用您刚刚创建的IAppliance对象。每个这样的呼叫创建   设备内部的一个IVirtualSystemDescription实例。

     

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

     

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

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

答案 1 :(得分: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')