2012-09-03 25 views
5

Me preguntaba si hay una API KVM que le permita iniciar una máquina virtual KVM usando un comando simple, desde una secuencia de comandos python.KVM api para iniciar la máquina virtual

La secuencia de comandos My Python realiza una serie de comprobaciones para ver si necesitamos o no iniciar una máquina virtual específica, y me gustaría iniciar una máquina virtual si es necesario.

Todo lo que necesito ahora es encontrar las llamadas a la API, pero no puedo encontrar una simple llamada para iniciarlas en el sitio web libvirt. ¿Alguien sabe si esto es posible?

Respuesta

2

La manera más simple, aunque probablemente no la mejor manera recomendada, es usar el sistema os usando python para invocar qemu-kvm. Este método tendrá la desventaja de que tendrá que administrar manualmente la máquina virtual.

Al usar libvirt, primero tendrá que definir un dominio llamando a 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 

he elegido este directamente de http://wiki.libvirt.org/page/VM_lifecycle

Una vez creado el dominio, puede utilizar virsh start MyNewVM para iniciar la máquina virtual. Usando este método, es mucho más fácil administrar la máquina virtual.

+0

Como actualmente no estoy usando mi propia máquina, he intentado responder por experiencia ... Una vez que regrese trataré de darle insns más detallados – neorg

+0

Gracias por su respuesta. El sistema os.system es algo que ya he considerado, y no necesitaría usar virsh para hacerlo, por ejemplo, podría hacer: "os.system (" disco sudo/usr/local/kvm/bin/qemu. img -m 1024 ")". Solo esperaba una forma más limpia de hacerlo desde Python, un módulo que simplemente permite llamar a KVM e iniciar la máquina virtual. – user1479836

+0

Una corrección menor, el método que mencionaste no habilita la virtualización de hardware ... si necesitas usar kvm, agrega --enable-kvm – neorg

8

Puede utilizar la función de crear() de las ataduras de la API de libvirt pitón:

import libvirt 

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

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

básicamente la API de Python es la API C, llamado por libvirt.C_API_CALL menos la parte o menos conn.C_API_CALL virConnect la parte virDomain.

ver the libvirt API create call y here.

0

Parece que usar libvirt o llamar al comando [qemu-] kvm son las dos alternativas para pythonistas. Puede ser que usted podría encontrar fragmentos interesantes en código del proyecto kvmtools: http://www.linux-kvm.org/page/Kvmtools (ver ./kvmtools/kvm/build_command.py y kvm_boot_action en ./kvmtools/kvm/action.py haciendo uso del módulo de subproceso en lugar de os.system)

0

puede usar comandos de virsh si necesita administrar su KVM. aquí está la lista de comandos de virsh;

lista borrado porque no venía en el formato apropiado

puede utilizar la ayuda de virsh para enumerar todas las opciones, hay opciones de inicio, podría ayudarle.

si está utilizando la secuencia de comandos python para administrar su KVM, le sugiero que también revise la siguiente secuencia de comandos. te dará una buena idea. http://russell.ballestrini.net/series/virt-back/

Cuestiones relacionadas