VMware Global Community
yoko2
Contributor
Contributor
Jump to solution

PowerCLIを用いたESXiホストのvDS設定方法について

お世話になります。

PowreCLIを用いて現行vSphere環境へESXiホストのクラスタ参加から参加後の各種設定までを実施しようと思っております。

諸事情によって検証環境が無く、一連の作業の中で既存のvDSにホストを紐づける際の実現方法について、リファレンス等から机上確認で以下まで確認いたしました。

ついては以下コマンドにてGUIでの設定の流れで実施している内容が実施可能かご意見/ご教示頂けますでしょうか。
お忙しいところ恐れ入りますが、アドバイス頂けますと大変助かります。
よろしくお願いいたします。

============================================

■前提
・ver6.5
・新規ホストはvCenterのクラスタに参加のみした状態
・NW設定はvmnic0(vSwitch0)のvmk0に、IPAddress振ったのみの状態。


■GUIでの設定の流れ

①「ホストの追加と管理」にてVDS_Aへ新規ホストを追加
②「物理アダプタの管理」にて新規ホストのvmnic1をUpLink_1/UpLinkPG_Aに割り当て
③ 新規ホストのvmnic2をUpLink_2/UpLinkPG_Aに割り当て
④「VMKernelアダプタの管理」にて、vSwitch0に紐づいているvmk0をVDS_A上のPG_Aに割り当て


■PowreCLI内容

$HOST = "newESXi"
$VDS = "VDS_A"
$VMNIC1 = "vmnic1"
$VMNIC2 = "vmnic2"
$UPLINK1 = "UpLink_1"
$UPLINK2 = "UpLink_2"
$UPLINK_PG = "UpLinkPG_A"
$PG = "PG_A"


# ①VDS_Aへ新規ホストを追加
Get-VDSwitch -Name $VDS | Add-VDSwitchVMHost -VMHost $HOST

# ②vmnic1のアップリンク設定
$vmHostNetworkAdapter = Get-VMHost -Name $HOST | Get-VMHostNetworkAdapter -Physical -Name $VMNIC1
Get-VDSwitch $VDS | Add-VDSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmHostNetworkAdapter -VirtualNicPortgroup $UPLINK_PG
Get-VDSwitch -VMHost $HOST -Name $VDS | Get-VDPortgroup -Name $UPLINK_PG | Get-VDPort | Where-Object {$_.ConnectedEntity -match $VMNIC1} | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -ActiveUplinkPort $UPLINK1
Get-VDSwitch -VMHost $HOST -Name $VDS | Get-VDPortgroup -Name $UPLINK_PG | Get-VDPort | Where-Object {$_.ConnectedEntity -match $VMNIC1} | Get-VDUplinkTeamingPolicy | ft -AutoSize

# ③vmnic2のアップリンク設定
$vmHostNetworkAdapter = Get-VMHost -Name $HOST | Get-VMHostNetworkAdapter -Physical -Name $VMNIC2
Get-VDSwitch $VDS | Add-VDSwitchPhysicalNetworkAdapter -VMHostPhysicalNic $vmHostNetworkAdapter -VirtualNicPortgroup $UPLINK_PG
Get-VDSwitch -VMHost $HOST -Name $VDS | Get-VDPortgroup -Name $UPLINK_PG | Get-VDPort | Where-Object {$_.ConnectedEntity -match $VMNIC2} | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -ActiveUplinkPort $UPLINK2
Get-VDSwitch -VMHost $HOST -Name $VDS | Get-VDPortgroup -Name $UPLINK_PG | Get-VDPort | Where-Object {$_.ConnectedEntity -match $VMNIC2} | Get-VDUplinkTeamingPolicy | ft -AutoSize

# ④vmk0の移行
$VNIC = Get-VMHostNetworkAdapter -VMHost $HOST -Name "vmk0"
Get-VDSwitch -VMHost $HOST -Name $VDS | Add-VDSwitchPhysicalNetworkAdapter -VMHostVirtualNic $VNIC -VirtualNicPortgroup $PG

============================================

Labels (1)
Reply
0 Kudos
1 Solution

Accepted Solutions
gowatana
Leadership
Leadership
Jump to solution

こんにちは。

 

vMotion用のvmkポートのゲートウェイ設定ですが、
vmk0とは別のTCP/IPスタックのゲートウェイ設定になるかと思います。

https://docs.vmware.com/jp/VMware-vSphere/6.5/com.vmware.vsphere.vcenterhost.doc/GUID-5211FD4B-256B-...

 

デフォルトでは、defaultTcpipStackというTCP/IPスタックだけを利用しますが、
vMotion むけのゲートウェイ設定変更は、「vmotion」TCP/IP スタックのゲートウェイ設定を変更します。

たとえば下記のように、vmk1 のゲートウェイを設定できるはずです。

 

# パラメータです

$ESX = "esxi01.example.com"
$VMK1_IP = "192.168.1.1"
$MASK= "255.255.255.0"
$GW = "192.168.1.254"

 

# オブジェクトを取得しておきます。

$ESX = Get-VMHost $ESX
$VDS_A = Get-VDSwitch "VDS_A"
$PG_B = Get-VDPortgroup -Name "PG_B"

 

# vMotion TCP/IPを取得しておきます。

$NETSTACK = Get-VMHostNetworkStack -Id "vmotion" | where {$_.VMHost -eq $ESX}

 

# vmk1 がデフォルトのTCP/IPスタックの場合は、一度削除します。

$ESX | Get-VMHostNetworkAdapter -Name "vmk1" | Remove-VMHostNetworkAdapter -Confirm:$false

 

# vMotion TCP/IPスタックに、vmk1 を作成します。
# ひとつ前のコマンドラインでvmk1が削除されて欠番になっているので、名前指定はありませんがvmk1が作成されます。

$ESX | New-VMHostNetworkAdapter -NetworkStack $NETSTACK -VirtualSwitch $VDS_A -PortGroup $PG_B -IP $VMK1_IP -SubnetMask $MASK

 

# VMotionEnabledは、vmk1作成と同時に指定するとエラーになってしまったので、別途設定します。

$ESX | Get-VMHostNetworkAdapter -Name "vmk1" | Set-VMHostNetworkAdapter -VMotionEnabled:$true -Confirm:$false

 

# vMotion TCP/IPスタックのゲートウェイを設定します。

Set-VMHostNetworkStack -NetworkStack $NETSTACK -VMKernelGateway $GW

 

以上です。ご参考まで。

View solution in original post

Reply
0 Kudos
5 Replies
gowatana
Leadership
Leadership
Jump to solution

こんにちは。

 

PowerCLI スクリプトですが、下記のあたりが気になりました。
vCenter 7.0、 PowerCLI 12.2 の環境で確認しましたが、おそらく vCenter 6.5 でも参考になるのではないかなと思います。

 

①「ホストの追加と管理」にてVDS_Aへ新規ホストを追加

  • $HOST はPowerShellの定数なので変数として値を代入できないため、$ESX などがよい。
  • ESXiホスト名($HOST、または$ESX)は、vCenterインベントリに登録された名前になるので、ホスト名FQDNか、IPアドレスになる。

 

②「物理アダプタの管理」にて新規ホストのvmnic1をUpLink_1/UpLinkPG_Aに割り当て
③ 新規ホストのvmnic2をUpLink_2/UpLinkPG_Aに割り当て

  • Add-VDSwitchPhysicalNetworkAdapter に、-VirtualNicPortgroup $UPLINK_PG は今回は不要。これはホスト追加と同時にvmkポート以降する場合にPGを指定するオプションのため。
  • Get-VDSwitch $VDS をパイプで渡すとエラーになるので、-DistributedSwitch $VDSで指定。
  • Get-/Set-VDUplinkTeamingPolicy は、vDS単位で指定できる。このコマンドレットではアップリンクPGの指定は不要。
  • 確認メッセージで止まってしまうコマンドレットでは、-Confirm:$false でEnterキー応答を省略。

 

④「VMKernelアダプタの管理」にて、vSwitch0に紐づいているvmk0をVDS_A上のPG_Aに割り当て

  • ホストのvDS追加後のvmk0 の切りかえは、vDSへのNIC追加ではなく、PGの切り替えになる。

 

例として、スクリプトを書き換えると下記のようになります。
※スクリプトが崩れてしまうかもしれないので、一応 こちら にも同じものを置いておきました。

#---

$ESX = "192.168.10.164" # または esxi01.example.com
$VDS = "VDS_A"
$VMNIC1 = "vmnic1"
$VMNIC2 = "vmnic2"
$UPLINK1 = "UpLink_1"
$UPLINK2 = "UpLink_2"
$UPLINK_PG = "UpLinkPG_A"
$PG = "PG_A"


# ①VDS_Aへ新規ホストを追加
Get-VDSwitch -Name $VDS | Add-VDSwitchVMHost -VMHost $ESX

# ②vmnic1のアップリンク設定
$vmHostNetworkAdapter = Get-VMHost -Name $ESX | Get-VMHostNetworkAdapter -Physical -Name $VMNIC1
Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $VDS -VMHostPhysicalNic $vmHostNetworkAdapter -Confirm:$false
Get-VDSwitch -VMHost $ESX -Name $VDS | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -ActiveUplinkPort $UPLINK1

# ③vmnic2のアップリンク設定
$vmHostNetworkAdapter = Get-VMHost -Name $ESX | Get-VMHostNetworkAdapter -Physical -Name $VMNIC2
Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $VDS -VMHostPhysicalNic $vmHostNetworkAdapter -Confirm:$false
Get-VDSwitch -VMHost $ESX -Name $VDS | Get-VDUplinkTeamingPolicy | Set-VDUplinkTeamingPolicy -ActiveUplinkPort $UPLINK2

# ④vmk0の移行
Get-VMHost $ESX | Get-VMHostNetworkAdapter -Name vmk0 | Set-VMHostNetworkAdapter -PortGroup $PG -Confirm:$false

#---

 

以上です。参考になりますでしょうか。

 

yoko2
Contributor
Contributor
Jump to solution

gowatanaさま

ご確認及びご回答頂きありがとうございます。
大変参考になりました。

誤っている箇所ばかりでお恥ずかしい限りです。
来週実機にて検証させて頂きますので、結果について改めて報告させて頂きます。

Reply
0 Kudos
yoko2
Contributor
Contributor
Jump to solution

gowatanaさま

先日はPowerCLIの内容について、ご指摘/ご教示いただきありがとうございました。
本件について、実は先日の内容に加えて以下⑤も追加で実施しようと手順確認を進めております。

しかしポチ3つ目の固定アドレス設定について、PowerCLIからデフォルトゲートウェイのオーバーライド設定する方法について調べても見つからず行き詰まっております。
追加質問となり大変恐縮ではございますが、もし実現方法についてご存じであれば、
参考サイトでも構いませんのでご教示頂けますと幸いです。


⑤登録したホストに新規にvmkernelネットワークアダプタの追加を実施。

・ターゲットデバイス:既存で存在するVDS_AのPG_B
・vMotionサービスのみ有効
・以下固定IPv4設定を実施
 IP:192.168.1.1/24
 DGW:192.168.1.254
   "このアダプタのDGWをオーバーライド"にチェック

 

$PG_B = Get-VDPortgroup -name "PG_B"
Get-VMhost $ESX | Get-VMHostNetworkAdapter -name vmk1 | Set-VMHostNetworkAdapter -VMotionEnabled $true -PortGroup $PG_B -Confirm:$false
Get-VMhost $ESX | Get-VMHostNetworkAdapter -name vmk1 | Set-VMHostNetworkAdapter -IP 192.168.1.1 -SubnetMask 255.255.255.0 # 以降DGW設定が続く想定

Reply
0 Kudos
gowatana
Leadership
Leadership
Jump to solution

こんにちは。

 

vMotion用のvmkポートのゲートウェイ設定ですが、
vmk0とは別のTCP/IPスタックのゲートウェイ設定になるかと思います。

https://docs.vmware.com/jp/VMware-vSphere/6.5/com.vmware.vsphere.vcenterhost.doc/GUID-5211FD4B-256B-...

 

デフォルトでは、defaultTcpipStackというTCP/IPスタックだけを利用しますが、
vMotion むけのゲートウェイ設定変更は、「vmotion」TCP/IP スタックのゲートウェイ設定を変更します。

たとえば下記のように、vmk1 のゲートウェイを設定できるはずです。

 

# パラメータです

$ESX = "esxi01.example.com"
$VMK1_IP = "192.168.1.1"
$MASK= "255.255.255.0"
$GW = "192.168.1.254"

 

# オブジェクトを取得しておきます。

$ESX = Get-VMHost $ESX
$VDS_A = Get-VDSwitch "VDS_A"
$PG_B = Get-VDPortgroup -Name "PG_B"

 

# vMotion TCP/IPを取得しておきます。

$NETSTACK = Get-VMHostNetworkStack -Id "vmotion" | where {$_.VMHost -eq $ESX}

 

# vmk1 がデフォルトのTCP/IPスタックの場合は、一度削除します。

$ESX | Get-VMHostNetworkAdapter -Name "vmk1" | Remove-VMHostNetworkAdapter -Confirm:$false

 

# vMotion TCP/IPスタックに、vmk1 を作成します。
# ひとつ前のコマンドラインでvmk1が削除されて欠番になっているので、名前指定はありませんがvmk1が作成されます。

$ESX | New-VMHostNetworkAdapter -NetworkStack $NETSTACK -VirtualSwitch $VDS_A -PortGroup $PG_B -IP $VMK1_IP -SubnetMask $MASK

 

# VMotionEnabledは、vmk1作成と同時に指定するとエラーになってしまったので、別途設定します。

$ESX | Get-VMHostNetworkAdapter -Name "vmk1" | Set-VMHostNetworkAdapter -VMotionEnabled:$true -Confirm:$false

 

# vMotion TCP/IPスタックのゲートウェイを設定します。

Set-VMHostNetworkStack -NetworkStack $NETSTACK -VMKernelGateway $GW

 

以上です。ご参考まで。

Reply
0 Kudos
yoko2
Contributor
Contributor
Jump to solution

gowatana様

お世話になっております。

返信が遅れてしまい、申し訳ございません。
ご教示頂いた内容について確認した所、無事に実施する事が出来ました。
大変勉強になりました、ありがとうございます。

現在はその他の様々な設定もPowerCLIで出来るよう悪戦苦闘中ですが、
鬼門であったvDS関連の設定についてはおかげさまでだいぶ理解が出来ました。
今後は自身でも色々検証をし、更に理解を深められるよう精進いたします!