vSphere APIでVMware をlinuxから操作する

account作って、my vmwareからdownload

VMware vSphere CLI

vSphere Perl SDK for vSphere

というのからも別ファイルがdownloadできたけど、md5sum同じなので実体は同じだった。

基本的には/usr/bin/にinstallされたけど、いくつか(vmcontrol.plなど)は/usr/lib/vmware-vcli/apps/{general,host,performance,session,vm}
にinstallされたので適当にPATH追加しとくほうが良いかも。
AppUtilにはperl moduleが入っているだけだけど、気にせずサブディレクトリをPATHに打ち込むなら

export PATH=$PATH:`echo /usr/lib/vmware-vcli/apps/* | sed -e "s/ /:/g"`

などとしておく。


あとvcenter、ESXiサーバのSSL証明書の警告を無視するために環境変数設定しておく。

export PERL_LWP_SSL_VERIFY_HOSTNAME=0

とりあえずざっとコマンドメモ

## host 一覧
# vicfg-hostops --operation info --server vcenter.server.addr
## vm vmxのpath 一覧
# vmware-cmd -H host.server -l
## vm vmname, vmdk のpath、メモリなどの一覧
# vminfo.pl --server server.addr
## 仮想マシンの詳細
guestinfo.pl --server server.addr --operation display  --vmname vm.name
## データストア使用状況
dsbrowse.pl --server vcenter.addr 

引数の--server --username などは環境変数から渡すことも可能
VI_USERNAME, VI_PASSWORD など。


vmdkをmount

VMware vSphere 5.1 Virtual Disk Development Kit

VDDKのvmware-mountを使えば、vmdkファイルをmountして中身見れる。KVMのguestfish みたいな感じ


lvmの場合は工夫が必要


仮想マシンはshutdown しておく必要ある(当然)。(readonlyの場合はshutdownしなくても良いかもしれないけど、 起動中のvmdkファイルをいじるとファイルシステム壊れる可能性あり)

# vmware-mount -p /path/to/file.vmdk
### vmware-mount /path/to/file.vmdk パーティション番号 マウントポイント