2018年12月20日木曜日

vSphere 6.7 で InstantClone_Task を試してみた

概要

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 に対して実行したところエラーになりました)
instant_clone1.png

最低限必要な spec は以下の通りです

<spec>
   <name>ic01</name>
   <location>
   </location>
</spec>

instant_clone2.png

これで 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 件のコメント:

コメントを投稿