2019年5月23日木曜日

vcsim を使ってみた

概要

環境

  • macOS 10.14.4
  • golang 1.11.5
  • Ruby 2.6.2p47

vcsim インストール

  • go get -u github.com/vmware/govmomi/vcsim

govc がない場合は動作確認で使うのでインストールしておきましょう

  • go get -u github.com/vmware/govmomi/govc

vcsim 起動

$GOPATH/bin には PATH を通しているものとします

  • vcsim

これで localhost:8989 で起動します

環境変数

govc を使って動作確認してみます
vcsim を起動すると環境変数を設定するように言われるので素直に設定します

  • export GOVC_URL=https://user:pass@127.0.0.1:8989/sdk GOVC_SIM_PID=62667 GOVC_INSECURE=1

GOVC_INSECURE=1 を忘れずに入れましょう

動作確認

まずは govc を使って確認してみます

リソースの一覧を表示

  • govc find

vCenter の情報を表示

  • govc about

VM の一覧を取得

  • govc find vm
  • govc find . -type m

VM の詳細を取得

  • govc vm.info DC0_H0_VM0

VM のシャットダウン

  • govc vm.power -off DC0_H0_VM0

ちなみに -on で VM を起動できます

VM の設定変更

  • govc vm.change -vm DC0_H0_VM0 -name=DC0_H0_VM2

ホストの一覧を取得

  • govc find . -type h

その他 govc の使い方はこちらを参照してください

rbvmomi で動作確認

せっかくなので Ruby からも動作確認してみました

  • bundle init
  • vim Gemfile
gem "rbvmomi"
  • bundle install --path vendor
  • vim app.rb
require 'rbvmomi'

vim = RbVmomi::VIM.connect(
  host: 'localhost',
  port: '8989',
  user: 'user',
  password: 'pass',
  insecure: 'true'
)

# List vms
dc = vim.serviceInstance.find_datacenter('DC0') || fail('datacenter not found')
dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine).find do |x| 
  puts x.name
end

# Search a vm
vm = dc.find_vm('DC0_H0_VM0') || fail('VM not found')

# ReconfigVM_Task
# pp vm.config
spec = {}
spec['name'] = 'DC0_H0_VM2'
ret = vm.ReconfigVM_Task(spec: spec).wait_for_completion
  • bundle exec ruby app.rb

という感じで使えます

Tips 使える関数の一覧

  • curl -sk https://user:pass@127.0.0.1:8989/about

vcsim で使える SOAP API の一覧が確認できます
さすがにすべての API をサポートしているわけではなさそうです

最後に

vcsim を使ってみました
vCenter 環境を簡単に構築できない場合に便利かなと思います
govmomi のレポジトリで管理されているので p-r などは govmomi 自体に送ることになります

参考サイト

0 件のコメント:

コメントを投稿