Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Lernprogrammschritt lernen Sie, mit Variablen zu arbeiten:
- Führen Sie einen Azure CLI-Befehl aus, und speichern Sie die Ausgabe in einer Variablen.
- Lesen Einer lokalen JSON-Datei und Speichern von Eigenschaftswerten in einer Variablen.
Einige häufige Anwendungsfälle für Variablen sind:
- Abrufen von Informationen zu einer vorhandenen Azure-Ressource, z. B. einer Ressourcen-ID.
- Ausgabe eines Azure CLI-Befehls abrufen, wie zum Beispiel ein Passwort.
- Abrufen von JSON-Objekten für Umgebungsinformationen, z. B. Entwicklungs-, Phasen- und Produktions-IDs.
Sie können die Variable in Azure CLI verwenden, um Build- und Zerstörungsvorgänge im großen Maßstab auszuführen.
Voraussetzungen
- Sie haben Zugriff auf eine Ressourcengruppe und ein Speicherkonto mit
reader
oder höheren Berechtigungen auf Speicherkontoebene.
Abrufen der Befehlsausgabe mit JMESPath-Abfrage
Abrufen von Informationen über eine bestehende Azure-Ressource mit dem Parameter --query
des show
-Befehls. Eine JMESPath-Abfrage wird ausgeführt, und mindestens ein Eigenschaftswert einer Azure-Ressource wird zurückgegeben.
Tipp
Die Syntax von --query
ist case-sensitiv und umgebungsspezifisch. Wenn Sie leere Ergebnisse erhalten, überprüfen Sie die Großschreibung. Vermeiden Sie Quotenfehler, indem Sie die in "Learn Azure CLI"-Syntaxunterschiede in Bash, PowerShell und Cmd gelernten Regeln anwenden.
Sofern der --output
Parameter nicht angegeben ist, basieren diese Beispiele auf einer Standardausgabekonfiguration, die json
in "Vorbereiten Ihrer Umgebung für die Azure CLI" festgelegt ist.
Abrufen von JSON-Wörterbucheigenschaften einer Azure-Ressource
Verwenden Sie das Speicherkonto, das in Azure CLI-Syntaxunterschiede in Bash, PowerShell und Cmd kennenlernen erstellt wurde, um die primaryEndpoints
Ihres neuen Speicherkontos abzurufen.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Ausgabe des JSON-Konsolenwörterbuchs:
{
"blob": "https://msdocssa00000000.blob.core.windows.net/",
"dfs": "https://msdocssa00000000.dfs.core.windows.net/",
"file": "https://msdocssa00000000.file.core.windows.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://msdocssa00000000.queue.core.windows.net/",
"table": "https://msdocssa00000000.table.core.windows.net/",
"web": "https://msdocssa00000000.z13.web.core.windows.net/"
}
Abrufen einzelner JSON-Objekte
Um einzelne Eigenschaften in einem Array (Liste) zurückzugeben, geben Sie eine durch Trennzeichen getrennte Liste der Speicherkontoeigenschaften an.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
JSON-Array-Ausgabe der Konsole:
[
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/ msdocssa000000000",
"eastus",
"https://msdocssa000000000.blob.core.windows.net/",
"yyyy-mm-ddT19:11:56.399484+00:00"
]
Umbenennen von Eigenschaften
Benennen Sie Eigenschaften mit geschweiften Klammern ({}
) und einer durch Trennzeichen getrennten Liste um. Die neuen Eigenschaftennamen dürfen keine Leerzeichen enthalten. In diesem Beispiel wird die Ausgabe im table
Format zurückgegeben.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Ausgabe der Konsolentabelle. Der erste Buchstabe jeder Spalte ist großgeschrieben in --output table
:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filterabfrageergebnisse
Kombinieren Sie das, was Sie über das Zitieren gelernt haben, mit dem, was Sie gerade über --query
gelernt haben. Diese Beispiele wenden einen Filter an.
In Bash können Sie kein Leerzeichen vor oder hinter dem Gleichheitszeichen (=
) haben. Sie können Anführungszeichen um den Variablenwert verwenden, sodass msdocs-tutorial-rg-00000000
"msdocs-tutorial-rg-00000000"
beide richtig sind.
rgName="<msdocs-tutorial-rg-00000000>"
# Get a list of all Azure storage accounts that allow blob public access.
# Notice the backticks and escape characters needed for boolean values.
az storage account list --resource-group $rgName \
--query "[?allowBlobPublicAccess == \`true\`].name"
# Get a list of Azure storage accounts that were created in the last 30 days. Return the results as a table.
saDate=$(date +%F -d "-30days")
az storage account list --resource-group $rgName \
--query "[?creationTime >='$saDate'].{saName:name, createdTimeStamp:creationTime}" \
--output table
# Get a list of Azure storage accounts created in this tutorial
az storage account list --resource-group $rgName \
--query "[?contains(name, 'msdocs')].{saName:name, saKind:kind, saPrimaryLocation:primaryLocation, createdTimeStamp:creationTime}" \
--output table
Erstellen einer neuen Azure-Ressource zum Speichern der Ausgabe in einer Variablen
Das Erlernen der Befehlsausgabe in einer Variablen ist von Vorteil beim Erstellen von Azure-Ressourcen, die geheime Schlüssel ausgeben, die geschützt werden sollen. Wenn Sie z. B. einen Dienstprinzipal erstellen, eine Anmeldeinformationen zurücksetzen oder ein Azure Key Vault-Geheimnis abrufen, sollte die Ausgabe des Befehls geschützt werden.
Erstellen Sie einen neuen Azure Key Vault und einen geheimen Schlüssel, und geben Sie die Befehlsausgabe an eine Variable zurück. Ihr Azure Key Vault-Name muss global eindeutig sein, sodass der $RANDOM
Bezeichner in diesem Beispiel verwendet wird. Weitere Benennungsregeln für Azure Key Vault finden Sie unter Allgemeine Fehlercodes für Azure Key Vault.
In diesen Beispielen wird echo
verwendet, um die Variablenwerte zu überprüfen, da es sich hierbei um ein Lernprogramm handelt. Verwenden Sie echo
nicht für geheime und Kennwortwerte in Produktionsumgebungen.
# Set your variables.
let "randomIdentifier=$RANDOM*$RANDOM"
rgName="<msdocs-tutorial-rg-00000000>"
kvName="msdocs-kv-$randomIdentifier"
location="eastus"
# Set your default output to none
az config set core.output=none
# Create a new Azure Key Vault returning the Key Vault ID
myNewKeyVaultID=$(az keyvault create --name $kvName --resource-group $rgName --location $location --query id --output tsv)
echo "My new Azure Key Vault ID is $myNewKeyVaultID"
# Wait about 1 minute for your Key Vault creation to complete.
# Create a new secret returning the secret ID
kvSecretName="<myKVSecretName>"
kvSecretValue="<myKVSecretValue>"
myNewSecretID=$(az keyvault secret set --vault-name $kvName --name $kvSecretName --value $kvSecretValue --query id --output tsv)
echo "My new secret ID is $myNewSecretID"
# Reset your default output to json
az config set core.output=json
Abrufen des Inhalts einer JSON-Datei und Speichern in einer Variablen
Dieser nächste Abschnitt ist eine "Stretch-Aufgabe" für ein Onboarding-Lernprogramm. Um Azure-Ressourcen jedoch in Entwicklungs-, Phasen- und Produktionsumgebungen zu verwalten, müssen Sie häufig eine Konfigurationsdatei lesen.
Sind Sie bereit, Ihre Azure CLI-Fähigkeiten zu erweitern? Erstellen Sie eine JSON-Datei, die den folgenden JSON-Code oder Ihre Wahl an Dateiinhalten enthält. Speichern Sie die Textdatei auf Ihrem lokalen Laufwerk. Wenn Sie in Azure Cloud Shell arbeiten, verwenden Sie das upload/download files
Symbol in der Menüleiste, um die Textdatei auf Ihrem Cloudspeicherlaufwerk zu speichern.
{
"environments": {
"dev": [
{
"id": "1",
"kv-secretName": "dev1SecretName",
"status": "inactive",
},
{
"id": "2",
"kv-secretName": "dev2SecretName",
"status": "active"
}
],
"stg": {
"id": "3",
"kv-secretName": "dev3SecretName"
},
"prod": {
"id": "4",
"kv-secretName": "dev4SecretName"
}
}
}
Speichern Sie den Inhalt Ihrer JSON-Datei in einer Variablen, um sie in Ihren Azure CLI-Befehlen weiter zu verwenden. Ändern Sie in diesem Beispiel msdocs-tutorial.json
zum Namen Ihrer Datei. Speichern Sie den echo
Befehl nicht in Skripts auf Produktionsebene, da die Ausgabe in Ihrer Protokolldatei gespeichert wird.
Das folgende Bash-Skript wurde in Azure Cloud Shell getestet und hängt vom Bash jq ab, das in Ihrer Umgebung installiert werden muss.
# Show the contents of a file in the console
fileName="msdocs-tutorial.json"
cat $fileName | jq
# Get a JSON dictionary object
stgKV=$(jq -r '.environments.stg."kv-secretName"' $fileName)
echo $stgKV
# Filter a JSON array
devKV=$(jq -r '.environments.dev[] | select(.status=="active") | ."kv-secretName"' $fileName)
echo $devKV
Haben Sie einen Fehler "jq command not found" erhalten? Dieser Fehler tritt auf, da das Skript vom Bash jq-Befehl abhängt. Installieren Sie jq in Ihrer Umgebung, oder führen Sie dieses Skript in Azure Cloud Shell aus.
Sie verfügen jetzt über einen umgebungsspezifischen geheimen Azure Key Vault-Namen, der in einer Variablen gespeichert ist, und Sie können ihn verwenden, um eine Verbindung mit Azure-Ressourcen herzustellen. Diese Methode eignet sich gut für IP-Adressen von Azure-VMs und SQL Server-Verbindungszeichenfolgen, wenn Sie Azure CLI-Skripts wiederverwenden möchten.
Weitere Details
Möchten Sie weitere Details zu einem der in diesem Tutorialschritt behandelten Themen? Weitere Informationen finden Sie unter den Links in dieser Tabelle:
Betreff | Erfahren Sie mehr |
---|---|
Variablen | Weitere Beispiele zur erfolgreichen Verwendung der Azure CLI – Übergeben von Werten an einen anderen Befehl |
Lesen Sie eine gute Übersicht über Variablen in der Verwendung von Variablen in Azure CLI-Befehlen. | |
Abfragen | Hier finden Sie eine Vielzahl von Beispielen in how to query Azure CLI command output using a JMESPath query. |
Machen Sie einen tieferen Einblick in Bash mithilfe von --query Learn, um Bash mit der Azure CLI zu verwenden. |
|
Azure Key Vault | Über Azure Key Vault |
Ermöglichen Sie den Zugriff auf Schlüsseltresorschlüssel, Zertifikate und geheime Schlüssel mit einer rollenbasierten Zugriffssteuerung in Azure. | |
Häufige Fehlercodes für Azure Key Vault | |
PowerShell | Referenzlinks: Get-content, Where-Object, Select-Object |
Nächster Schritt
Nachdem Sie nun wissen, wie Sie Variablen zum Speichern von Azure CLI-Befehlsausgabe- und JSON-Eigenschaftswerten verwenden, fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie Skripts zum Löschen von Azure-Ressourcen verwenden.