概要
rbVmomi を使って VM の vMotion をしてみました
今回は RelocateVM_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
}
migrate_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(host: host)
vm.RelocateVM_Task(spec: migrate_spec, priority: priority).wait_for_completion
RelocateVM_Task の場合 VirtualMachineRelocateSpec を引数に取ります
また今回は host のみを指定しているため単純なホスト間の vMotion になりますがストレージ情報も指定できます
ストレージ情報を指定すると Storage vMotion にすることができます
host の情報は MigrateVM_Task 同様 HostSystem の情報を指定する必要があります
最後に
RelocateVM_Task を使って rbVmomi から vMotion してみました
vSphere 6.5 からはこちらを使うことが推奨されています
0 件のコメント:
コメントを投稿