Allgemein Für Administratoren Für Architekten Für Entwickler Für Projektleiter Für Tester News Produkte Publikationen
X
Boris Wehrle
Boris Wehrle ist Senior Software Consultant und zertifizierter Projektleiter bei der AIT.

Boris Wehrle

Zeitgesteuertes Stoppen von Windows Azure VMs

Dienstag, 09. Dezember 2014

Jedem MSDN Abonnenten stellt Microsoft ein Azure Freikontingent zur Verfügung. Abhängig vom Typ der Subscription beläuft sich dieses auf 75 € (Premium) oder 115 € (Ultimate). Dies ist ausreichend um einen wirklich performanten virtuellen Rechner mit 4 Kernen, 14 GB RAM und 250 GB SSD einen Monat zu betrieben. Zumindest wenn man daran denkt, die Maschine am Feierabend herunterzufahren. Sonst läuft der Zähler einfach weiter und schon nach 7 Tagen ist das gesamte Monatsbudget aufgebraucht. Lässt sich da nicht etwas automatisieren?

Ein zeitgesteuertes Stoppen lässt sich am einfachsten mit Hilfe der Microsoft Azure Automatisierung umsetzen.

Hierzu sind folgende Schritte erforderlich.

Schritt 1: Erzeugen eines Management Zertifikats

Um über PowerShell auf Windows Azure zugreifen zu können ist eine Authentifizierung notwendig. Dies funktioniert über Nutzername und Passwort. Sicherer ist die Verwendung eines Zertifikats.

Dieses kann über die Kommandozeile erzeugt werden.

makecert -sky exchange -r -n "CN=Azure Start/Stop Management Certificate" -pe -a sha1 -len 2048 -ss My "D:\Temp\Azure_StartStopManagement_Certificate.cer"

Über die Management Console ist im Anschluss ein Exort des Zertifikats (incl. Private Key) möglich.

Nach den gezeigten Schritten stehen im Verzeichnis D:\Temp die Dateien Azure_StartStopManagement_Certificate.cer und Azure_StartStopManagement_Certificate.pfx zur Verfügung.

Schritt 2: Hinterlegen des Management Zertifikats

Das Zertifikat muss nun im Bereich Einstellungen -> Verwaltungszertifikate im Azure Management Portal hinterlegt werden.

Wer über den Private Key des Zertifikats verfügt kann nun über PowerShell auf den Azure Account zugreifen.

Schritt 3: Anlegen der Automatisierung

Für die Hinterlegung eines Skripts muss ein Automation-Konto angelegt werden.

Schritt 5: Hinzufügen von Ressourcen

Für die Ausführung der Skripte (siehe Schritt 6) werden verschiedene Informationen benötigt. Hierzu gehören der Name und die ID der Subscription sowie das im ersten Schritt erstellten Zertifikat für die Authentifizierung.

Die ID und der Name der Subscription werden als Variablen eingefügt.

Die relevanten Informationen hierzu sind unter Einstellungen des Azure Accounts zu finden.

Das Zertifikat wird als Anmeldeinformation eingefügt. Zusätzlich wird dessen Name als Zeichenfolge hinterlegt. Dies ermöglicht später eine flexiblere Steuerung mehrerer Azure Accounts.

Nach dem Vornehmen der Einstellungen werden diese in der Übersicht unter Ressourcen angezeigt.

Schritt 4: Hinterlegen der PowerShell Skripte

Das Skript, welches die Logik enthält, wird als Runbook hinterlegt.

workflow StopVM

{

   Param 

   ( 

       [parameter(Mandatory=$true)][String] $VMName,     

       [parameter(Mandatory=$true)][String] $ServiceName 

   ) 

 

   $subscriptionName = Get-AutomationVariable -Name "SubscriptionName" 

   $subscriptionID = Get-AutomationVariable -Name "SubscriptionID" 

   $certificateName = Get-AutomationVariable -Name "CertificateName"

   $certificate = Get-AutomationCertificate -Name $certificateName 

   

   Set-AzureSubscription -SubscriptionName $subscriptionName -SubscriptionId $subscriptionID -Certificate $certificate 

   Select-AzureSubscription $subscriptionName 

   

   Stop-AzureVM -Name $VMName -ServiceName $ServiceName -Force

}

Ein Test des Skripts ist direkt im Portal möglich.

Hierbei muss als Parameter der Name der VM bzw. der des Service angegeben werden der angehalten werden soll.

Die Ergebnisse des Tests werden nach einigen Sekunden im Ausgabebereich angezeigt.

Wurden alle Einstellungen korrekt vorgenommen wird als Ergebnis „Succeeded“ angezeigt.

Schritt 5: Verknüpfen eines Zeitplans

Für ein zeitgesteuertes Ausführen kann nun ein Zeitplan hinterlegt werden.

Der Zeitplan ist im Anschluss direkt aktiv. Die Ergebnisse der Ausführungen sind unter Aufträge einzusehen.

clip_image060

Durch die gezeigte Automation können gezielt einzelne VMs gestoppt werden. Durch leichte Anpassungen des PowerShell Skripts ist auch ein Stoppen aller VMs möglich.

Über diesen Weg lässt sich ein Vergessen des Stoppens einer VM am Feierabend sicher verhindern. Damit hat man mehr von seinem freien Windows Azure Kontingent.

Verwandte Artikel:

Benötigen Sie Unterstützung bei der Software-Entwicklung und Architektur von .NET basierten Lösungen oder bei Einführung und Anpassung von Visual Studio / Microsoft Test Manager / Team Foundation Server?

Wir stehen Ihnen unter info(at)aitgmbh.de gerne zur Verfügung.

Tags: ,

Hinterlasse eine Antwort