Grundlagen: Virtuelle Netzwerke in Azure per PowerShell verwalten

Virtuelle Netzwerke in Microsoft Azure lassen sich derzeit noch recht schwierig in PowerShell bearbeiten. Die Definition von virtuellen Netzwerken kann derzeit nur entweder über das Verwaltungsportal oder aber in PowerShell per XML bearbeitet werden.

image

Zumindest lässt sich die Konfiguration der virtuellen Netzwerke PowerShell-typisch komfortabel anzeigen. Hierzu ist der PowerShell-Befehl Get-AzureVNetSite zu verwenden.

Das folgende Beispiel zeigt die Ausgabe der konfigurierten virtuellen Netzwerke (hier eins in der Anzahl). Zusätzlich habe ich die DNS-Server und die Subnetze gesondert ausgeben lassen.

Per PowerShell kann man die Definition der virtuellen Netzwerke in einem Abonnement als XML-Datei herunterladen und auch hochladen. Möchte man virtuelle Netzwerke automatisiert verändern, bedeutet dies, die XML-Datei automatisiert zu verändern und schließlich wieder hochzuladen.

Mit dem PowerShell-Befehl Get-AzureVNetConfig lädt man die XML-Definition des virtuellen Netzwerks herunter und mit Set-AzureVNetConfig lädt man sie wieder hoch. Wenn man zusätzlich beim Befehl Get-AzureVNetConfig den Parameter ExportToFile hinzufügt, kann man die XML-Konfiguration auch direkt in eine Datei speichern.

Das folgende Beispiel zeigt die XML-Konfiguration für dasselbe virtuelle Netzwerk, das bereits im Beispiel weiter oben ausgegeben wurde. Für die Ausgabe der XML-Konfiguration wurde die folgende PowerShell-Anweisung verwendet:

 Get-AzureVNetConfig | Select-Object -ExpandProperty XMLConfiguration

Bei der Konfiguration von VMs ist die Verwendung von virtuellen Netzwerken wieder einfacher. Die PowerShell-Befehle New-AzureVM und New-AzureQuickVM haben einen Parameter namens VNetName, um anzugeben, in welchem virtuellen Netzwerk die VM erstellt werden soll.

Eine DNS-Konfiguration für VMs kann man über den PowerShell-Befehl New-AzureDns erstellen. Bei der Erstellung einer neuen VM kann man dann diese DNS-Konfiguration über den Parameter DNSSettings mitgeben.

 $dns = New-AzureDns –Name $DnsSettingName –Address $IPAddress

New-AzureVM […] -DNSSettings $dns

Weiterführende Informationen

PowerShell: Azure-Automatisierung für Einsteiger (Microsoft Virtual Academy)

Skripte

Für den Fall, dass die Skripte auf GitHub Gist nicht aufrufbar sind, sind diese hier noch einmal unformatiert aufgeführt.

 Get-AzureVNetSite

<# Output

AddressSpacePrefixes : {10.0.0.0/8}
Location             : West Europe
AffinityGroup        : 
DnsServers           : {DC1}
GatewayProfile       : 
GatewaySites         : 
Id                   : f4fc826b-b846-470e-9d9a-d481ecb3e360
InUse                : False
Label                : 
Name                 : pkbackup
State                : Created
Subnets              : {Subnet-0, Subnet-1, Subnet-2, Subnet-3}
OperationDescription : Get-AzureVNetSite
OperationId          : 43123a8f-303d-7ea2-8f5e-3107fe91543f
OperationStatus      : Succeeded

#>

Get-AzureVNetSite | select -ExpandProperty Subnets

<# Output

Name                                             AddressPrefix                                   ExtensionData                                  
----                                             -------------                                   -------------                                  
Subnet-0                                         10.0.0.0/16                                                                                    
Subnet-1                                         10.1.0.0/16                                                                                    
Subnet-2                                         10.2.0.0/16                                                                                    
Subnet-3                                         10.3.0.0/16                                                                                    

#>

Get-AzureVNetSite | select -ExpandProperty DnsServers

<# Output

Name                                             Address                                         ExtensionData                                  
----                                             -------                                         -------------                                  
DC1                                              10.0.0.4                                                                                       

#>