Tags: Azure, PowerShell, Virtualisierung
Das Azure-Portal bietet eine grafische Benutzeroberfläche für das Anlegen und das Management von virtuellen Maschinen. Will man jedoch eine größere Zahl an VMs verwalten, dann erweist sich PowerShell auch hier der GUI überlegen. Das Az-Modul enthält unter anderem die Befehle für das VM-Management.
Wie üblich, kann man sich alle im Modul Az.Compute verfügbaren Befehle über Get-Command anzeigen lassen. Momentan gibt der Befehl
Get-Command -Module Az.Compute
190 Cmdlets aus.
Je nach geplanter Aufgabe kann man bei der Suche nach einem bestimmten Befehl das Verb für den gewünschten Zweck spezifizieren. Zur Auswahl stehen hierbei New, Get, Remove oder Set:
Get-Command -Module Az.Compute -Verb New
Des Weiteren lässt sich die Ausgabe mit Wildcards auf bestimmte Namen einschränken:
Get-Command -Module Az.Compute -Verb New -Noun "VM*"
Erstellen einfacher VMs
Jede neue Ressource in Azure benötigt zwingend einen Namen, eine Ressourcengruppe und eine Location. Eine VM verlangt zudem noch
- ein Image, auf welchem sie basiert
- eine Größe
- eine OsDisk für das Betriebssystem
- ein virtuelles Netzwerk mit Subnetz
- eine Netzkarte zur Kommunikation mit der Außenwelt
Letztere ist eine externe Ressource in Azure und wird nicht als virtuelle Hardware in die VM integriert.
Neue Maschinen generiert man grundsätzlich mit dem Befehl New-AzVM, der neben der Location und Ressourcengruppe auch ein virtuelles Maschinenobjekt als Argument erwartet. Ein solches erzeugt man mit dem Cmdlet New-AzVMConfig.
In der einfachsten Variante erstellt es eine Basiskonfiguration, welche man in einer Variablen speichert:
$VM = New-AzVMConfig -VMName MyVM -VMSize Standard_D2s_v3
Diese Grundkonfiguration lässt sich mit weiteren Befehlen beliebig anpassen. Unbedingt benötigt werden das bereits vorhandene HardwareProfile sowie die Komponenten NetworkProfile, OsProfile sowie StorageProfile.
- NetworkProfile wird über ein Netzwerk-Interface mit
Add-VMNetworkInterface gesetzt. - StorageProfile legt man über ein Basis-Image mit
Set-AzVMSourceImage fest. - OsProfile erzeugt man durch Einstellen des Betriebssystems mit
Set-AzVMOperatingSystem.
Weitere Konfigurationsmöglichkeiten ergeben sich über Befehle wie Set-DataDisk, Set-OSDisk oder Set-AzVMPlan.
Netzwerk-Interface zu VM hinzufügen
Um der VM ein Netzwerk-Interface hinzufügen zu können, muss dieses natürlich erst erstellt werden. Voraussetzung dafür ist ein bereits bestehendes virtuelles Netzwerk oder die Bereitstellung einer komplett neuen Ressourcengruppe inklusive einem virtuellen Netzwerk.
Der folgende Befehl demonstriert die Variante über eine neue Ressourcengruppe:
Das Instanziieren des Netzwerk-Interfaces erfolgt durch New-AZNetworkInterface. Das zusätzlich benötigte Subnetz wird über Get-AzVirtualNetworkSubnetConfig abgegriffen. Ein anschließendes Hinzufügen zur VM-Konfiguration setzt das NetworkProfile:
Storage-Profil definieren
Zum Setzen des StorageProfile kann jedes verfügbare Systemabbild dienen, im folgenden Beispiel ein Image von Windows Server 2019 Datacenter:
Set-AzVMSourceImage -VM $VM -PublisherName MicrosoftWindowsServer `
-Offer WindowsServer -Skus 2019-Datacenter -Version Latest
Der Administrator wird beim Definieren des Betriebssystems mit Set-AzVMOperatingSystem als PSCredential-Objekt übergeben und somit das OSProfile bestimmt.
Bei der Ausgabe des VM-Objekts sollten nun HardwareProfile, OsProfile, NetworkProfile und StorageProfile vorhanden sein. Durch Zugriff auf die Variable $VM kann man diese Komponenten beliebig inspizieren.
Bei genauerer Betrachtung der Storage-Komponente sieht man, dass zwar ein Image gesetzt ist, jedoch fehlt unter OSDisk noch ein Laufwerk für das Betriebssystem. Spezifiziert man dieses nicht, dann wird ein solches bei der Bereitstellung automatisch generiert.
Um das Anlegen der VM zu vereinfachen, sollte man die standardmäßig aktivierten BootDiagnostics abschalten:
Set-AzVMBootDiagnostic -VM $VM -Disable
Sie gewähren Einblicke in die Maschine während des Bootvorgans, benötigen aber noch einen zusätzlichen Storage-Account.
Zum Schluss übergeben wir die VM an New-AzVM und leiten dadurch die Bereitstellung ein:
New-AzVM -VM $VM -ResourceGroupName MyVMGroup -Location westeurope
Parameter als Hashtable an New-AzVM übergeben
Das Cmdlet New-AzVM besitzt auch einige Simple-Parameter, die eine direkte Erstellung einer VM ermöglichen. Um hierbei nicht alle Argumente in einer Zeile schreiben zu müssen und die Übersicht zu bewahren, ist es vorteilhaft, diese als Hashmap zu übergeben. Die Schlüssel werden bei Übergabe an die entsprechenden Parameternamen gebunden.
Mehrere VMs gleicher Art lassen sich so in einem Durchgang mit einer Schleife erzeugen. Sie werden alle so konfiguriert, wie in der Hashmap angegeben, und im selben virtuellen Netz bzw. Subnetz erstellt. Anders als bei der obigen Variante werden dabei nicht vorhandene Komponenten, wie etwa das Netzwerk oder das Netzwerk-Interface, automatisch neu erstellt.
VMs starten, stoppen oder löschen
Alle vorhandenen VMs lassen sich über Get-AzVM auflisten. Durch zusätzliche Filterkriterien wie Ressourcengruppe oder Name kann man die VMs eingrenzen.
Wichtig zu beachten ist hier, dass sich der der Status einer virtuellen Maschine nur einsehen lässt, wenn man dem Cmdlet den Schalter Status mitgibt. Anschließend kann man über die Eigenschaft PowerState filtern, wenn man den Output über eine Pipe an Where-Object übergibt:
Get-AzVM -ResourceGroupName MyVMGroup -Status | ? PowerState -like "*running"
Eine virtuelle Maschine kann man durch Start-AzVM bzw. Stop-AzVM starten bzw. anhalten. Entfernen lässt sie sich durch Remove-AzVM. Alle Befehle erwarten die Angabe einer Ressourcengruppe und eines Namens.
Alternativ kann man das Ergebnis von Get-AzVM über eine Pipe an diese Cmdlets weiterleiten, um die Operation auf mehrere VMs anzuwenden:
Get-AzVm -ResourceGroupName "MyVMGroup" | Remove-AzVM -WhatIf
Der Parameter Force würde bei Remove-AzVM die Bestätigung durch den Nutzer vermeiden. Besonders beim Löschen empfiehlt es sich aber, vorher einen Test mit WhatIf zu simulieren, um Fehler zu vermeiden. Eine Rückmeldung in Textform ist über Verbose möglich.
Täglich Know-how für IT-Pros mit unserem Newsletter
Die Söldner Consult GmbH ist ein IT-Spezialist mit den Schwerpunkten Beratung, Projekte und Trainings. Wir unterstützen unsere Kunden bei der Einführung von Private-, Public- sowie Hybrid-Cloud-Lösungen.
Unsere Dienstleistungen umfassen die Konzeption von Cloud-Umgebungen, die Umsetzung von DevOps-Strategien oder das Automatisieren von IT-Prozessen.
Eine enge Zusammenarbeit mit Amazon AWS, Google Cloud, Microsoft, Pivotal, Veeam oder VMware erlaubt uns das Erarbeiten von herstellerübergreifenden Lösungen. Oft werden wir aufgrund unserer Expertise auch direkt von diesen Anbietern gebucht.
Zum Azure-Team bei der Soeldner Consult GmbH gehören Marcel Cisse, Daniel Landau, Alexej Prozorov, Patrick Rusch, Dr. Constantin Söldner, Dr. Guido Söldner und Prof. Dr. Jens-Henrik Söldner. Es kann große Projekte bei namhaften Kunden vorweisen und unterrichtet Azure auch in offiziellen Trainings des Herstellers sowie in Workshops.
Ähnliche Beiträge
- Verfügbare Azure-VMs in einer Region mit PowerShell anzeigen
- Spot, Reservierungen, Sparpläne: Kosten für Azure-VMs reduzieren
- Verfügbarkeit von Azure-VMs: SLA abhängig von Disk-Typ und Availability Set
- Updates für VM-Hosts in Azure: Geplante und ungeplante Wartung
- Gruppen in Azure Active Directory mit PowerShell verwalten
Weitere Links