pyvmomiでVMのクローンを以前はやってみましたが、今回はLinux Prepを加えたクローンするスクリプトを作ってみました。
実行環境
項目 | バージョン |
---|---|
vCenter | 6.5.0 ビルド 4602587 |
pyvmomi | 6.5.0.2017.5.post1 |
python | 3.4.5 |
検証方針
centos
という仮想マシンを元にTEST
という仮想マシンを作成する。- クローン先は
esxi-03.local
というホストを指定します。 - クローンタスク完了後に
TEST
の状態を確認して設定した内容に間違いが無いか調べます。
Linux Prepについて
VMwareのLinux Prepを使うことで、クローン時にホスト名やネットワーク設定を同時に行うことが可能です。
ソース
ここでは Network settings.
にネットワーク設定をしています。
以下は、クローンでLinux Prepを実行するスクリプト例です。
処理の流れは以下のようになっています。
スクリプトで一時的にカスタマイズ仕様を作ってクローンメソッドに食わせています。
- LinuxPrepを作成
- ホスト名やたいむゾーンを設定するオブジェクト
- customizationIPSettingsを作成
- ネットワークを設定するオブジェクト
- RelocateSpecを作成
- 仮想マシンの移動先を設定するオブジェクト
- CloneSpecを作成
- 仮想マシンのクローン仕様を設定するオブジェクト
- クローン処理実行
- 実行したクローン処理のタスクを確認
- クローン処理の結果を出力
実行
(1) スクリプトを実行してみます。
1 2 3 4 |
$ ./example_clone_script.py -vc vcenter01.local -tvm centos -vn TEST -th esxi-03.local Password: Task結果: success |
問題なく終了したら success
が表示されます。
(2) クローンした仮想マシンにログインしてホスト名やネットワーク設定が出来ていることを確認します。
1 2 3 4 5 6 7 8 9 10 |
[root@TEST ~]# hostnamectl Static hostname: TEST (snip) [root@TEST ~]# ip a s ens192 | grep inet inet 10.1.0.1/24 brd 10.1.0.255 scope global ens192 [root@TEST ~]# cat /etc/resolv.conf (snip) nameserver 8.8.8.8 nameserver 10.1.0.1 |
問題なく設定されていました 🙂
vNICが複数ある場合は設定を customization_spec.nicSettingMap
の配列に数分入れる必要があります。