自宅では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操作のコマンド実行の流れは
- vmsvc/getallvm で vmidを取得
- 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
参考
かなりよくまとまった記事がいくつかあるので、あとはこちらを見れば大抵のことはできそう。
- VMware ESXiをSSHでがんばるぞい(コマンドライン操作色々) - Qiita
- VMware ESXi vim-cmd Command: A Quick Tutorial | DoubleCloud => Private Cloud + Public Cloud
- VMware KB: Performing common virtual machine-related tasks with command-line utilities
- VMware KB: Powering on a virtual machine from the command line when the host cannot be managed using vSphere Client