我需要创建(导出)虚拟机(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。
更新
指示顺序错误。请参阅下面的答案。
答案 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')