今回は、ここまでのシナリオでの PowerNSX コマンドラインを工夫して
簡易的なスクリプトを作成してみます。
今回も、下記のラボを利用します。
HOL-1803-01-NET - VMware NSX - Getting Started
http://labs.hol.vmware.com/HOL/catalogs/lab/3661
以前のシナリオで、NSX Edge Service Gateway(ESG)から
分散論理ルータ(DLR)への論理スイッチの付け替えをしました。
NSX の HoL シナリオを PowerNSX でためす。Part.2
このときの論理スイッチの付け替え作業を、スクリプトで簡略化してみます。
スクリプトの内容。
スクリプトの内容は、下記のようにしています。
- ESG のインターフェース名を指定して実行すると、
論理スイッチとアドレス設定を DLR に移行します。 - インターフェースは論理スイッチに接続されている必要があります。
(標準 / 分散ポートグループではなく) - IP アドレス、サブネットマスク、ポートグループ(論理スイッチ)の設定は、
ESG のインターフェースから情報取得することで、入力を省略しています。 - 設定後の DLR のインターフェースの情報を表示します。
このスクリプトでは、例外処理(エラー処理など)は省略しています。
また、このラボの構成に合わせることで、スクリプトの内容を簡略化しています。
例えばトランスポートゾーンや NSX Edge の名前が決め打ちだったりしているので、
汎用的なスクリプトを作成する場合はさらに工夫が必要になります。
また、HoL のシナリオにある OSPF のルーティング設定はスクリプトに含まないので、
テストむけの「Customer DB App」ページを表示するには
OSPF を手作業で設定する必要があります。
スクリプトの内容は下記のようにしました。
# Usage:
# PowerNSX> .\migrate_hol_nw.ps1 <ESG_IF_NAME>
$if_name = $args[0]
$tz = Get-NsxTransportZone -Name "RegionA0-Global-TZ"
$src_esg = Get-NsxEdge -Name "Perimeter-Gateway-01"
$dst_dlr = Get-NsxLogicalRouter -Name "Distributed-Router-01"
# Disconnect from ESG
$if = $src_esg | Get-NsxEdgeInterface -Name $if_name
$if_ip = $if.addressGroups.addressGroup.primaryAddress
$if_prefix = $if.addressGroups.addressGroup.subnetPrefixLength
$if_pg_name = $if.portgroupName
$if | Clear-NsxEdgeInterface -Confirm:$false
$if_pg = Get-NsxLogicalSwitch -TransportZone $tz -Name $if_pg_name
# Disconnect to DLR
$dlr_if = $dst_dlr | New-NsxLogicalRouterInterface -Name $if_name -Type internal -ConnectedTo $if_pg -PrimaryAddress $if_ip -SubnetPrefixLength $if_prefix
$dst_dlr | Get-NsxLogicalRouterInterface -Name $if_name | % {
$ip = $_.addressGroups.addressGroup
$_ | select `
Index,
type,
name,
connectedToName,
@{N="primaryAddress";E={$ip.primaryAddress}},
@{N="Prefix";E={$ip.subnetPrefixLength}}
}
これは、下記のように HoL の環境に「テキストの送信」して使用します。
スクリプトの内容は、PowerShell のヒアドキュメント(「@'」と、「'@」で囲む)を利用して保存しています。
スクリプトでのインターフェース移行。
それでは、スクリプトを実行してみます。
まず、HoL シナリオでは移行しなかった Web_Tier インターフェースを移行してみます。
このインターフェースを移行すると後続のモジュールのシナリオに影響がありますが、
今回はこのモジュールだけ実行する想定として、移行してしまいます。
まず、vSphere Web Client からスクリプト実行前の状態を確認しておきます。
ESG の index 2 インターフェースに「Web_Tier」が設定されています。
インターフェース名「Web_Tier」を指定して、スクリプトを実行します。
インターフェースが移行されて、移行後の DLR インターフェース設定が表示されました。
PS> .\migrate_hol_nw.ps1 Web_Tier
移行元である ESG の index 2 のインターフェース はクリアされました。
そして、DLR には期待通り Web_Tier のインターフェースが作成されました。
さらに、App_Tier、DB‗Tier のインターフェースも移行してみます。
PS> .\migrate_hol_nw.ps1 App_Tier
PS> .\migrate_hol_nw.ps1 DB_Tier
ESG の App_Tier、DB_Tier が接続されていたインターフェースがクリアされました。
そして DLR にインターフェースが作成されました。
NSX の GUI 操作は画面遷移が多く、設定変更箇所が多くなる傾向があります。
手順のステップが多いけれども繰り返し実行されるようなものは、
このようにスクリプト等を利用した自動化により、作業の効率化や作業ミスの防止が見込めます。
まだつづく・・・