2012-09-03 25 views
5

Tôi đã tự hỏi liệu có một KVM API cho phép bạn khởi động một máy ảo KVM bằng cách sử dụng một lệnh đơn giản, từ một tập lệnh python.KVM api để khởi động máy ảo

Kịch bản Python của tôi thực hiện một loạt các kiểm tra để xem có cần khởi động một máy ảo cụ thể hay không và tôi muốn khởi động máy ảo nếu cần.

Tất cả những gì tôi cần bây giờ là tìm các cuộc gọi API, nhưng tôi không thể tìm thấy một cuộc gọi đơn giản để bắt đầu chúng trong trang web libvirt. Có ai biết nếu điều này là có thể?

Trả lời

2

Cách đơn giản nhất, mặc dù có lẽ không phải là cách được khuyên dùng tốt nhất là sử dụng hệ thống os.system sử dụng python để gọi qemu-kvm. Phương pháp này sẽ có những bất lợi mà bạn sẽ phải tự quản lý VM.

Sử dụng libvirt, trước tiên bạn sẽ phải xác định miền bằng cách gọi 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 

Tôi đã nhặt này trực tiếp từ http://wiki.libvirt.org/page/VM_lifecycle

Một khi bạn tạo tên miền, bạn có thể sử dụng virsh start MyNewVM để bắt đầu VM. Sử dụng phương pháp này, việc quản lý VM dễ dàng hơn nhiều.

+0

Vì hiện tại tôi không sử dụng máy của riêng mình nên tôi đã cố gắng trả lời từ trải nghiệm ... Khi tôi quay lại sẽ cố gắng cung cấp cho bạn chi tiết hơn về số tiền – neorg

+0

Cảm ơn bạn đã trả lời. Os.system là một cái gì đó tôi đã xem xét, và tôi sẽ không cần phải sử dụng virsh để làm điều đó, ví dụ tôi chỉ có thể làm: "os.system (" sudo/usr/local/kvm/bin/qemu đĩa. img -m 1024 ")". Tôi đã chỉ hy vọng cho một cách sạch hơn để làm điều đó từ python, một mô-đun mà chỉ đơn giản là cho phép gọi KVM và bắt đầu máy ảo. – user1479836

+0

Một sửa đổi nhỏ, phương pháp bạn đề cập không cho phép ảo hóa phần cứng ... nếu bạn thực sự cần sử dụng kvm, hãy thêm --enable-kvm – neorg

8

Bạn có thể dùng tạo() chức năng từ bindings python API của libvirt:

import libvirt 

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

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

cơ bản API python là API C, gọi bằng libvirt.C_API_CALL trừ virConnect phần hoặc conn.C_API_CALL trừ phần virDomain.

xem the libvirt API create callhere.

0

Có vẻ như sử dụng libvirt hoặc gọi lệnh [qemu-] kvm là hai lựa chọn thay thế cho pythonistas. Có thể bạn có thể tìm thấy các đoạn mã thú vị trong mã dự án kvmtools: http://www.linux-kvm.org/page/Kvmtools (xem ./kvmtools/kvm/build_command.py và kvm_boot_action trong ./kvmtools/kvm/action.py sử dụng mô-đun subprocess thay vì os.system)

0

bạn có thể sử dụng lệnh virsh nếu bạn cần quản lý KVM của mình. đây là danh sách các lệnh virsh;

danh sách bị xóa bởi vì nó đã không đến trong định dạng thích hợp

bạn có thể sử dụng sự giúp đỡ từ virsh để liệt kê tất cả các tùy chọn, có bắt đầu lựa chọn có thể giúp bạn.

nếu bạn đang sử dụng tập lệnh python để quản lý bạn KVM, tôi cũng khuyên bạn nên xem qua tập lệnh sau. nó sẽ cung cấp cho bạn một ý tưởng tốt. http://russell.ballestrini.net/series/virt-back/

Các vấn đề liên quan