vcsimに引き続き、govcの小ネタ集やります。 個人的にはまったコマンド、便利なコマンドをいくつか紹介していきたいと思います。

TL; DR

# 分散ポートグループのポート一覧

# アクティブなポート
$ govc dvs.portgroup.info -active -connected -pg ${portgroup} ${switch}
PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      0

# アクティブでない(でも接続はされている)ポート
$ govc dvs.portgroup.info -connected -pg ${portgroup} ${switch}
# 空いているポート
$ govc dvs.portgroup.info -pg ${portgroup} ${switch}
# アクティブなアップリンクポート
$ govc dvs.portgroup.info -active -connected -uplinkPort -pg ${portgroup} ${switch}

はじめに

分散ポートグループのポートを調べようとしたときにはまったのでメモ。

分散スイッチのポートグループの各ポートは govc dvs.portgroup.info -pg ${portgroup} ${switch} の形式で取得可能です。ポートグループを指定しなければ、分散スイッチの全ポートグループが返ってきます。

が、指定した条件をすべて満たすものしか表示されません!

  • 指定できる条件
    • 接続しているか (true/false)
    • アクティブかどうか (true/false)
    • アップリンクポートかどうか (true/false)

デフォルトでは「接続していない」「アクティブでない」「アップリンクポートでない」ポートだけが取得されます。 言葉でいってもわけわかめなので、実際にvSphere Clientの表示と見比べながら紹介します。

実際に試してみる

分散スイッチ DVS0 のポートグループ DC0_DVPG0 は以下のポートを持っています。

ポート0はホストのvmkernelアダプタ、ポート1はvm(パワーオフ)のNICに接続しています。

この状態でgovcを使ってみます。オプションなしだと、デフォルトの「接続していない」「アクティブでない」「アップリンクポートでない」ポートが取得されます。空いているポート2~7が取得できました。

$ govc dvs.portgroup.info -pg DC0_DVPG0 DVS0
PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      2

PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      3

PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      4

PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      5

PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      6

PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      7

-connected を指定すると、「接続している」「アクティブでない」「アップリンクポートでない」ポートが取得されます。パワーオフのVMに接続しているポート1だけが取得できました。

# 接続している、アクティブでない(デフォルト)、アップリンクポートでない(デフォルト)ポート
$ govc dvs.portgroup.info -connected -pg DC0_DVPG0 DVS0
PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      1

-connected-active を指定すると、「接続している」「アクティブな」「アップリンクポートでない」ポートが取得されます。こちらはホストに接続しているポート0が取得できました。

# 接続している、アクティブな、アップリンクポートでない(デフォルト)ポート
$ govc dvs.portgroup.info -active -connected DVS0
PortgroupKey: dvportgroup-28
DvsUuid:      50 21 44 2c 15 ff a7 d2-28 b0 2a c5 2c 26 45 5d
VlanId:       0
PortKey:      0

(-active だけ指定すると「接続していない」「アクティブな」「アップリンクポートでない」ポートが取れますが、そんなポートは(おそらく)ありえないので意味なし)

また、-connected-active-uplinkPort をすべて指定すると、「接続している」「アクティブな」「アップリンクポート」が取得でき、今使っているアップリンクポートが確認できます。 (ちなみに自宅ラボではVMNICを標準スイッチに取られているのでアップリンクポートはすべて未接続です

# 接続している、アクティブな、アップリンクポート
$ govc dvs.portgroup.info -uplinkPort -active -connected DVS0