VMをコピーして使うとIPアドレスとかマシン名とか色々被る。
ディスクイメージファイルをコピる。
cd /var/lib/libvirt/images
cp VMsrc.qcoq2 VMdis.qco12
定義ファイルをコピる。
/etc/libvirt/qemu/VMsrc.xml
/etc/libvirt/qemu/VMdis.xml
定義ファイルの中も名前を変える
<name>VMdis</name>
<uuid>後述</uuid>
<source file=’/var/lib/libvirt/images/VMdis.qcow2’/>
<mac address=’後述‘/>
で後述なのですが・・・
28.8. 新規の特有 MAC アドレスを生成
に書いてあるpythonのコードは
./macgen.py: 行 4: import: コマンドが見つかりません
./macgen.py: 行 6: 予期しないトークン `(‘ 周辺に構文エラーがあります
./macgen.py: 行 6: `def randomMAC():’
とエラーになって使えません。
ん
sh ./macgen.py
じゃダメだよね。
python ./macgen.py
File "./macgen.py", line 13 print randomMAC() ^
まだダメらしい。
pythonの仮想環境をインスト。
これで、
# pyenv versions
でインスト済みのバージョンを調べ、無かったら・・・
# pyenv install –list
でインストできるバージョンを調べ、
# pyenv install インストールするバージョン
※要らないバージョンは uninstall で削除。
でインストした後に
# pyenv local 3.4.3
# python –version で確認。
とすれば、自分だけインストールした中から好きなpythonを使える。
っと便利になったところで・・・結局は・・・
print randomMAC()
この辺はRedHatがそのような文化らしいので、
CentOSでは
print (randomMAC())
と変えなくてはいけないらしい。
pyenv での変更は ユーザのホームディレクトリィの.pyなんたらファイルを2個消して再ログインすればOK。
これでMAC ADDRESSはGET。
virtinst.utilパッケージを使うともっと良い!と書いてあったが
ImportError: No module named virtinst.util
そんなものはここにはなかった。
find / -name *virtinst* -print に願いをかけたら
/usr/share/virt-manager/virtinst と答えが返ってきた
中にちゃんと util.py もある。
export PYTHONPATH=”/usr/share/virt-manager:$PYTHONPATH” の後もエラー
util.py には randomUUIDは、あるものの パラメータ CONN が必要で・・・
ってソース読んだらテスト用のパラメータだった。 orz
uuidToStringとrandomMACが無かった!
でもUUIDは取れたし、MACアドレスはサンプルに載っていたので
new_uuid_mac.pyは
※以下はRedHatの参考コード+赤い文字は書き換えた部分
#!/usr/bin/python ※which pythonで見つかったパスを設定する # -*- coding: utf-8; mode: python; -*- # # export PYTHONPATH="/usr/share/virt-manager:$PYTHONPATH" import sys; sys.path.append('/usr/share/virt-manager') import virtinst.util; print("MAC UUID: " + virtinst.util.randomUUID("dummy")) import random def randomMAC(): mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] return ':'.join(map(lambda x: "%02x" % x, mac)) print("MAC ADDRESS: " + randomMAC())
でいいんじゃないかな?
で、
結局は
pythonの新バージョンとか仮想環境の準備は全く不要でした。
あ、マシン名は
ネットワークの接続をハズして・・・
virsh start VMdis
virsh console VMdis
vi /etc/hostname で書き換えてreboot 起動せずに/etc/hostnameを書き換えたい場合はループデバイスを使ってマウントしてしまえばいいけど CentOS7では自動作成したディスクでは皆同じなので、ゲスト側のボリュームグループ名を一時的に書き換えてからマウントすることになる。
というわけで、
面倒な気がしても
実際には
キックスタートファイル
を作って
virt-installで新インストした方がよさそうだ。