Edited at

VMware ESX仮想マシンをコマンドで操作

More than 3 years have passed since last update.

自宅ではESXを使っています。

デスクトップはMacを使っているのですが、MacではvSphere Clientが使えず、仮想マシンの起動・停止のためだけにWindowsマシンを使うのも面倒なので、コマンドで操作する方法を調べてみたのでメモ。

SSHでESXにログインできることが前提です。


ESXで使えるコマンド


  • vim-cmd: いろいろできるコマンド。基本的な操作はこれを使えばよさそう。

  • esxcli: ネットワークやホストの操作が可能

  • vmkfstools: vmdk等のディスクイメージ操作


vim-cmdコマンド


コマンド体系

以下のように、操作する対象によってグループがわかれているようです。

~ # vim-cmd

Commands available under /:
hbrsvc/ internalsvc/ solo/ vmsvc/
hostsvc/ proxysvc/ vimsvc/ help


コマンドの実行方法

グループとコマンドを以下のように指定して実行

~ # vim-cmd vmsvc/getallvms


vim-cmd vmsvc/xxx で使えるコマンドの一覧

VMの操作はvmsvc以下のコマンドで実行できます。だいたい名前を見れば分かりそうです。

~ # vim-cmd vmsvc

Commands available under vmsvc/:
acquiremksticket get.snapshotinfo
acquireticket get.spaceNeededForConsolidation
connect get.summary
convert.toTemplate get.tasklist
convert.toVm getallvms
createdummyvm gethostconstraints
destroy login
device.connection logout
device.connusbdev message
device.disconnusbdev power.getstate
device.diskadd power.hibernate
device.diskaddexisting power.off
device.diskremove power.on
device.getdevices power.reboot
device.toolsSyncSet power.reset
device.vmiadd power.shutdown
device.vmiremove power.suspend
devices.createnic power.suspendResume
disconnect queryftcompat
get.capability reload
get.config setscreenres
get.config.cpuidmask snapshot.create
get.configoption snapshot.dumpoption
get.datastores snapshot.get
get.disabledmethods snapshot.remove
get.environment snapshot.removeall
get.filelayout snapshot.revert
get.filelayoutex snapshot.setoption
get.guest tools.cancelinstall
get.guestheartbeatStatus tools.install
get.managedentitystatus tools.upgrade
get.networks unregister
get.runtime upgrade


コマンドのヘルプ

以下のようにしてヘルプを参照できます。

~ # vim-cmd help vmsvc/getallvms

Usage: getallvms

~ # vim-cmd help vmsvc/power.on

Usage: power.on vmid

Power on the specified virtual machine.


コマンドの実行例

VM操作のコマンド実行の流れは


  1. vmsvc/getallvm で vmidを取得

  2. vmidを指定して各種操作を実行


VMの一覧取得

~ # vim-cmd vmsvc/getallvm

こんな感じででてきます。

~ # vim-cmd vmsvc/getallvms

Vmid Name File Guest OS Version Annotation
1008 vCenter Server Appliance [datastore1] vCenter Server Appliance/vCenter Server Appliance.vmx sles11_64Guest vmx-07 VMware vCenter Server Appliance
1009 Windows 8.1 (x64) [datastore1] Windows 8.1 (x64)/Windows 8.1 (x64).vmx windows8_64Guest vmx-08
1012 NetScaler vpx01 [datastore1] NetScaler vpx01/NetScaler vpx01.vmx solaris10_64Guest vmx-07
944 RHEL6.1 [datastore1] RHEL6.1/RHEL6.1.vmx rhel6_64Guest vmx-07


VMの起動

vmid 944を指定してRHEL6.1を起動

~ # vim-cmd vmsvc/power.on 944

Powering on VM:


電源状態の確認

電源ONされたことを確認

~ # vim-cmd vmsvc/power.getstate 944

Retrieved runtime info
Powered on


ステータスや設定情報の確認

以下のコマンドでステータスや設定が確認できます。

~ # vim-cmd vmsvc/get.summary vmid

以下のように、かなり詳細な情報が確認できます。

~ # vim-cmd vmsvc/get.summary 944

Listsummary:

(vim.vm.Summary) {
dynamicType = <unset>,
vm = 'vim.VirtualMachine:944',
runtime = (vim.vm.RuntimeInfo) {
dynamicType = <unset>,
device = (vim.vm.DeviceRuntimeInfo) [
(vim.vm.DeviceRuntimeInfo) {
dynamicType = <unset>,
runtimeState = (vim.vm.DeviceRuntimeInfo.VirtualEthernetCardRuntimeState) {
dynamicType = <unset>,
vmDirectPathGen2Active = false,
vmDirectPathGen2InactiveReasonOther = (string) [
"vmNptIncompatibleNetwork"
],
vmDirectPathGen2InactiveReasonExtended = <unset>,
},
key = 4000,
}
],
host = 'vim.HostSystem:ha-host',
connectionState = "connected",
powerState = "poweredOn",
faultToleranceState = "notConfigured",
dasVmProtection = (vim.vm.RuntimeInfo.DasProtectionState) null,
...


esxcliコマンド


ESXホストのシャットダウン

# いきなりはshutdownできない

~ # esxcli system shutdown poweroff -r maintenance
System is not in maintenance mode. Cannot perform requested operation.

# まずはmaintanance modeにする
~ # esxcli system maintenanceMode get
Disables
~ # esxcli system maintenanceMode set --timeout 0 --enable yes
~ # esxcli system maintenanceMode get
Enabled

# esxcliからシャットダウン。poweroffかrebootが可能
~ # esxcli system shutdown --help
Usage: esxcli system shutdown {cmd} [cmd options]

Available Commands:
poweroff Power off the system. The host must be in maintenance mode.
reboot Reboot the system. The host must be in maintenance mode.

# -rオプションで理由の指定が必須
~ # esxcli system shutdown poweroff --help
Usage: esxcli system shutdown poweroff [cmd options]

Description:
poweroff Power off the system. The host must be in maintenance mode.

Cmd options:
-d|--delay=<long> Delay interval in seconds
-r|--reason=<str> Reason for performing the operation (required)

# poweroff 実行
~ # esxcli system shutdown poweroff -r maintenance

一連のコマンド

esxcli system maintenanceMode get

esxcli system maintenanceMode set --timeout 0 --enable yes
esxcli system maintenanceMode get
esxcli system shutdown poweroff -r maintenance


参考

かなりよくまとまった記事がいくつかあるので、あとはこちらを見れば大抵のことはできそう。