Windows Azure und IaaS – Schritt 9 PowerShell QuickVM

Im Artikel zuvor wurden die Windows Azure PowerShell Cmdlets installiert und eine Verbindung mit Ihren Windows Azure Abonnement(s) auf Ihrem Computer eingerichtet. Nun geht es um die Verwendung von virtuellen Maschinen mit PowerShell. Die Erstellung kann als QuickVM oder als CustomVM erfolgen. Eine QuickVM kann rasch aus einem Template erstellt werden, dieser Vorgang wird hier beschrieben.

Zu Beginn müssen noch ein paar Informationen aus Windows Azure nachgeschlagen werden und ein Storage bereitgestellt werden.

Welche Maschinen sind verfügbar?

Bevor eine neue VM erstellt wird, lassen wir uns mit Get-AzureVMImage anzeigen, welche Computer-Vorlagen für unsere neue Maschine verfügbar sind, wir filtern nur nach der Property ImageName. Damit diese Informationen für das Erstellen der neuen VM verfügbar bleiben, weisen wir die Ausgabe einer Variable $images zu. Damit die Ausgabe für uns sichtbar wird, geben wir danach den Inhalt $images aus.

$images = Get-AzureVMImage | select ImageName     
$images

Die Ausgabe sieht so aus. Jede Computervorlage wird mit all ihren Properties sequentiell in einer Liste ausgegeben:

azure-vm-prepare-image

In der Liste sind VM-Templates wie MSFT__Windows-Server-2012-Datacenter-201210.01-en.us-30GB.vhd, MSFT__Sql-Server-11EVAL-11.0.2215.0-08022012-en-us-30GB.vhd und viele weitere VHDs enthalten.

Damit wir ein bestimmtes Image verwenden können, müssen wir uns die Position in der Liste merken. Die Listelemente beginnen mit 0 zu zählen, das heißt, die erste Maschine in der Liste hat den Index 0, die zweite den Index 1 usw. Windows Server 2008 R2 SP1 ist die 5.te Maschine und hat somit den Index 4. Wir erreichen dieses Template über seinen Index mit $images[4].ImageName - oder wir verwenden in weiterer Folge den ImageName "MSFT__Win2K8R2SP1-Datacenter-201210.01-en.us-30GB.vhd".

Wo wird die VM gespeichert?

Natürlich ist auch wichtig, welche Lokationen – sprich Datenzentren – verfügbar sind und verwendet werden können. Get-AzureLocation zeigt diese an, hier filtern wir nach der Property Name. Auch hier weisen wir die Ausgabe der Variable $locations zu und geben den gespeicherten Inhalt aus, damit wir diesen sehen können.

$locations = Get-AzureLocation | select Name $locations

Die Ausgabe aller Microsoft Datenzentren:

azure-vm-prepare-location

Mit unserem Standort in Mitteleuropa wird Regelfall West Europe (Amsterdam) oder North Europe (Dublin) sinnvoll sein. Wir merken uns den Index der gewünschten Lokation. West Europe hat den Index 5, erreichbar mit $locations[5].Name - oder über den String "West Europe".

Einrichten eines neuen Storage

Jede VM – sprich ihre VHD-Datei(en) - muss natürlich auf einem Speicherplatz (sozusagen auf einer Festplatte) liegen. Wenn noch kein Speicherplatz für die VM in Ihrem Abo vorhanden ist, legen Sie einfach einen neuen Storage an. Innerhalb der aktuellen Subscription können Sie Ihre Storages mit dem Befehl

Get-AzureStorageAccount | select StorageAccountName

kontrollieren. Die Ausgabe sieht beispielsweise so aus:

azure-vm-storage-3

Wenn nichts angezeigt wird und keine Storages geliefert werden, erstellen Sie einen neuen Storage mit dem Befehl New-AzureStorageAccount.

Achtung: Der StorageAccountName muss zwischen 3 und 24 Zeichen lang sein, darf nur Kleinbuchstaben enthalten und muss auch Zahlen verwenden, zum Beispiel: “meinstorage12”. Beachten Sie die Location “West Europe”.

New-AzureStorageAccount -StorageAccountName "meinstorage12" -Location "West Europe"

Die Ausführung in PowerShell sieht dann so aus:

azure-ps-22-storage

Wenn alles geklappt hat, kurze Kontrolle im Portal, hier wird der neue Storage genauso angezeigt. Nach etwa ein bis zwei Minuten steht der neue Storage zur Verwendung bereit und ist online.

azure-ps-23-storage

Ein Storage auswählen und verwenden

Ein Storage wird mit dem Befehl Set-AzureSubscription für die neue VM verwendet. Wenn Sie mehrere Abonnements besitzen, müssen Sie dieses mit –SubscriptionName "<AbonnementName>" spezifizieren. Damit bestimmen Sie, in welchem Abo Sie welchen Storage verwenden wollen, schließlich können Sie mehrere Storages einrichten (hier heißt das Abo “VM-Test-3” und der Storage “meinstorage12”. Wie Sie das Abo benennen siehe Schritt 3). Der Befehl lautet somit wie folgt:

Set-AzureSubscription -SubscriptionName "VM-Test-3" -CurrentStorageAccount "meinstorage12"

Der –CurrentStorageAccount Parameter bestimmt den Storage, der für neue VHDs verwendet wird.

In einem Storage können mehrere VHDs gespeichert sein. Um das zu demonstrieren, hier ein Beispiel im freien Azure Storage Explorer (zu beziehen auf azurestorageexplorer.codeplex.com) mit einer Verbindung zum Storage “meinstorage12”. Azure erstellt automatisch einen Container “vhds”, in welchem alle VHD-Dateien der virtuellen Maschinen gespeichert werden – mehr dazu in weiteren Artikeln in dieser Serie.

azure-storage-explorer

Eine neue QuickVM erstellen

Wenn Sie mehrere Abonnements besitzen, können Sie das gewünscht Abo zuvor mit diesem Befehl festlegen:

Select-AzureSubscription "VM-Test-3"

Nun folgen die weiteren Cmdlets für die Erstellung einer neuen VM mit New-AzureQuickVM. Die Vorgangsweise entspricht jener aus Schritt 5, nur gescriptet.

Tipp: Beachten Sie, dass ServiceName und der ComputerName (genauso wie der StorageName) nur aus Kleinbuchstaben und Zahlen besteht – sonst nimmt Ihnen das Azure Management-API die Verwendung übel und beschwert sich mit der sinnvollen Fehlermeldungen “Es war kein lauschender Endpunkt an … vorhanden, der die Nachricht annehmen konnte.” – ersparen Sie sich diese wenig passende Meldung.

Die wichtigsten Parameter werden in Variablen gemerkt. Das hat den Vorteil, dass Sie den Befehl ohne viel Tipparbeit beliebig oft oder mit kleinen Anpassungen wiederholen können. Die Größe der VM wird mit –InstanceSize angegeben, hier wird eine VM mit der Größe Small erstellt. Die Größen reichen von ExtraSmall bis ExtraLarge.

Achtung: VMs müssen in derselben Location erstellt werden, in der auch der Storage liegt!

$images = Get-AzureVMImage | select ImageName $locations = Get-AzureLocation | select Name $myPwd =  "MeinKennw0rt" New-AzureQuickVM -Windows -ImageName $images[4].ImageName -Location $locations[5].Name -name "w12server6" -ServiceName "w12server6" -Password $myPwd -InstanceSize Small

Sie können das Script und die Verwendung der Variablen natürlich beliebig anpassen und beispielsweise statt $locations[5].Name einfach den String “West Europe” verwenden usw. Hier sehen Sie die komplette Anwendung zur Erstellung einer neuen VM mit New-AzureQuickVM.

azure-vm-new-1

Wenn alles klappt, wird die neue VM im CurrentStorageAccount erstellt und automatisch gestartet.

Kontrolle

Die VM wurde erstellt und wird auch im Portal angezeigt.

azure-ps-25-created 

Verwenden Sie in PowerShell den Befehl Get-AzureVM, um eine Liste aller aktuellen VMs in der Subscription anzuzeigen:

azure-vm-show

Weitere VMs erstellen

Um in dieser PowerShell-Session weitere VMs mit diesem Image anzulegen, passen Sie einfach den Befehl an, hier den Namen und den ServiceNamen…

New-AzureQuickVM -Windows -ImageName $images[4].ImageName -Location $locations[5].Name -name "w12server7" -ServiceName "w12server7" -Password $myPwd -InstanceSize Small

In weiteren Schritten werden wir die Anlage per Script weiter ausbauen.

Löschen einer VM

Um existierende VMs per PowerShell zu löschen, rufen Sie Remove-AzureVM mit dem Servicenamen und dem Computernamen auf:

Remove-AzureVM -ServiceName "W12Server4" -Name "W12Server4"

azure-ps-31-delete-vm

Hinweis: Durch das Löschen wird die VM gelöscht., jedoch nicht die VHD-Datei. Diese müssen Sie bei Bedarf noch selbst aus dem Storage löschen, zum Beispiel im Azure Storage Explorer (siehe oben).

Starten und Beenden einer VM

Eingerichtete VMs können mit PowerShell gesteuert werden: Start-AzureVM startet eine Maschine, zum Beispiel:

Start-AzureVM -ServiceName "w12server6" -Name "w12server6"  

Stop-AzureVM fährt eine bestimmte VM herunter:

Stop-AzureVM -ServiceName "w12server6" -Name "w12server6"

azure-vm-start-stop

Wenn die VM läuft, können Sie sie mit Restart-AzureVM, in unserem Beispiel mit

Restart-AzureVM -ServiceName "w12server6" -Name "w12server6"

beenden und neu starten lassen.

Achtung: Auch für beendete VMs fallen Servicegebühren an (siehe Schritt 5)!

Weitere Cmdlets

Hier haben Sie einige wenige Cmdlets zur Verwaltung von VMs in Windows Azure kennengelernt.
Eine Liste für viele weitere Cmdlets finden Sie in Windows Azure Management Cmdlets.

Quicklinks:
Windows Azure und IaaS
Schritt 1 Anmeldung
Schritt 2 Das Portal
Schritt 3 Kostenübersicht
Schritt 4 VM Vorschau aktivieren
Schritt 5 Neue VM anlegen
Schritt 6 Verbinden
Schritt 7 VHD anfügen
Schritt 8 PowerShell Cmdlets installieren
Schritt 9 PowerShell QuickVM