Auffüllen der Variablen für die Verwendung in Skripts
In diesem Tutorialschritt erfahren Sie, wie Sie mit Variablen arbeiten:
- Ausführen eines Azure CLI-Befehls und Speichern der Ausgabe in einer Variablen
- Lesen einer lokalen JSON-Datei und Speichern von Eigenschaftswerten in einer Variablen
Gängige Anwendungsfälle für Variablen sind beispielsweise:
- Abrufen von Informationen zu einer vorhandenen Azure-Ressource, z. B. Ressourcen-ID
- Abrufen der Ausgabe eines Azure CLI-Befehls, z. B. eines Kennworts
- Abrufen von JSON-Objekten für Umgebungsinformationen, z. B. Entwicklungs-, Staging- und Produktions-IDs
Die Variable kann dann in der Azure CLI zum Ausführen von Build- und Zerstörungsaufträgen im großen Stil verwendet werden.
Voraussetzungen
- Sie haben Zugriff auf eine Ressourcengruppe und ein Speicherkonto mit der Berechtigung
reader
oder höheren Berechtigungen auf Speicherkontoebene.
Abrufen der Befehlsausgabe mithilfe einer JMESPath-Abfrage
Rufen Sie Informationen zu einer vorhandenen Azure-Ressource mithilfe des --query
-Parameters des Befehls show
ab. Eine JMESPath-Abfrage wird ausgeführt, und mindestens ein Eigenschaftswert einer Azure-Ressource wird zurückgegeben.
Tipp
Die Syntax für --query
unterscheidet zwischen Groß-/Kleinschreibung und ist umgebungsspezifisch. Wenn Sie leere Ergebnisse erhalten, überprüfen Sie die Groß-/Kleinschreibung. Vermeiden Sie Fehler im Zusammenhang mit Anführungszeichen, indem Sie die unter Azure CLI-Syntaxunterschiede zwischen Bash, PowerShell und Cmd erläuterten Regeln anwenden.
Sofern der Parameter --output
nicht angegeben ist, basieren diese Beispiele auf einer Standardausgabekonfiguration in json
, die unter Vorbereiten der Umgebung für die Azure CLI festgelegt wurde.
Abrufen von JSON-Wörterbucheigenschaften einer Azure-Ressource
Rufen Sie die primären Endpunkte (primaryEndpoints
) Ihres neuen Speicherkontos ab. Verwenden Sie dazu das unter Azure CLI-Syntaxunterschiede in Bash, PowerShell und Cmd erstellte Speicherkonto.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
JSON-Wörterbuchausgabe in der Konsole:
{
"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
Geben Sie eine durch Trennzeichen getrennte Liste von Speicherkontoeigenschaften an, um einzelne Eigenschaften in einem Array (Liste) zurückzugeben.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
JSON-Arrayausgabe in 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 mithilfe von 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
Tabellenausgabe in der Konsole. Der erste Buchstabe der einzelnen Spalten wird in --output table
in Großbuchstaben geschrieben:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtern von Abfrageergebnissen
Kombinieren Sie Ihre Kenntnisse über Anführungszeichen mit dem, was Sie über --query
gelernt haben. Diese Beispiele wenden einen Filter an.
In Bash darf kein Leerzeichen vor oder hinter dem Gleichheitszeichen (=
) eingefügt werden. Sie können Anführungszeichen um den Variablenwert verwenden. So ist sowohl msdocs-tutorial-rg-00000000
als auch "msdocs-tutorial-rg-00000000"
korrekt.
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
Es ist von Vorteil, sich mit dem Speichern der Befehlsausgabe in einer Variablen vertraut zu machen, wenn Sie Azure-Ressourcen erstellen, die Geheimnisse ausgeben, die geschützt werden sollen. Wenn Sie beispielsweise einen Dienstprinzipal erstellen, Anmeldeinformationen zurücksetzen oder ein Azure Key Vault-Geheimnis abrufen, muss die Befehlsausgabe geschützt werden.
Erstellen Sie eine neue Azure Key Vault-Instanz und ein Geheimnis, das die Befehlsausgabe an eine Variable zurückgibt. Ihr Azure Key Vault-Name muss global eindeutig sein. Daher wird in diesem Bezeichner der Bezeichner $RANDOM
verwendet. Weitere Benennungsregeln für Azure Key Vault finden Sie unter Allgemeine Fehlercodes für Azure Key Vault.
In diesen Beispielen wird echo
zum Überprüfen von Variablenwerten verwendet, da es sich hierbei um ein Tutorial zur Veranschaulichung handelt. Verwenden Sie echo
nicht für Geheimnis- und Kennwortwerte in Umgebungen auf Produktionsebene.
# 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 Kev 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
Der nächste Abschnitt ist eine Erweiterungsaufgabe für ein Onboardingtutorial. Zum Verwalten von Azure-Ressourcen in Entwicklungs-, Staging- und Produktionsumgebungen müssen Sie häufig eine Konfigurationsdatei lesen.
Sind Sie bereit, Ihre Azure CLI-Fertigkeiten zu erweitern? Erstellen Sie eine JSON-Datei, die den folgenden JSON-Code oder den gewünschten Dateiinhalt enthält. Speichern Sie die Textdatei auf Ihrem lokalen Laufwerk. Wenn Sie in Azure Cloud Shell arbeiten, verwenden Sie das Symbol upload/download files
auf 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 zur weiteren Verwendung in Ihren Azure CLI-Befehlen. Ändern Sie in diesem Beispiel msdocs-tutorial.json
in den Namen Ihrer Datei. Speichern Sie den Befehl echo
nicht in Skripts auf Produktionsebene, da die Ausgabe in Ihrer Protokolldatei gespeichert wird.
Dieses Bash-Skript wurde in Azure Cloud Shell getestet und hängt vom Bash-Tool jq ab, das in Ihrer Umgebung installiert sein 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
Ist eben ein Fehler aufgrund eines nicht gefundenen jq-Befehls aufgetreten? Das liegt daran, dass dieses 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 Azure Key Vault-Geheimnisnamen, 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 | Weitere Informationen |
---|---|
Variablen | Erweiterte Beispiele finden Sie unter Erfolgreiche Verwendung der Azure CLI – Übergeben von Werten an einen anderen Befehl. |
Eine hilfreiche Übersicht über Variablen finden Sie unter Verwenden von Variablen in Azure CLI-Befehlen. | |
Abfragen | Eine Reihe von Beispielen finden Sie unter Abfragen einer Azure CLI-Befehlsausgabe mithilfe einer JMESPath-Abfrage. |
Unter Erlernen der Verwendung von Bash mit der Azure CLI finden Sie ausführlichere Informationen zu Bash mit --query . |
|
Azure Key Vault | Informationen zu Azure Key Vault |
Gewähren Sie Zugriff auf Key Vault-Schlüssel, -Zertifikate und -Geheimnisse mit der rollenbasierten Zugriffssteuerung in Azure. | |
Allgemeine Fehlercodes für Azure Key Vault | |
PowerShell | Referenzlinks: Get-content, Where-Object, Select-Object |
Nächster Schritt
Sie wissen nun, wie Sie Variablen zum Speichern der Azure CLI-Befehlsausgabe und von JSON-Eigenschaftswerten verwenden. Fahren Sie jetzt mit dem nächsten Schritt fort, um zu erfahren, wie Sie Skripts zum Löschen von Azure-Ressourcen verwenden.