Share via


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.