これまで、論理スイッチや VM を PowerCLI / PowerNSX で作成してみましたが、
ひたすらオブジェクトを作成していくだけというのは現実的ではないと思います。
そこで、これまでに(下記で)作成したテナントを PowerCLI / PowerNSX でいったん削除してみます。
PowerNSX でテナント追加の自動化をしてみる。Part.2
NSX には直接マルチ テナントを構成する機能はありませんが、
テナントっぽく作成した下記のオブジェクトを、作成した順番とは逆に削除していきます。
- VM
- DFW ルール
- SNAT ルール
- 論理スイッチ
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>
これで、前回までに作成したオブジェクトを削除した状態になりました。
まだ続く・・・