我想知道是否有一个 KVM API,它允许您使用简单的命令从 python 脚本启动 KVM 虚拟机。
我的 Python 脚本执行一系列检查以查看我们是否需要启动特定 VM,如果需要,我想启动 VM。
我现在需要的只是找到 API 调用,但我无法在 libvirt 网站中找到一个简单的调用来启动它们。有人知道这是否可能吗?
您可以使用 libvirt 的 python API 绑定中的 create() 函数:
import libvirt
#connect to hypervisor running on localhost
conn = libvirt.open('qemu:///system')
dom0 = conn.lookupByName('my-vm-1')
dom0.create()
基本上,python API 是 C API,由 libvirt.C_API_CALL 减去 virConnect 部分或 conn.C_API_CALL 减去 virDomain 部分调用。
请参阅libvirt API 创建调用和此处。
最简单的方法,虽然可能不是最好的推荐方法是使用 os.system 使用 python 来调用 qemu-kvm。这种方法的缺点是您必须手动管理 VM。
使用 libvirt,您首先必须通过调用 virt-install 来定义一个域。
virt-install \
--connect qemu:///system \
--virt-type kvm \
--name MyNewVM \
--ram 512 \
--disk path=/var/lib/libvirt/images/MyNewVM.img,size=8 \
--vnc \
--cdrom /var/lib/libvirt/images/Fedora-14-x86_64-Live-KDE.iso \
--network network=default,mac=52:54:00:9c:94:3b \
--os-variant fedora14
我直接从http://wiki.libvirt.org/page/VM_lifecycle
创建域后,您可以使用它virsh start MyNewVM
来启动 VM。使用这种方法,管理虚拟机要容易得多。
如果需要管理 KVM,可以使用 virsh 命令。这是 virsh 命令的列表;
列表已删除,因为它的格式不正确
您可以使用 virsh 的帮助列出所有选项,其中 start 选项可能会对您有所帮助。
如果您使用 python 脚本来管理您的 KVM,我建议您也通过以下脚本。它会给你一个好主意。http://russell.ballestrini.net/series/virt-back/
似乎使用 libvirt 或调用 [qemu-]kvm 命令是 pythonistas 的两种选择。您可能会在 kvmtools 项目代码中找到有趣的片段:http ://www.linux-kvm.org/page/Kvmtools (参见 ./kvmtools/kvm/build_command.py 和 ./kvmtools/kvm/action.py 中的 kvm_boot_action使用子进程模块而不是 os.system)