Die Microsoft Deutschland Cloud mit einer Mini VM und mit Azure Powershell Befehlen steuern.
Heute habe ich einen nicht ganz alltäglichen Nutzungsfall. Microsoft Azure richtet sich eher an Firmenkunden als an Privatleute. Wobei auch Letzteres durchaus möglich wäre. In dieser Anleitung soll es darum gehen, virtuelle Server automatisch zu starten und/ oder herunter zu fahren. Wer die original Azure Wolke kennt, weiß dass dies eigentlich ohne Probleme direkt in den VM-Optionen zu lösen ist. Jedoch ist das in Azure Deutschland aktuell noch nicht so einfach möglich. Daher muss hier aktuell ein Umweg gegangen werden. Azure Deutschland ist wie Azure China komplett vom originalen System abgekapselt. Bei uns liegt es jedoch am stärkeren Datenschutz, welcher hierzulande Geltung entgegengebracht werden muss. Dem müssen sich auch Angebote von großen Konzernen unterordnen, wenn sie den hiesigen Markt erobern wollen. Zwar ist das Portal in vielerlei Hinsicht identisch, jedoch noch nicht so stark weiterentwickelt wie eben das Original. Ärgerlich ist daher schon, dass gerade das Fehlen einer Funktion in der Cloud offensichtlich ist, die dabei helfen soll Geld zu sparen. Dabei geht es um das Planen von Verfügbarkeitszeiten der virtuellen Maschinen.
Wie mache ich das nun? Grundsätzlich über eine VM, PowerShell und der Azure PowerShell Erweiterung. Diese VM kann am Ende auf die Tarifklasse A0 herabgestuft werden. Das sind ca. 14 Euro pro Monat. Zum arbeiten ist es aber ratsam mit A1 zu starten. Das ist einfach angenehmer zum arbeiten.
- Mini VM installieren (Windows) (A0) – Um damit anfänglich zu arbeiten empfehle ich mindestens A1.
- VM konfigurieren (Grafikeffekte aus, Unwichtige Dienste deaktivieren)
- Wichtig: Zeit auf Deutsch [o. gewünschte Zeitzone] umstellen (Ist für die Task bzw. geplanten Aufgaben später wichtig)
- Azure PowerShell installieren (Unter Command-line tools -> Power Shell Windows Installer https://azure.microsoft.com/en-us/downloads/)
- PowerShell öffnen und erstmals bei Azure Germany anmelden:
login-azurermaccount -EnvironmentName AzureGermanCloud
- Im Anmeldefenster einloggen
- Das AzureProfil exportieren und JSON abspeichern (Hinweis: Dieses Profil enthält in verschlüsselter Form die Zugangsdaten. Mit dieser Datei wäre es jedem (!) möglich sich in den Azure Account einzuloggen. Also Vorsicht!):
Save-AzureRmProfile -Path “.\azureprofile.json”
- Die geplanten Task können nun zusammengestellt werden. Auszuführender Nutzer sollte der Benutzer System sein, damit auch ohne Benutzeranmeldung Aufgaben ausgeführt werden!
- In der Aufgabenplanung eine Aufgabe erstellen die alle Server starten:
- Namen angeben, Benutzer [System] einstellen
- Zeiten angeben
- Aktion hinzufügen: Programm/ Script: „powershell.exe“ und zusätzlich in der Argumentenzeile den Powershell-Befehl hinterlegen:
Import-Module AzureRM.Profile; Select-AzureRMProfile -path "C:\Users\[BENUTZER]\azureprofile.json"; Start-AzureRmVM -ResourceGroupName [Ressourcenname] -Name [Servername]; Sleep -Seconds 5; Start-AzureRmVM -ResourceGroupName [Ressourcenname] -Name [Servername]
- Zusätzlich noch eine weitere Aufgabe erstellen für das beenden. Hier wie bei Punkt 8 vorgehen, nur das die Argumentenzeile eine andere ist:
Import-Module AzureRM.Profile; Select-AzureRMProfile -path "C:\Users\[BENUTZER]\azureprofile.json"; Stop-AzureRmVM -ResourceGroupName [Ressourcenname] -Name [Servername] -force; Sleep -Seconds 5exit; Stop-AzureRmVM -ResourceGroupName [Ressourcenname] -Name [Servername] -force
- Wer auf A1 erstellt hat, sollte, wenn alles geklappt hat, die VM auf die A0 Konfiguration zurückstufen. Damit wird der geringste Betrag für diese VM fällig.
Es gibt auch noch weitere Möglichkeiten um so eine Scheduler-VM oder Helper-VM zu gestalten. Mit einer sogenannten PublishingSettings-Datei oder direkt mit Zertifikaten. Dies führte bei mir aber nicht zum gewünschten Erfolg und ist teils etwas komplizierter. Diese Idee hier ist aber an genau solch einen Fall angelehnt: http://clemmblog.azurewebsites.net/start-stop-windows-azure-vms-according-time-schedule/ (en)