【问题标题】:How can I export a VirtualBox machine to OVA appliance using Python?如何使用 Python 将 VirtualBox 机器导出到 OVA 设备?
【发布时间】:2016-11-15 12:17:05
【问题描述】:

我需要创建(导出)一个虚拟机 (VirtualBox) 到 OVA/OVF 设备。

我尝试像这样使用IMachine.export_to() 方法(通过pyvbox wrapper):

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。

更新

说明顺序错误。请参阅下面写的我的答案。

【问题讨论】:

  • 对问题进行了重新排序,并修复了一些拼写和语法问题。此外,“ova”标签的含义似乎与您的想法不同。

标签: python virtual-machine virtualbox ovf appliance


【解决方案1】:

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

文档引用:

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

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

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

最后,使用路径规范调用 write() 以获取 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2022-12-11
      • 2022-10-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      相关资源
      最近更新 更多