Für einige Administrative Tasks ist es leider notwendig die NSX Edge Gateways in einer VMware vCloud Director Umgebung den Orgs (Tenants) zuzuordnen. In meinem Fall waren es anstehende Edge Gateway Updates nach einem NSX Update. Die Zuordnung ist zwar sehr einfach aus VMware vCloud Director Sicht aber leider komplex aus VMware NSX Sicht, da sich die Namen der Objekte nicht decken müssen (z.B. verursacht durch nachträgliches Umbenennen). Dazu kommen noch Edge Gateways die durch ein vApp Netzwerk erzeugt wurden, diese tauchen auch im VMware vCloud Director nicht zentral auf. Die Lösung um die NSX Edge Gateway to vCloud Org Relationship aufzulösen sollte mal wieder ein PowerShell Skript sein, und sogar ein ziemlich simples.
Das Problem
Die Ansicht aus dem VMware NSX vCenter Plugin lässt leider keinen offensichtlichen Verweis auf die VMware vCloud Director Organisation zu. Hilfreich könnte nur ein gutes Namensschema sein. Dieses ist aber spätestens bei vApp Netzwerken hinfällig, in dem Fall vergibt der Tenant mit dem vApp Netzwerknamen selbst den Edge Gateway Namen (in meinem Beispiel „Restore Test“).
Die Lösung
Das vorherige Beispiel legt die Lösung bereits nahe, denn NSX realisiert die Mandantentrennung auch anhand von Tenants. Der Tenant Name im NSX ist die Id der vCloud Director Organistion.
Mit diesem Wissen und zwei PowerShell Modulen (PowerCLI und PowerNSX) lässt sich also eine Verbindung herstellen.
PowerNSX NSX Edge Gatway:
Man beachte das Feld „tenant“.
PowerCLI vCloud Director Org:
Die PowerCLI Id der Org beinhaltet die echte Tenant ID, welche dann identisch mit dem NSX Tenant is.
NSX Edge Gateway to vCloud Org Relationship Script
Um den kleinen Report zu erzeugen ist es neben dem Laden der beiden PowerShell Module (PowerCLI und PowerNSX) noch notwendig eine Verbindung zu dem betreffenden vCloud Director und dem NSX Manager herzustellen. Damit kann die Verbindung zwischen vCloud Org und NSX Edge Gatway hergestellt werden.
Import-Module VMware.VimAutomation.Cloud, PowerNSX Connect-CIServer vcd.lab.local Connect-NsxServer -vCenterServer vcs01.lab.local $Orgs = Get-Org $Edges = Get-NsxEdge $myView = @() Foreach ($Edge in $Edges) { $Report = [PSCustomObject] @{ Name = $Edge.Name VcdOrg = ($orgs | where {$_.Id -match $edge.Tenant}) } $MyView += $Report } $MyView | Sort UpdateAvailable, VcdOrg | ft -AutoSize
Zeile 1: vCloud PowerCLI und PowerNSX Modul laden
Zeile 2: vCloud Director verbinden
Zeile 3: NSX Manager verbinden über das vCenter
Zeile 5-6: Objekte Sammeln
Zeile 8-17: Objekte in Relation bringen und Report erstellen
Zeile 12: Vergleich der beiden Id`s