2012-09-03 23 views
5

Mi chiedevo se esiste un'API KVM che consente di avviare una macchina virtuale KVM utilizzando un semplice comando, da uno script python.API KVM per avviare la macchina virtuale

Il mio script Python esegue una serie di controlli per vedere se è necessario avviare una VM specifica e vorrei avviare una VM se necessario.

Tutto ciò di cui ho bisogno ora è trovare le chiamate API, ma non riesco a trovare una semplice chiamata per avviarle all'interno del sito Web di libvirt. Qualcuno sa se questo è possibile?

risposta

2

Il modo più semplice, anche se probabilmente non il modo migliore, è usare os.system usando python per invocare qemu-kvm. Questo metodo avrà lo svantaggio di dover gestire manualmente la VM.

Utilizzando libvirt, è necessario definire un dominio chiamando 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 

Ho scelto questo direttamente dal http://wiki.libvirt.org/page/VM_lifecycle

Una volta creato il dominio, è possibile utilizzare virsh start MyNewVM per avviare la macchina virtuale. Utilizzando questo metodo, è molto più semplice gestire la VM.

+0

Dato che attualmente non utilizzo la mia macchina, ho provato a rispondere per esperienza ... Una volta tornato proverò a fornirti ulteriori informazioni dettagliate – neorg

+0

Grazie per la risposta. L'os.system è qualcosa che ho già preso in considerazione, e non avrei bisogno di usare virsh per farlo, per esempio potrei semplicemente fare: "os.system (" sudo/usr/local/kvm/bin/qemu disk. img -m 1024 ")". Speravo solo in un modo più pulito per farlo da python, un modulo che semplicemente permette di chiamare KVM e avviare la macchina virtuale. – user1479836

+0

Una correzione minore, il metodo che hai menzionato non abilita la virtualizzazione dell'hardware ... se devi effettivamente usare kvm, aggiungi --enable-kvm – neorg

8

È possibile utilizzare la funzione di creare() dalle rilegature pitone API di libvirt:

import libvirt 

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

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

fondamentalmente l'API di Python è l'API C, chiamato dal libvirt.C_API_CALL meno la parte o meno conn.C_API_CALL virConnect la parte virDomain.

vedere the libvirt API create call e here.

0

Sembra che usare libvirt o chiamare [qemu-] comando kvm siano le due alternative per pythonistas. Potresti trovare frammenti interessanti nel codice progetto kvmtools: http://www.linux-kvm.org/page/Kvmtools (vedi ./kvmtools/kvm/build_command.py e kvm_boot_action in ./kvmtools/kvm/action.py facendo uso del modulo subprocess invece di os.system)

0

puoi usare i comandi virsh se devi gestire il tuo KVM. ecco la lista dei comandi virsh;

elenco eliminato perché non era venuta nel formato corretto

è possibile utilizzare l'aiuto di virsh per elencare tutte le opzioni, ci iniziamo opzione potrebbe aiutare.

se si utilizza lo script python per la gestione di KVM, suggerirei di leggere anche il seguente script. ti fornirà una buona idea. http://russell.ballestrini.net/series/virt-back/

Problemi correlati