Automation von Azure-Teil 3

2014-04-27 | Toni Pohl

Neben der Automation mit der Azure Management Library und eigenem Code (Teil 1 und 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.

image

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:

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.

image

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.

image

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

image

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…

image

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!

Artikel-Serie Quicklinks: Teil 1, 2, 3, 4

Categories: Azure, Cloud, Developer, Microsoft, PowerShell

Source: https://blog.atwork.at/post/Automation-von-Azure-Teil-3