概要
rbVmomi を使って VM の vMotion をしてみました
今回は MigrateVM_Task を使って vMotion しています
環境
- Ubuntu 16.04.3
- Ruby 2.3.1p112
- gem 2.5.1
- rbvmomi 1.11.3
- vCenter 6.5
コード
require 'rbvmomi'
vim = RbVmomi::VIM.connect(
host: '192.168.100.1',
user: 'vcenter-user',
password: 'vcenter-pass',
insecure: 'true'
)
dc = vim.serviceInstance.find_datacenter('datacenter') || fail('datacenter not found')
vm = dc.find_vm('directory/path/to/vm') || fail('VM not found')
host = nil
priority = :defaultPriority
dc.hostFolder.children.each { |cluster|
if cluster.is_a? RbVmomi::VIM::ClusterComputeResource
host = cluster.host.select { |host|
host.name == 'target_hostname'
}.first
end
}
vm.MigrateVM_Task(host: host, priority: priority).wait_for_completion
host と priority を指定しています
host は文字列をただ指定するだけではだめで HostSystem クラスのオブジェクトを設定する必要があります
今回はクラスタ直下にあるホストを取得していますが環境によってはフォルダを挟んでいる環境もあると思うので検索ロジックの部分は必要に併せて変更してください
最後に
MigrateVM_Task を使って rbVmomi で vMotion してみました
ちなみに MigrateVM_Task は vCenter 6.5 では deprecated になっているので RelocateVM_Task を使うようにしましょう
0 件のコメント:
コメントを投稿