Tipps für die erfolgreiche Verwendung der Azure CLI
Artikel
Azure CLI ist ein Befehlszeilentool, mit dem Sie Azure-Ressourcen aus vielen Shellumgebungen konfigurieren und verwalten können. Nachdem Sie Ihre bevorzugte Shellumgebung ausgewählt und die Azure CLI installiert haben, finden Sie in diesem Artikel nützliche Tipps zum Vermeiden häufiger Fallstricke und erfolgreiche Verwendung der Azure CLI.
Weitere Informationen zu bestimmten Azure CLI-Befehlen finden Sie in der Azure CLI-Referenzliste.
Auswählen einer Skriptsprache
Die Azure CLI ist ein Open Source-Tool, das Sie in vielen Skriptsprachen ausführen können.
Es ist die Skriptsprache, die die Anführungs-, Escapezeichen- und Zeilenfortsetzungsregeln für Azure CLI-Befehle bestimmt.
Es kann schwierig sein, die Azure CLI-Befehlssyntax mit einfachen oder doppelten Anführungszeichen, Escapezeichen oder Zeilenfortsetzungszeichen zwischen Sprachen zu kopieren.
Die meisten Microsoft-Dokumentationen für die Azure CLI werden in Bash geschrieben und getestet.
Eine bis Z-Liste mit Schnellstarts, Anleitungen und Lernprogrammen, die Azure CLI-Referenzbefehle verwenden. Die Liste wird nach Referenzgruppe und Untergruppe gruppiert, um eine einfache Suche zu ermöglichen.
Kurze Zusammenfassung der neuen Azure CLI-Features.
Übergeben von Werten an einen anderen Befehl
Wenn der Wert mehrmals verwendet wird, sollten Sie ihn einer Variablen zuweisen. Variablen ermöglichen es Ihnen, Werte mehrmals zu verwenden oder allgemeinere Skripts zu erstellen. In diesem Beispiel wird einer Variablen eine ID zugewiesen, die mit dem Befehl az vm list ermittelt wurde.
# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM running'].id" --output tsv)
# verify the value of the variable
echo $running_vm_ids
Erwägen Sie den Einsatz von Piping, wenn der Wert nur einmal verwendet wird. (Die Piping übergibt die Ausgabe eines Befehls als Eingabe an einen zweiten Befehl.)
az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm
Für Listen mit mehreren Werten sollten Sie die folgenden Optionen berücksichtigen:
Verwenden Sie eine „for“-Schleife, falls Sie weitere Kontrollen für das Ergebnis benötigen:
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id" -output tsv); do
echo stopping $vmList
az vm stop --ids $vmList
if [ $? -ne 0 ]; then
echo "Failed to stop $vmList"
exit 1
fi
echo $vmList stopped
done
Verwenden Sie alternativ xargs und ggf. das Flag -P, um die Vorgänge parallel auszuführen und so die Leistung zu verbessern:
az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM stopped'].id" \
--output tsv | xargs -I {} -P 10 az vm start --ids "{}"
Darüber hinaus verfügt die Azure CLI noch über integrierte Unterstützung für die Verarbeitung von Befehlen mit mehreren parallelen --ids, um den gleichen Effekt wie mit „xargs“ zu erzielen. @- wird zum Abrufen von Werten aus der Pipe verwendet:
az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM stopped'].id" \
--output tsv | az vm start --ids @-
Weitere Informationen zur Verwendung von Bash-Konstrukten mit der Azure CLI einschließlich Schleifen, Fallanweisungen, if...then...else-Ausdrücke und Fehlerbehandlung finden Sie unter Erlernen der Verwendung von Bash mit der Azure CLI.
Allgemeine Updateparameter
Azure CLI-Befehlsgruppen enthalten häufig einen update-Befehl. Azure Virtual Machines enthält beispielsweise den Befehl az vm update. Die meisten Aktualisierungsbefehle bieten die drei allgemeinen Parameter: --add, , --setund --remove.
Die Parameter --set und --add verwenden eine Liste von durch Leerzeichen getrennten Schlüssel-Wert-Paaren: key1=value1 key2=value2. Verwenden Sie zum Anzeigen der Eigenschaften, die aktualisiert werden können, einen show-Befehl, etwa az vm show.
az vm show --resource-group VMResources --name virtual-machine-01
Sie können eine JSON-Zeichenfolge verwenden, um den Befehl zu vereinfachen. Verwenden Sie beispielsweise den folgenden Wert, um einen neuen Datenträger an einen virtuellen Computer anzufügen:
az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
{\"id\":
\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
\"lun\": 1}"
Generische Ressourcenbefehle
Ein Dienst, mit dem Sie arbeiten möchten, hat möglicherweise keine Azure CLI-Unterstützung. Sie können die Az-Ressource oder az-Rest-Befehle verwenden, um mit diesen Ressourcen zu arbeiten.
Gleichzeitige Ausführung
Wenn Sie Azure CLI-Befehle gleichzeitig auf demselben Computer ausführen, können Schreibkonflikte auftreten, wenn mehrere Azure CLI-Befehle in denselben MSAL-Tokencache (Microsoft Authentication Library) schreiben.
Um potenzielle Fehler zu vermeiden, isolieren Sie den Azure CLI-Konfigurationsordner für jedes Skript, indem Sie die Umgebungsvariable AZURE_CONFIG_DIR für jedes Skript auf ein separates Verzeichnis festlegen. Azure CLI-Befehle in diesem Skript speichern die Konfiguration und den Tokencache am konfigurierten Speicherort und nicht im Standardordner ~/.azure.
Vorgänge in Azure können beträchtliche Zeit in Anspruch nehmen. Die Konfiguration einer VM in einem Rechenzentrum erfolgt beispielsweise nicht sofort. Azure CLI wartet, bis der Befehl abgeschlossen ist, um andere Befehle zu akzeptieren. Viele Befehle bieten daher einen --no-wait-Parameter, wie hier gezeigt:
az group delete --name MyResourceGroup --no-wait
Beim Löschen einer Ressourcengruppe werden auch alle zugehörigen Ressourcen entfernt. Das Entfernen dieser Ressourcen kann sehr lange dauern. Wenn Sie den Befehl mit dem Parameter --no-wait ausführen, kann die Konsole neue Befehle akzeptieren, ohne das Entfernen zu unterbrechen.
Viele Befehle bieten eine Warteoption, mit der die Konsole angehalten wird, bis eine Bedingung erfüllt ist. Im folgenden Beispiel wird der Befehl az vm wait verwendet, um das parallele Erstellen unabhängiger Ressourcen zu unterstützen:
az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait
subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id
Nach der Erstellung der beiden IDs können Sie die Konsole wieder nutzen.
Skriptbeispiele
Hier sind Beispiele für die Verwendung von Variablen und Schleifen in einer Liste beim Arbeiten mit Azure Virtual Machines. Ausführliche Beispiele zur Verwendung von Bash-Konstrukten mit der Azure CLI einschließlich Schleifen, Fallanweisungen, if...then...else-Ausdrücke und Fehlerbehandlung finden Sie unter Erlernen der Verwendung von Bash mit der Azure CLI.
Verwenden Sie diese Skripts, um IDs in Variablen zu speichern:
ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
`az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
SET "vm_ids=%%F %vm_ids%" :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel
$vm_ids=(az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv)
az vm stop --ids $vm_ids # CLI stops all VMs in parallel
Verwenden Sie diese Skripts zum Durchlaufen einer Liste per Schleifenvorgang:
ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
`az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
ECHO Stopping %%F
az vm stop --ids %%F
)
$vm_ids=(az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv)
foreach ($vm_id in $vm_ids) {
Write-Output "Stopping $vm_id"
az vm stop --ids $vm_id
}
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
Feedback zu Azure CLI
Azure CLI ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Erfahren Sie, wie Sie mit der plattformübergreifenden Azure-Befehlszeilenschnittstelle (CLI) virtuelle Computer in Azure erstellen, starten und beenden sowie andere Verwaltungsaufgaben im Zusammenhang mit virtuellen Computern ausführen.
Veranschaulichen Sie wichtige Qualifikationen zum Konfigurieren, Verwalten, Schützen und Verwalten wichtiger professioneller Funktionen in Microsoft Azure.