快速操作Virtual Machine的幾個方法

除了直接撰寫原生的C程式語言,以呼叫libvirt API的方式來操作VM之外,其實最簡單的方法是透過virsh所提供的指令來完成。大部份的工作其實使用virsh的指令集都可以做到。virsh是隨附在libvirt package中用來協助管理者執行libvirt API的一組工具程式集,可以透過它的文字式交談介面來完成工作,也可以在終端機中的命令提示字元使用這些指令。完整的virsh command連結在此:http://libvirt.org/sources/virshcmdref/html-single/。以下是簡易的操作過程:

[code lang=”bash”]
[root@ncu-note python_libvirt]# virsh list –all
Id 名稱 狀態
—————————————————-
– vm-cen 關機
– vm-cen-clone 關機
– winxp 關機

[root@ncu-note python_libvirt]# virsh start vm-cen
區域 vm-cen 已開啟

[root@ncu-note python_libvirt]# virsh list –all
Id 名稱 狀態
—————————————————-
2 vm-cen 執行中
– vm-cen-clone 關機
– winxp 關機

[root@ncu-note python_libvirt]#
[/code]

然而,除了virsh command之外,其實透過Python的交談式介面也可以完成上述的工作,除了直接操作的指令之外,因為Python語言本身的功能,直在接Python中就可以透過變數和流程控制指令,進行更完整的操作。

[code lang=”python”]
[root@ncu-note python_libvirt]# python
Python 2.7.5 (default, Jun 24 2015, 00:41:19)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import libvirt
>>> conn = libvirt.open("qemu:///system")
>>> doms = conn.listAllDomains()
>>> for dom in doms:
… print "ID: ", dom.ID(), ", Name: ", dom.name(), ", UUID:", dom.UUIDString()

ID: 2 , Name: vm-cen , UUID: 74d93d74-089d-4426-be90-8e374a16bc53
ID: -1 , Name: winxp , UUID: 406539b9-cb6a-4be1-9234-62674c20c159
ID: -1 , Name: vm-cen-clone , UUID: f02fc808-8497-4010-87ac-c8cefbd03ac9
>>>
[/code]

只要在操作之前import libvirt即可。所有的libvirt API幾乎都已被包在libvrt-python之中,也因此就可以透過Python程式碼的方式來先操作看看,沒有問題再把它寫片.py的程式碼中即可,就像是我們之前的幾篇文章所介紹的一樣。非常方便。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *