AzureSimpleREST Module
Obwohl Microsoft einen tollen Job mit ihrem AzureRM Modul macht, gibt es immer wieder Gründe diese cmdlets nicht zu nutzen. In den meisten Fällen weil Sie langsamer sind als direkte Anfragen gegen die Azure REST API sind. In anderen Fällen weil bestimme Funktionalitäten noch nicht implementiert wurden.
In diese Lücke positioniert sich das von mir geschriebene Modul AzureSimpleREST
Das Modul beinhaltet z.B. Funktionen wie “Get-AzSRVMProtectionStatus” die zwar einen offiziell dokumentierten REST Call nutzt, mir aber kein AzureRM cmdlet bekannt ist, dass diese Funktion zu Verfügung stellt. So ist es mittels
Get-AzSRVMByName -SubscriptionId nnnnnnnn -VMName "vmname" | Get-AzSRVMProtectionStatus
möglich zu prüfen ob eine bestimmte virtuelle Maschine mittels Azure Backup gesichert wird.
Wie ich auf diese REST Methode gekommen bin, habe ich in einem anderen Blogeintrag beschrieben.
Warum ein eigenes Modul
Für ein eigenes Modul habe ich mich entschieden da es Vieles einfacher macht. So konnte ich z.B. die tolle Funktion Get-AzureRmCachedAccessToken’ von Stéphane Lapointe und Get-SubnetAddress
von Dave Wyatt direkt mit einbinden.
Beide haben Ihren Code unter der MIT Lizenz veröffentlicht.
Diese Funktionen erleichtert z.B. den Loginprozess da kein Service Principal benötigt wird. Das Modul nutzt die Login Funktionen des offiziellen AzureRM Moduls. Das macht den Einstieg einfacher.
Installation
Das Modul findet Ihr in der PowerShell Gallery und könnt es mittels Install-Module AzureSimpleREST -Scope Current User
einfach installieren.
Benutzen
Alle Kommandos beginnen mit der Abkürzung AzSR für Azure Simple REST.
Außerdem gibt es für jedes cmdlet eine Hilfe mit Beispielen.
Viele der cmdlets bauen aufeinander auf und können mittels Pipeline verbunden werden
Subscription Management
Anders als die offiziellen AzureRM cmdlets kennen diese cmdlets alle keinen Subscription Kontext. Die Subscription muss, wenn erforderlich, als ID mit übergeben werden. Solltet Ihr nur mit einer Subscription arbeiten und diese nicht jedes Mal mit angeben wollen könnt Ihr euch mit PSDefaultParameterValues behelfen.
$PSDefaultParameterValues=@{"*-AzSR*:SubscriptionId"="SubscriptionID"}
Der Befehl setzt bei allen cmdlets die den Parameter ‘SubscriptionId’ erwarten, die von euch definierte als Standardwert. Wollt Ihr diesen überschreiben müsst Ihr den Parameter nur angeben.
$PSDefaultParameterValues=@{"*-AzSR*:SubscriptionId"="SubscriptionId#1"}
# Liefert alle VMs der SubscriptionId#1
Get-AzSRVMBySubscription
# Liefert alle VMs der SubscriptionId#2
Get-AzSRVMBySubscription -SubscriptionId SubscriptionId#2
Mitarbeiten
Das komplette Modul ist ebenfalls unter der MIT Lizenz auf GitHub veröffentlicht. Jeder kann also einen Pull Request erstellen und dabei helfen das Modul zu erweitern.
Nächste Schritte
Aktuell bin ich dabei für alle Funktionen Pester Tests zu schreiben. Ziel ist es nur Funktionen aufzunehmen die auch mit einem Pester Test auf Funktion geprüft werden können.
Dazu mehr in einem weiteren Blogeintrag.