PowerNSX を使用して、NSX for vSphere へのテナント追加の自動化をしてみようと思います。
今回は前回作成したテナント環境(論理スイッチや VM など)の様子を、
PowerCLI と PowerNSX をくみあわせて確認しておきます。
前回はこちら。
PowerNSX でテナント追加の自動化をしてみる。Part.1
テナント環境の確認。
作成した論理スイッチ「ls-tenant-04」です。
Object ID は「virtualwire-222」になりました。
PowerNSX> Get-NsxTransportZone tz01 | Get-NsxLogicalSwitch -Name ls-tenant-04 | fl name,objectId
name : ls-tenant-04
objectId : virtualwire-222
論理スイッチのバッキングの分散ポートグループが、
「vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04」だとわかります。
※Transport Zone は 1つなので省略しています。
PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | select -ExpandProperty vdsContextWithBacking
switch : switch
mtu : 1600
promiscuousMode : false
backingType : portgroup
backingValue : dvportgroup-412
missingOnVc : false
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
バッキングの分散ポートグループも存在しています。
PowerNSX> Get-VDPortgroup | where {$_.Name -eq "vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04"} | select Id
Id
--
DistributedVirtualPortgroup-dvportgroup-412
DLR インスタンスと、論理スイッチ(virtualwire-222)の接続されたインターフェースを見てみます。
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
インターフェースに「10.1.40.1/24」が設定されたこともわかります。
PowerNSX> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterInterface | where {$_.connectedToId -eq "virtualwire-222"} | select -ExpandProperty addressGroups | select -ExpandProperty addressGroup | fl
primaryAddress : 10.1.40.1
subnetMask : 255.255.255.0
subnetPrefixLength : 24
PowerNSX での情報取得は XmlElement で階層が深く、この先「select -ExpandProperty」が多くなります。
かわりに、下記のように Format-XML によって XML で出力することもできたりします。
PowerNSX> Get-NsxLogicalRouter -objectId edge-5 | Get-NsxLogicalRouterInterface | where {$_.connectedToId -eq "virtualwire-222"} | select -ExpandProperty addressGroups | Format-XML
<addressGroups>
<addressGroup>
<primaryAddress>10.1.40.1</primaryAddress>
<subnetMask>255.255.255.0</subnetMask>
<subnetPrefixLength>24</subnetPrefixLength>
</addressGroup>
</addressGroups>
PowerNSX>
ESG に作成した、SNAT ルールです。
10.1.40.0/24 のソース アドレスが、192.168.1.144 に変換されます。
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
作成した DFW ルールを見てみます。
ルールは「dfw-section-04」セクションに作成しました。
ルールが2つあることがわかります。
PowerNSX> Get-NsxFirewallSection -Name dfw-section-04
id : 1009
name : dfw-section-04
generationNumber : 1499213132983
timestamp : 1499213132983
type : LAYER3
rule : {allow any to t04 http, allow jbox to t04 ssh}
2つとも、許可(action: allow)ルールです。
PowerNSX> Get-NsxFirewallSection -Name dfw-section-04 | select -ExpandProperty rule
id : 1105
disabled : false
logged : false
name : allow any to t04 http
action : allow
appliedToList : appliedToList
sectionId : 1009
destinations : destinations
services : services
direction : inout
packetType : any
id : 1104
disabled : false
logged : false
name : allow jbox to t04 ssh
action : allow
appliedToList : appliedToList
sectionId : 1009
sources : sources
destinations : destinations
services : services
direction : inout
packetType : any
ルールの通信元 / 通信先 も確認できます。
踏み台から論理スイッチへの SSH を許可するルール(RuleId: 1104)は下記のようになっています。
PowerNSX> Get-NsxFirewallRule -RuleId 1104 | Get-NsxFirewallRuleMember
RuleId : 1104
SectionId : 1009
MemberType : Source
Name :
Value : 192.168.1.223
Type : Ipv4Address
isValid : true
RuleId : 1104
SectionId : 1009
MemberType : Destination
Name : ls-tenant-04
Value : virtualwire-222
Type : VirtualWire
isValid : true
ルール ID 1104 のサービスは、SSH です。
PowerNSX> Get-NsxFirewallRule -RuleId 1104 | select -ExpandProperty services | select -ExpandProperty service | fl
name : SSH
value : application-368
type : Application
isValid : true
任意の場所から論理スイッチへの HTTP を許可するルール(RuleId: 1105)は
通信元はなく、通信先(Destination)だけ指定されています。
PowerNSX> Get-NsxFirewallRule -RuleId 1105 | Get-NsxFirewallRuleMember
RuleId : 1105
SectionId : 1009
MemberType : Destination
Name : ls-tenant-04
Value : virtualwire-222
Type : VirtualWire
isValid : true
ルール ID 1105 のサービスは、HTTP です。
PowerNSX> Get-NsxFirewallRule -RuleId 1105 | select -ExpandProperty services | select -ExpandProperty service | fl
name : HTTP
value : application-253
type : Application
isValid : true
作成した VM の確認。
VM の情報は、主に PowerCLI で確認しています。
作成した VM「vm41」は、指定したデータストア「ds_nfs_lab02」に配置されています。
PowerNSX> Get-VM vm41 | fl Name,PowerState,GuestId,@{N="Datastore";E={$_|Get-Datastore}}
Name : vm41
PowerState : PoweredOn
GuestId : other3xLinux64Guest
Datastore : ds_nfs_lab02
vNIC には、論理スイッチのバッキングポートグループが設定されています。
PowerNSX> Get-VM vm41 | Get-NetworkAdapter | fl Parent,Name,NetworkName,@{N="Connected";E={$_.ConnectionState.Connected}}
Parent : vm41
Name : Network adapter 1
NetworkName : vxw-dvs-36-virtualwire-222-sid-10005-ls-tenant-04
Connected : True
vm41 のゲスト OS の情報です。
VMware Tools(Photon OS なので open-vm-tools)がインストールされた状態です。
PowerNSX> (Get-VM vm41 | Get-VMGuest).ExtensionData | select HostName,GuestState,ToolsStatus,IpAddress,GuestFullName
HostName : vm41
GuestState : running
ToolsStatus : toolsOk
IpAddress : 10.1.40.101
GuestFullName : Other 3.x or later Linux (64-bit)
ゲスト OS には、アドレス「10.1.40.101」が設定できています。
PowerNSX> (Get-VM vm41 | Get-VMGuest).ExtensionData.Net.IpConfig | select -ExpandProperty IpAddress | select IpAddress,PrefixLength
IpAddress PrefixLength
--------- ------------
10.1.40.101 24
fe80::250:56ff:feaf:d89a 64
デフォルトゲートウェイ も設定できています。
PowerNSX> (Get-VM vm41 | Get-VMGuest).ExtensionData.IpStack | select -ExpandProperty IpRouteConfig | select -ExpandProperty IpRoute | where {$_.Network -eq "0.0.0.0"} | select @{N="Gateway";E={$_.Gateway.IpAddress}}
Gateway
-------
10.1.40.1
論理スイッチに、作成した VM が接続されていることもわかります。
PowerNSX> Get-NsxLogicalSwitch -Name ls-tenant-04 | Get-NsxBackingPortGroup | Get-VM
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
vm41 PoweredOn 1 2.000
つづく。