REDPIXEL - stock.adobe.com

Ist Azure CLI oder PowerShell besser im Ressourcenmanagement?

Azure CLI und PowerShell sind zwei gängige Ressourcenverwaltungs-Tools für Azure. Erfahren Sie in diesem Artikel, für welche Anwendungsfälle sie sich jeweils eignen.

Wenn es um die Ressourcenverwaltung in Microsoft Azure geht, stehen zwei Tools zur Wahl: Azure CLI und PowerShell. Dabei stellt sich natürlich die Frage, was der Unterschied zwischen den beiden ist und für welche Anwendungsfälle sie sich eignen.

Ein wichtiger Faktor ist, mit welchem Werkzeug sich der jeweilige Administrator bereits auskennt. Für Benutzer mit einer bestehenden Windows-Umgebung ist PowerShell die offensichtliche Wahl, da es seit mehr als einem Jahrzehnt Teil von Microsoft Windows ist und die meisten Systemadministratoren damit vertraut sind. Das Azure Command Line Interface (Azure CLI) hat jedoch auch seine Vorzüge.

Die Unterschiede zwischen den beiden sind oft subtil, und Ihre Auswahl hängt wahrscheinlich von Ihren persönlichen Vorlieben ab. Glücklicherweise rufen Azure CLI und PowerShell genau dieselben APIs auf, sodass Sie verhältnismäßig einfach umsteigen oder die beiden Tools zusammen benutzen können. Schauen wir uns Azure CLI und PowerShell sowie die Möglichkeit, sie miteinander zu kombinieren, genauer an.

Azure CLI

Die Azure-CLI besteht aus einer Reihe von Befehlen, mit denen Entwickler alle Azure-Ressourcen über einen programmatischen Ansatz verwalten und mit ihnen interagieren. Die Befehle basieren auf Python. Die Azure-CLI ist sowohl im Terminal Ihres Computers als auch in der Azure Cloud Shell verfügbar, bei der es sich um eine über den Browser zugängliche Benutzeroberfläche handelt.

Darüber hinaus ist Azure CLI plattformübergreifend. Das bedeutet, dass IT-Teams es auf jedem Betriebssystem verwenden können, einschließlich:

Power Shell

Ursprünglich ein reines Windows-Programm, wurde PowerShell als Open-Source-Skriptsprache mit einer interaktiven Befehlszeile (Command Line Interface, CLI) neu aufgelegt. Microsoft hat es als Automatisierungstool für Systemadministratoren entwickelt. Im Gegensatz zu den meisten Befehlszeilen basiert PowerShell auf dem .NET-Framework und arbeitet mit Objekten.

Ähnlich wie bei der Azure-CLI läuft PowerShell auf den meisten gängigen Betriebssystemen. Außerdem arbeitet es mit jeder Plattform oder Anwendung zusammen, die offene APIs nutzt. PowerShell ist neben Python und JavaScript eine der wichtigsten Sprachen für das Schreiben von Skripten und die Automatisierung in Azure.

Erstellen Sie eine Ressource in Azure

Um Azure CLI mit PowerShell in Aktion zu vergleichen, sehen wir uns den Prozess zum Erstellen einer Ressource an. So erkennen Sie schnell die Unterschiede in der Codelänge, der Benutzerfreundlichkeit und der Geschwindigkeit.

Eine Azure-Ressourcengruppe ist eine Sammlung verwandter Azure-Cloud-Komponenten wie virtueller Maschinen, Speicherkonten, Webanwendungen, Datenbanken und virtueller Netzwerke. Sie entscheiden je nach Ihren konkreten Anforderungen, wie die Ressourcen zusammengefasst sind.

Um ein ordnungsgemäßes, wiederverwendbares PowerShell-Skript zu schreiben, benötigen Sie verschiedene Grundlagen, einschließlich Funktionen und Parameter. Der folgende Code ist einsatzbereit, aber etwas sperrig für den alltäglichen Einsatz:

function New-ResourceGroup {

     [cmdletbinding(SupportsShouldProcess)]

     param (

          [parameter(Mandatory)]

          [string]$rgName,

          [parameter(Mandatory)]

          [string]$location

     )

     $params = @{

          'Name' = $rgName

          'Location' = $location

     }

     if ($pscmdlet.ShouldProcess('location')) {

     New-AzResourceGroup @params

     }

}

Sehen Sie sich jetzt den Code für dieselbe Aufgabe in Azure CLI an:

az group create -l eastus2 -n resource_group_name

Wie Sie sehen, ist der Azure-CLI-Code im Vergleich zu PowerShell erheblich kürzer. Möchten Sie schnell und einfach Ressourcen erstellen, ist Azure CLI wahrscheinlich Ihre erste Wahl.

Kombinieren Sie PowerShell und Azure CLI

Ein Vorteil beider Tools ist, dass sie sich für einen größeren Funktionsumfang kombinieren lassen. Azure CLI ist elegant und einfach, aber im Gegensatz zur PowerShell taugt sie nicht so gut zum Automatisieren und Wiederverwenden von Skripten. Wenn beispielsweise eine andere Person den Code verwenden, aber den Namen der zukünftigen Ressourcengruppe ändern möchte, müssen Entwickler in einer Terminalsitzung Variablen erstellen, damit der Code ausgeführt werden kann. Wenn Sie parallel PowerShell verwenden, erhalten Sie zusätzliche Funktionen wie Fehlerbehandlung und Wiederverwendbarkeit.

In unserem nächsten Beispiel verwendet der Code eine PowerShell-Funktion und fügt sie in die Azure-CLI ein. Dadurch können Sie in der Azure-CLI wiederverwendbaren Code einsetzen und Fehlerbehandlungen durchführen, um die Befehlszeile für richtige Skripte zu nutzen.

function New-ResourceGroup {

     param (

          [parameter(Mandatory)]

          [string]$rgName,

          [parameter(Mandatory)]

          [string]$location

     )

     try {

          az group create -l $location `

                          -n $rgName

     }

     catch {

          $pscmdlet.ThrowTerminatingError($_)

     }

}

Das Kombinieren von PowerShell und Azure CLI ist ein großartiger Ansatz, wenn Sie sich nicht entscheiden können, welche Variante Ihnen besser gefällt.

Verwenden Sie Azure CLI mit anderen Programmiersprachen

Angenommen, Sie sind Python-Entwickler und möchten PowerShell ausprobieren. Der Rest des Stacks, an dem Sie arbeiten, ist Python; es gibt also keinen Grund für Sie, etwas anderes als diese Sprache zu verwenden. Der Rest Ihres Teams nutzt die Azure-CLI jedoch parallel mit anderen Programmiersprachen.

Unten finden Sie ein Beispiel für die Verwendung der Azure-CLI mit Python. Wie Sie sehen, programmieren Sie als Entwickler einfach wie gewohnt. Es gibt keinen Unterschied in der Syntax.

Dank der Bibliothek azure.cli.core können Sie mit der invoke-Funkion Azure-CLI-Befehle schreiben. In diesem Szenario werden VMs in einer bestimmten Ressourcengruppe aufgelistet.

from azure.cli.core import get_default_cli as azcli

import logging

import sys

def list_vms(resource_group):

     azcli().invoke(['vm', 'list', '-g', resource_group])

resource_group = sys.argv[1]

if __name__ == '__main__':

     print('Running as main program...')

     list_vms(resource_group)

Erfahren Sie mehr über Cloud Computing