仮想環境を自動化する方法として、
cobblerとかKoanとかあって便利に使わせてもらっているのですが、
そもそもlibvirtについての知識があまりなかったので、勉強がてらに、
python使ってちょっと触れてみました。
※Koanは本家のリンクが切れていたようなので、mizzyさんのサイトへリンク張らせてもらいました。
まず、kvmの環境があることが前提になります。
kvmの環境とかは、参考になるサイトがいっぱいあるので、割愛します。
後は、ちょっとpython試すのに便利なbpython使います。
モジュール名とか関数とかいろいろと補完効くので、便利です。
# モジュールをインポートします
>>> import libvirt
>>> import sys
# モジュールについて調べたいときは、
>>> help(libvirt)
# VMM(Virtual Machine Manager)に接続
>>> conn = libvirt.open('qemu:///system')
# 接続でてきるかどうか
# instanceの情報が出てきたんで、接続できたんだろうと思う
>>> print conn
<libvirt.virConnect instance at 0x2848638>
# ドメインIDを取得してみる
>>> conn.listDomainsID()
[1, 8, 12, 2, 3]
# ドメインIDから各ゲストの接続情報を取得
>>> conn.lookupByID(1)
<libvirt.virDomain instance at 0x7f591f2daf38>
# 接続情報を使っていろんな情報が取れるっぽい
>>> vm1 = conn.lookupByID(1)
>>> vm1.name() ## 名前
sl6.uguis.org
>>>vm1.info() ## 情報(1番目の番号は、起動状態っぽい)
[1, 1048576L, 1048576L, 1, 15552390000000L]
# 試しにサスペンド
>>> vm1.suspend()
0
>>>vm1.info() ## 情報(1番目の番号が3に変わった)
[3, 1048576L, 1048576L, 1, 15552390000000L]
# 元に戻す方法がわからなかったが、resume()で元に戻った
>>> vm1.resume()
0
>>>vm1.info() ## 情報(1番目の番号が1に変わった)
[1, 1048576L, 1048576L, 1, 15552390000000L]
## virt-managerでGUIの表示でもステータスが変わるのを確認できました。
## 他にも以下のような値の取得や操作ができそう
ID OSType UUID
attachDevice attachDeviceFlags autostart
connect coreDump create
detachDeviceFlags hasCurrentSnapshot hasManagedSaveImage
isPersistent isUpdated jobInfo
maxVcpus memoryParameters memoryPeek
migrateToURI name openConsole
revertToSnapshot save schedulerParameters
setMemory setMemoryParameters setSchedulerParameters
snapshotCreateXML snapshotCurrent snapshotListNames
undefine updateDeviceFlags vcpus
UUIDString XMLDesc abortJob
blockInfo blockPeek blockStats
createWithFlags destroy detachDevice
info interfaceStats isActive
managedSave managedSaveRemove maxMemory
memoryStats migrate migrateSetMaxDowntime
pinVcpu reboot resume
schedulerType setAutostart setMaxMemory
setVcpus setVcpusFlags shutdown
snapshotLookupByName snapshotNum suspend
vcpusFlags
もうちょっといろいろと試してみて、次回は何かスクリプトでも作ろうかと思います。
0 件のコメント:
コメントを投稿