2012-09-03 167 views
5

我想知道是否有一個KVM API允許您使用簡單的命令從python腳本啓動KVM虛擬機。啓動虛擬機的KVM api

我的Python腳本執行一系列檢查來查看我們是否需要啓動特定的虛擬機,並且如果需要的話我想啓動虛擬機。

我現在需要的是找到API調用,但我找不到在libvirt網站中啓動它們的簡單調用。有誰知道這是否可能?

回答

2

最簡單的方法,雖然可能不是最好的推薦方法是使用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更容易。

+0

由於我目前沒有使用自己的機器,我試圖從經驗中回答...一旦我回來,會嘗試給你更詳細的insins – neorg

+0

謝謝你的迴應。 os.system是我已經考慮過的東西,我不需要使用virsh來完成它,例如我可以這樣做:「os.system(」sudo/usr/local/kvm/bin/qemu磁盤。 img -m 1024「)」。我只是希望有一個更簡潔的方式來從python中完成它,這個模塊只允許調用KVM並啓動虛擬機。 – user1479836

+0

稍有更正,您提到的方法不支持硬件虛擬化...如果您需要實際使用kvm,請添加--enable-kvm – neorg

8

您可以使用create()函數的libvirt的蟒蛇API綁定:

import libvirt 

#connect to hypervisor running on localhost 
conn = libvirt.open('qemu:///system') 

dom0 = conn.lookupByName('my-vm-1') 
dom0.create() 

基本蟒蛇API是C API,通過libvirt.C_API_CALL減去virConnect部分或conn.C_API_CALL減去叫virDomain部分。

參見the libvirt API create callhere

0

似乎使用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)

0

如果您需要管理KVM,則可以使用virsh命令。 這是virsh命令列表;

列表中刪除,因爲它不是在正確的格式來

可以使用的幫助的virsh列出所有的選項,有啓動選項可以幫助你。

如果您使用python腳本來管理您的KVM,我也會建議通過以下腳本。它會爲你提供一個好主意。 http://russell.ballestrini.net/series/virt-back/