govmomi/govcで簡単にESXiを操作出来てたらよかったんだけど

今北産業
・pyvmomi、そういうのもあるのか
・goでもあるんじゃね
・CLIツールがあった←今ココ（NEW!）

vCenterやESXiを操作するPythonのライブラリのpyvmomiというものがあります。
これでVMを作ったり電源操作したりと便利そうです。

http://sig9.hatenablog.com/entry/2017/11/01/000000

goならCLIツールであるんじゃねと探したらありました。

https://github.com/vmware/govmomi/tree/master/govc

govmomiの内部で使われているツールのようです。
リリースページで公開されているバイナリを落としてきて配置するだけです。

https://github.com/vmware/govmomi/releases

配置したら環境変数にユーザ/パスワード、IPアドレスをセットします。

```
C:\Users\xxx>set GOVC_INSECURE=1

C:\Users\xxx>set GOVC_USERNAME=xxxx

C:\Users\xxx>set GOVC_PASSWORD=xxxxxxxx

C:\Users\xxx>set GOVC_URL=IPアドレス/sdk
```

コマンドを実行してみます。

```
C:\Users\xxx>govc host.info
Name:              localhost.localdomain
  Path:            /ha-datacenter/host/localhost./localhost.localdomain
  Manufacturer:
  Logical CPUs:    2 CPUs @ 2304MHz
  Processor type:  Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
  CPU usage:       44 MHz (1.0%)
  Memory:          32657MB
  Memory usage:    2762 MB (8.5%)
  Boot time:       2018-01-05 20:47:18.21575 +0000 UTC
  State:           connected

C:\Users\xxx>
```

んほーーーーーーーいいじゃん！
使い方はここにありますが、

https://github.com/vmware/govmomi/blob/master/govc/USAGE.md

govc [Option] -h　で使い方がわかります。

```
C:\Users\xxx>govc guest.ls -h
Usage: govc guest.ls [OPTIONS] PATH

List PATH files in VM.

Examples:
  govc guest.ls -vm $name /tmp

Options:
  -cert=                        Certificate [GOVC_CERTIFICATE]
  -dc=                          Datacenter [GOVC_DATACENTER]
  -debug=false                  Store debug logs [GOVC_DEBUG]
  -dump=false                   Enable Go output
  -json=false                   Enable JSON output
  -k=true                       Skip verification of server certificate [GOVC_INSECURE]
  -key=                         Private key [GOVC_PRIVATE_KEY]
  -l=:                          Guest VM credentials [GOVC_GUEST_LOGIN]
  -persist-session=true         Persist session to disk [GOVC_PERSIST_SESSION]
  -s=false                      Simple path only listing
  -tls-ca-certs=                TLS CA certificates file [GOVC_TLS_CA_CERTS]
  -tls-known-hosts=             TLS known hosts file [GOVC_TLS_KNOWN_HOSTS]
  -u=https://@192.168.0.50/sdk  ESX or vCenter URL [GOVC_URL]
  -vim-namespace=urn:vim25      Vim namespace [GOVC_VIM_NAMESPACE]
  -vim-version=6.5              Vim version [GOVC_VIM_VERSION]
  -vm=                          Virtual machine [GOVC_VM]
  -vm.dns=                      Find VM by FQDN
  -vm.ip=                       Find VM by IP address
  -vm.ipath=                    Find VM by inventory path
  -vm.path=                     Find VM by path to .vmx file
  -vm.uuid=                     Find VM by UUID

C:\Users\xxx>
```

仮想マシン一覧

```
C:\Users\xxx>govc ls /*/vm/*
/ha-datacenter/vm/WIN12
/ha-datacenter/vm/CentOS7_2
/ha-datacenter/vm/CentOS7_3
/ha-datacenter/vm/Ubuntu
/ha-datacenter/vm/CentOS7_Controller
/ha-datacenter/vm/CentOS7_Compute
/ha-datacenter/vm/CentOS7

C:\Users\xxx>
```

起動中のマシンとマシン情報

```
C:\Users\xxx>govc find . -type m -runtime.powerState poweredOn
/ha-datacenter/vm/CentOS7_3

C:\Users\xxx>govc vm.info CentOS7
Name:           CentOS7
  Path:         /ha-datacenter/vm/CentOS7
  UUID:         564d55c2-76e3-c3df-e95b-3929fa949f85
  Guest name:   CentOS 7 (64-bit)
  Memory:       1024MB
  CPU:          2 vCPU(s)
  Power state:  poweredOff
  Boot time:    <nil>
  IP address:
  Host:         localhost.localdomain

C:\Users\xxx>
```

マシン起動ってあれ？

```
C:\Users\xxx>govc vm.power -on CentOS7
Powering on VirtualMachine:7... govc: ServerFaultCode: Current license or ESXi version prohibits execution of the requested operation.

C:\Users\xxx>
```

ぐわぁー、ライセンスの壁か...
無料版だからvSphere APIがread-onlyしかできないのか...
そういうことか...(´・ω・｀)

https://kb.vmware.com/s/article/2111426
https://blogs.vmware.com/vsphere/2012/02/introduction-to-the-vsphere-api-part-1.html

```
Licensing
Access to the vSphere API is governed by the variousvSphere Editions which
provides both read and write access to the API. If you are using vSphere
Hypervisor (free edition of ESXi), the vSphere API will only be available as read-only.
```