KVMのゲストを複製した後、MACアドレスを書き換える方法いろいろ+スクリプトで自動化
基本的には、virt-cloneした後にいろいろする。
(virt-manager上でクローンした後に行うのも同じ)
- 直接マウントして書き換える
- raw形式ならそのままマウントして書き換える
- qcow2形式ならqemu-nbdを使ってマウントして書き換える
- libguestfs経由で書き換える
結論としては、今から利用するならlibguestfsを使うほうが便利。CentOS6.2以降であればyumでインストールできる。
以下、いくつか使ってみたツール類。
RHEL5.x/RHEL6.0 の KVM では、virt-clone コマンドにより仮想マシンの複製が可能ですが、この場合、ゲスト OS のホストネームやネットワーク設定などは、別途、手動で変更する必要があります。 添付のスクリプト kvmclone.pl は、virt-clone による仮想マシンの複製とゲスト OS のネットワーク設定の変更を自動化して行います。
・virt-cloneも一括で行えるので便利
・raw形式のHDDでないと利用できない
・引数をすべて指定するのはちょっと面倒
・eth0だけ対応
・かなりいけてるけどシンプロビジョニングは今回考えてない
・eth0だけ対応
・eth0とeth1の2つのデバイス
・all python
今回はインターフェースを2つ利用したいものがあったので、最後のものを参考に改修して使ってみた。
edit-vm-network-setting.py
・(変更)rootデバイスを自動検出
edit-vm-hostname.py
・(追加)hostnameを変更するスクリプト
kvmclone
・(追加)virt-clone から起動まで行うスクリプト
kvmclone original_domain new_domain new_ip_eth0 new_ip_eth1
こんな感じでさくっとコピーして起動まで行きます。KVMホストがCentOS6.2、ゲストがCentOS5.4の環境で確認。
使うには以下のライブラリをYumでインストール。
yum install python-libguestfs libvirt-python python-lxml
同じネットワークアドレス内で使うだけなら、十分かな。eth0しか必要ない場合は、適当にコメントアウトして使って下さい。
時間があればIBMのものとかを参考に、ゲストがCent6系とかの場合にも対応してみたい。
libguestfs/guestfsのmanとか
guestfs-recipes - libguestfs, guestfish and virt tools recipes
guestfs-python - How to use libguestfs from Python