Neben der Automation mit der Azure Management Library und eigenem Code (Teil 1 und Teil 2) kann diese auch mit Windows PowerShell erfolgen. Die PowerShell Cmdlets bauen auf der Azure Management Library (WAML) auf. Hier zeige ich wie Automatisierung mit PS funktioniert.
Die Voraussetzungen für Azure PowerShell
Mit dem Web Platform Installer wird zuerst die WIndows Azure PowerShell installiert. Dieser erfordert aktuell das Azure SDK 2.3, welches automatisch mit installiert wird.
Kurz zur Erinnerung: Damit auch nicht signierte PS-Scripts ausgeführt werden können, ist es erforderlich die Azure PowerShell einmalig als Administrator aufzurufen und Set-ExecutionPolicy RemoteSigned
auszuführen.
PS gegen Azure
Es gibt bereits viele Ressourcen zum Thema Automatisierung mit Azure PowerShell. Hier einige Links dazu:
- HowTo-Video auf channel9 Managing Windows Azure Web Sites with PowerShell.
- The Windows Azure Management Cmdlets Documentation on MSDN
- Introducing the Windows Azure Powershell Cmdlets
- Michael Washam's List of Videos on the Windows Azure Powershell Cmdlets
- Lesenswert: Continuous Delivery for Cloud Services in Azure
Zunächst wird die Windows Azure PowerShell geöffnet. Wenn wir Hilfe zu “Websites” erhalten wollen, hilft help azure
. Dies lädt beim ersten Mal eine Liste aller Website-Commandlets bzw. gibt diese Liste aus.
Die Liste der Azure-Commandlets ist laaang. Um herauszufinden, welche Version aktuell installiert ist, kann (get-module azure).version
verwendet werden. Aktuell ist 0.8.0.
Verbinden mit einer Azure Subscription
Hierfür gibt es wie so oft mehrere Wege. Der einfachste (automatische) Weg ist das PublishSettings-File downzuloaden und zu verwenden:
Get-AzurePublishSettingsFile
Nun an Azure anmelden und die Datei speichern. Dieses File kann nun mit
Import-AzurePublishSettingsFile C:\...\meinfile.publishsettings
verwendet werden. Weiter geht es mit der Anzeige der aktuellen Subscription:
Get-AzureSubscription
Die Verbindung ist hergestellt…
Variante Zwei
…funktioniert über die Management Services (wie in Teil 2). Das eigene Zertifikat muss dabei im eigenen Certificate Store vorhanden sein. Dazu fragen wir den Thumbprint des eigenen Zertifikates (“tonitest1”) ab:
Get-ChildItem -Path Cert:\CurrentUser\My -Recurse | where { $_.Subject -like "CN=tonitest*" } | select thumbprint, subject
Als Output erhalten wir den Thumbprint. Dieses Zertifikat wird nun damit in eine Variable geladen:
$cert = Get-Item Cert:\CurrentUser\My\457FC093B…
…und verwendet. Außerdem benötigen wir noch die Subscription-ID. Diese erhalten wir am einfachsten direkt im Azure Portal Settings / Management Certificates. Übrigens wird auch hier der Certificate-Thumbprint angezeigt…
Set-AzureSubscription -SubscriptionName "T3" -SubscriptionId 6c1757f8… -Certificate $cert
Select-AzureSubscription "T3"
Damit sind wir über diesen Weg mit dem Abonnement verbunden.
Hinweis: Achtung, mit der Subscription-ID und dem PFX-File (plus Kennwort) kann jeder diese Subscription verwalten, also sorgsam verwahren!
Websites manipulieren
Sobald die Verbindung vorhanden ist, können die verschiedene Aktionen (CmdLets) verwendet werden, etwa zur Anzeige der Azure-Websites:
Get-AzureWebsite
Wenn wir nun eine neue Azure Website anlegen wollen und mit einem lokalen Git Repository verbinden wollen, wird an das New-AzureWebsite Cmdlet einfach –git angehängt.
New-AzureWebsite web100 –git
Damit können Dateien hier hinein gestellt und sofort deployt werden.
git add .
git commit –m’initial revision’
git push azure master
Show-AzureWebsite
Praktisch!
Ein Cloudservice deployen
Um ein Cloudservice zu deployen kann das Script MMDB.AzureSample helfen. Es beginnt mit allen Variablen, importiert die PublishSettings und verwendet Set-AzureDeployment -Upgrade.
Hier gibts auch einen BlogPost mit einem eigenen NuGet Package für die Automatisierung mit C#. Diese Methoden habe ich aus Zeitgründen nicht getestet, aber sie sehen – für Cloudservice Deployment – sehr hilfreich aus.
An dieser Stelle auch nochmals der Hinweis zu Continuous Delivery for Cloud Services in Azure und dem Script am Seitenende. In diesem Artikel ist auch beschrieben, wie RDP automatisiert aktiviert werden kann.
Eine große Spielwiese
Sobald die Verbindung zu Azure hergestellt ist, können alle Azure Cmdlets verwendet werden. Natürlich gibt es auch eine Reihe Cmdlets für virtuelle Maschinen, Storage, usw.
Azure PowerShell ist ein mächtiges Werkzeug, das helfen kann Aufgaben in Azure zu automatisieren.
Die Spielwiese ist eröffnet!