概要
前回 InstantClone をサクっと試してみました
実は InstantClone_Task
実行時に作成されたインスタントクローン VM に guestinfo を渡すことができます
gusetinfo は簡単に言えば GuestOS (例えば Ubuntu など) 上で参照することができる変数です
環境
- VCSA 6.7.0.20000 build 10244745
- ESXi 6.7.0 Update 1 (Build 10302608)
- Ruby 2.5.0p0
- rbvmomi (2.0.0)
guestinfo を指定する方法
spec に config を key/value 形式で並べるだけです
<spec>
<name>ic01</name>
<location></location>
<!-- ok -->
<config>
<key>guestinfo.ic.hoge</key>
<value xsi:type="xsd:string">guestinfo.ic.hoge</value>
</config>
<config>
<key>guestinfo.ic.fuga</key>
<value xsi:type="xsd:string">guestinfo.ic.fuga</value>
</config>
<config>
<key>guestinfo.iic.fuga</key>
<value xsi:type="xsd:string">guestinfo.iic.fuga</value>
</config>
<config>
<key>guestinfo.fuga</key>
<value xsi:type="xsd:string">guestinfo.fuga</value>
</config>
<!-- ng -->
<config>
<key>ic.fuga</key>
<value xsi:type="xsd:string">ic.fuga</value>
</config>
<config>
<key>fuga</key>
<value xsi:type="xsd:string">fuga</value>
</config>
</spec>
少しポイントがあります
渡せる key に制約があるようで必ず guestinfo
で始まっている必要がありました
もし制約違反していると値が GuestOS 側に渡りません
参照しても Invalid key name supplied
になります
また、存在しない key を指定すると No value found
になります
どうやって参照するの
vmware-tools の機能を使います
vmware-tools がインストールされていると vmware-rpctool
コマンドが使えます
実際にインスタントクローンされた VM にログインして以下のコマンドを叩いてみましょう
vmware-rpctool "info-get guestinfo.ic.hoge"
すると設定した value 側の値が取得できると思います
おまけ: rbvmomi でやってみた
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('u18_01') || fail('VM not found')
spec = {
name: "ic01", location: "",
config: [
{key: "guestinfo.ic.hoge", value: "hoge"},
{key: "guestinfo.ic.fuga", value: "fuga"}
]
}
ret = vm.InstantClone_Task(spec: spec).wait_for_completion
puts ret
spec の指定を mob で実行する spec に合わせるだけです
最後に
InstantClone_Task
時に gusetinfo を渡す方法を紹介しました
実はこれを応用すると前回紹介した InstantClone 時に IP アドレスがバッティングしてしまう問題を解決することができます
要するにネットワーク情報を guestinfo で渡してインスタントクローン VM が作成されたときにネットワークを設定するスクリプトを実行することでバッティングを解消するという流れになります
ちょっと力技感も強いですがこちらで紹介されていたのでほぼオフィシャルなのかなと思います
具体的なやり方も分かったら紹介したいと思います
0 件のコメント:
コメントを投稿