vCloud Director Edge-Gateway IP Report

Um auch über neue Artikel auf Englisch informiert zu werden, einfach den neuen RSS Feed abonnieren.

 

 

Zur internen Dokumentation war es vor kurzem notwendig, einen vollständigen vCloud Director Edge-Gateway IP Report aller Netze anzufertigen. Der Report sollte nicht nur die IP’s der Gateways selbst beinhalten, sondern auch die eventuelle Unterzuweisung von IP-Pools (SubAllocations).

Vielen dank übrigens an der Stelle noch einmal an Adam Rush für seinen sehr hilfreichen Kommentar in meinem VMware Community Thread zu dem Thema.

Report Daten:

  • Edge-Gateway Name
  • Verbundenes Netz
  • IP
  • Unterzuweisung von IP-Pools

Wenn ein Edge-Gateway mehrere Netze verbunden hat, wird der Name mehrfach gelistet, jeweils mit den dazugehörigen Parametern.

vCloud Director Edge-Gateway IP Report Script

Um sauber die Liste der IP’s anahnd von Start und End IP zu errechnen habe ich mich der tollen „List IP addresses in a range using Powershell“ Funktion aus dem Microsoft Script Center bedient.

## IP range Function
function Get-IPrange
{
<# 
  .SYNOPSIS  
    Get the IP addresses in a range 
  .EXAMPLE 
   Get-IPrange -start 192.168.8.2 -end 192.168.8.20 
  .EXAMPLE 
   Get-IPrange -ip 192.168.8.2 -mask 255.255.255.0 
  .EXAMPLE 
   Get-IPrange -ip 192.168.8.3 -cidr 24 
#> 
 
param 
( 
  [string]$start, 
  [string]$end, 
  [string]$ip, 
  [string]$mask, 
  [int]$cidr 
) 
 
function IP-toINT64 () { 
  param ($ip) 
 
  $octets = $ip.split(".") 
  return [int64]([int64]$octets[0]*16777216 +[int64]$octets[1]*65536 +[int64]$octets[2]*256 +[int64]$octets[3]) 
} 
 
function INT64-toIP() { 
  param ([int64]$int) 

  return (([math]::truncate($int/16777216)).tostring()+"."+([math]::truncate(($int%16777216)/65536)).tostring()+"."+([math]::truncate(($int%65536)/256)).tostring()+"."+([math]::truncate($int%256)).tostring() )
} 
 
if ($ip) {$ipaddr = [Net.IPAddress]::Parse($ip)} 
if ($cidr) {$maskaddr = [Net.IPAddress]::Parse((INT64-toIP -int ([convert]::ToInt64(("1"*$cidr+"0"*(32-$cidr)),2)))) } 
if ($mask) {$maskaddr = [Net.IPAddress]::Parse($mask)} 
if ($ip) {$networkaddr = new-object net.ipaddress ($maskaddr.address -band $ipaddr.address)} 
if ($ip) {$broadcastaddr = new-object net.ipaddress (([system.net.ipaddress]::parse("255.255.255.255").address -bxor $maskaddr.address -bor $networkaddr.address))} 
 
if ($ip) { 
  $startaddr = IP-toINT64 -ip $networkaddr.ipaddresstostring 
  $endaddr = IP-toINT64 -ip $broadcastaddr.ipaddresstostring 
} else { 
  $startaddr = IP-toINT64 -ip $start 
  $endaddr = IP-toINT64 -ip $end 
} 
 
 
for ($i = $startaddr; $i -le $endaddr; $i++) 
{ 
  INT64-toIP -int $i 
}

}

## Report
# Get Edge CIView object
$EdgeName = '*'
$EdgeView = Search-Cloud -QueryType EdgeGateway -Name $EdgeName | Get-CIView

# Build Output
$EdgeReport = @()
foreach ($Edge in $EdgeView) {

    [Array]$GatewayInterfaces = $Edge.Configuration.GatewayInterfaces
    foreach($GatewayInterface in $GatewayInterfaces.GatewayInterface){ 
                $obj = "" | Select-Object EdgeName, NetworkName, IP, IPRanges              
                $obj.EdgeName = $Edge.Name
                $obj.NetworkName = $GatewayInterface.Name
                $obj.IP = $GatewayInterface.SubnetParticipation.IpAddress
                [Array] $RangeReport = @()
                foreach ($IPRange in $GatewayInterface.SubnetParticipation.IpRanges.IpRange) {
                    [Array] $Range = Get-IPrange -start $IPRange.StartAddress -end $IPRange.EndAddress
                    foreach($IP in $Range){  
                        $RangeReport += $IP
                        }
                    }
                    
                $obj.IPRanges = $RangeReport -join "," 
                $EdgeReport += $obj     
                }
                
               
    }
# Output
#$EdgeReport | Export-Csv C:\Output.csv -Delimiter ";"
$EdgeReport | Sort EdgeName, NetworkName | Format-Table -AutoSize

vCloud Director Edge-Gateway IP Report Ausgabe

Die Ausgabe des Skripts ist eigentlich als CSV Export gedacht, um diesen weiter zu verarbeiten.

Zur besseren Darstellung habe ich ein Netz bzw. ein Edge-Gateway aus dem vCloud Director Edge-Gateway IP Report gefiltert.

$EdgeReport | where {$_.NetworkName -eq "MyNetwork"} | Sort EdgeName, NetworkName | Format-Table -AutoSize

$EdgeReport | where {$_.EdgeName -eq "MyEdge"} | Sort EdgeName, NetworkName | Format-Table -AutoSize

vCloud Director Edge-Gateway IP Report - Edge Snipet

vCloud Director Edge-Gateway IP Report - Edge Snipet in Excel

#LongLiveVCD

Share with:

Leave a Reply