これまで、論理スイッチや VM を PowerCLI / PowerNSX で作成してみましたが、

ひたすらオブジェクトを作成していくだけというのは現実的ではないと思います。

そこで、これまでに(下記で)作成したテナントを PowerCLI / PowerNSX でいったん削除してみます。

PowerNSX でテナント追加の自動化をしてみる。Part.2

 

NSX には直接マルチ テナントを構成する機能はありませんが、

テナントっぽく作成した下記のオブジェクトを、作成した順番とは逆に削除していきます。

  1. VM
  2. DFW ルール
  3. SNAT ルール
  4. 論理スイッチ

 

1. VM の削除。

まず、論理スイッチなど他のオブジェクトを削除する前に、VM を削除します。

今回は、論理スイッチ「ls-tenant-04」を割り当てている VM をまとめて削除します。

 

まず、下記が削除対象の VM です。

VM は 2つ(vm41 と vm42)を作成して、論理スイッチに接続しています。

論理スイッチのバッキング ポートグループから VM を取得していますが、

この環境ではDLRの内部インターフェースにも論理スイッチ「ls-tenant-04」を割り当てていますが

DLR Control VM は、実際はポートグループが割り当てられないため含まれないようです。

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | Get-VM

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm41                 PoweredOn  1        2.000

vm42                 PoweredOn  1        2.000

 

 

VM を停止します。

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | Get-VM | Stop-VM -Confirm:$false

 

Name                 PowerState Num CPUs MemoryGB

----                 ---------- -------- --------

vm42                 PoweredOff 1        2.000

vm41                 PoweredOff 1        2.000

 

 

VM を削除します。

VM が削除されたため、以前は VM を 2つ取得できていたコマンドを実行しても何も表示されなくなりました。

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | Get-VM | Remove-VM -DeletePermanently -Confirm:$false

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | Get-VM

PowerNSX>

 

2. DFW ルールの削除。

DFW ルールは、テナントごとにセクションを作成しておいたので、

ここではルールごとではなくセクションごと削除してみます。

DFW のセクションには まだルールが残っている状態なので「-force」オプションで削除します。

PowerNSX> Get-NsxFirewallSection -Name dfw-section-04

 

 

id               : 1009

name             : dfw-section-04

generationNumber : 1499559304897

timestamp        : 1499559304897

type             : LAYER3

rule             : {allow any to t04 http, allow jbox to t04 ssh}

 

 

PowerNSX> Get-NsxFirewallSection -Name dfw-section-04 | Remove-NsxFirewallSection -force -Confirm:$false

PowerNSX> Get-NsxFirewallSection -Name dfw-section-04

PowerNSX>

 

3. SNAT ルールの削除。

Edge Service Gateway(ESG)の NAT サービスに作成した、SNAT ルールを削除します。

PowerNSX> Get-NsxEdge -objectId edge-1 | Get-NsxEdgeNat | Get-NsxEdgeNatRule | where {$_.originalAddress -eq "10.1.40.0/24"}

 

 

ruleId                      : 196611

ruleTag                     : 196611

ruleType                    : user

action                      : snat

vnic                        : 0

originalAddress             : 10.1.40.0/24

translatedAddress           : 192.168.1.144

snatMatchDestinationAddress : any

loggingEnabled              : false

enabled                     : true

protocol                    : any

originalPort                : any

translatedPort              : any

snatMatchDestinationPort    : any

edgeId                      : edge-1

 

 

PowerNSX> Get-NsxEdge -objectId edge-1 | Get-NsxEdgeNat | Get-NsxEdgeNatRule | where {$_.originalAddress -eq "10.1.40.0/24"} | Remove-NsxEdgeNatRule -Confirm:$false

PowerNSX> Get-NsxEdge -objectId edge-1 | Get-NsxEdgeNat | Get-NsxEdgeNatRule | where {$_.originalAddress -eq "10.1.40.0/24"}

PowerNSX>

 

4. 論理スイッチの削除。

削除対象の論理スイッチの Object ID は「virtualwire-222」になっています。

PowerNSX> Get-NsxTransportZone tz01 | Get-NsxLogicalSwitch -Name ls-tenant-04 | fl name,objectId

 

name     : ls-tenant-04

objectId : virtualwire-222

 

 

まず DLR から、論理スイッチ「ls-tenant-04」の接続されたインターフェースを削除します。

PowerNSX> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterInterface | where {$_.connectedToId -eq "virtualwire-222"}

 

 

label           : 27110000000d

name            : if-tenant-04

addressGroups   : addressGroups

mtu             : 1500

type            : internal

isConnected     : true

isSharedNetwork : false

index           : 13

connectedToId   : virtualwire-222

connectedToName : ls-tenant-04

logicalRouterId : edge-5

 

 

PowerNSX> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterInterface | where {$_.connectedToId -eq "virtualwire-222"} | Remove-NsxLogicalRouterInterface -Confirm:$false

PowerNSX> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterInterface | where {$_.connectedToId -eq "virtualwire-222"}

PowerNSX>

 

まだ論理スイッチは残っている状態です。

そして、そのバッキング分散ポートグループも存在しています。

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | fl VDSwitch,Name,Id

 

 

VDSwitch : vds02

Name     : vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04

Id       : DistributedVirtualPortgroup-dvportgroup-412

 

 

論理スイッチ「ls-tenant-04」を削除します。

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Remove-NsxLogicalSwitch -Confirm:$false

PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04

PowerNSX>

 

ちなみに vDS に作成されているバッキング分散ポートグループも、

ちゃんと自動的に削除されて存在しない状態になりました。

PowerNSX> Get-VDPortgroup vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04

Get-VDPortgroup : 2017/07/09 12:38:12   Get-VDPortgroup         VDPortgroup with name 'vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04' was not found using the specified filter(s).

発生場所 行:1 文字:1

+ Get-VDPortgroup vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : ObjectNotFound: (:) [Get-VDPortgroup], VimException

    + FullyQualifiedErrorId : Core_OutputHelper_WriteNotFoundError,VMware.VimAutomation.Vds.Commands.Cmdlets.GetVDPort

   group

PowerNSX>

 

これで、前回までに作成したオブジェクトを削除した状態になりました。

 

まだ続く・・・

PowerNSX でテナント追加の自動化をしてみる。Part.4