概要
vSphere 6.7 から正式に InstantClone が使えるようになったので試してみました
Web Client からは使えないので mob と SOAP API (rbvmomi) から実行してみました
環境
- VCSA 6.7.0.20000 build 10244745
- ESXi 6.7.0 Update 1 (Build 10302608)
- Ruby 2.5.0p0
- rbvmomi (2.0.0)
mob から実行する
対象の VM に移動して methods 内から InstantClone_Task
を選択すれば OK です
条件としては対象の VM が起動している必要があります (停止中の VM に対して実行したところエラーになりました)
最低限必要な spec は以下の通りです
<spec>
<name>ic01</name>
<location>
</location>
</spec>
これで Invoke すれば InstantClone で VM が作られます
location を指定すれあ別のホストに作成することもできます
rbvmomi から実行する
プログラムからも実行してみました
- bundle init
- vim Gemfile
gem "rbvmomi"
bundle install --path vendor
- vim main.rb
require 'rbvmomi'
vim = RbVmomi::VIM.connect(
host: '192.168.100.30',
user: 'administrator@vsphere.local',
password: 'xxxxxxxxxxx',
insecure: 'true',
rev: '6.7.1'
)
dc = vim.serviceInstance.find_datacenter('Datacenter') || fail('datacenter not found')
vm = dc.find_vm('vm01') || fail('VM not found')
spec = {name: "ic01", location: ""}
ret = vm.InstantClone_Task(spec: spec).wait_for_completion
puts ret
bundle exec ruby main.rb
これだけです
rbvmomi で実施する場合は VIM.connect
する際に rev: '6.7.1'
の指定が必要です
WSDL から InstantClone_Task
を探すのですが rev:
を明示的に指定しないと探すことができずエラーになってしまいます
またパワーオンになっていないと以下のエラーが発生します
InvalidPowerState: The attempted operation cannot be performed in the current state (Powered off). (RbVmomi::Fault) (edited)
ちなみに WSDL の URL は https://192.168.100.30/sdk/vim.wsdl
という感じの URL で確認できます
最後に
InstanceClone_Task
を試してみました
いろいろ経緯とかを調べてみるとコンテナの需要が高まったのと CI/CD で使えないかという要望があったららしいです
なのであくまでも用途としては使い捨て VM という感じで使うのだと思います
一つ気になったのはインスタンスクローン後にクローン元の VM と同じ IP が振られる現象が多々ありました
ネットワークのインタフェースの MAC アドレスクローン直後は同一に見えてしまうため DHCP も同じ IP を払い出しているんだと思います
再起動したり一定時間経過すると異なる IP が振られたのですが、直後はどう対処すれば良いか不明でした
P.S どうやら GuestInfo の仕組みを使って VM ないで IP のリフレッシュ作業を行う必要があるようです
https://www.virtuallyghetto.com/2018/04/new-instant-clone-architecture-in-vsphere-6-7-part-2.html
おそらくこの方法が確実だと思われます
0 件のコメント:
コメントを投稿