Partager via


Remplir des variables à utiliser dans des scripts Azure CLI

Dans cette étape du tutoriel, découvrez comment utiliser des variables :

  • Exécutez une commande Azure CLI et stockez la sortie dans une variable.
  • Lisez un fichier JSON local et stockez les valeurs de propriété dans une variable.

Voici quelques cas d’usage courants pour les variables :

  • Obtenez des informations sur une ressource Azure existante, comme une ID de ressource.
  • Obtenir le résultat d’une commande Azure CLI, telle qu’un mot de passe.
  • Obtenez des objets JSON pour les informations d’environnement, telles que le développement, l’étape et les ID de production.

Vous pouvez utiliser la variable dans Azure CLI pour effectuer des opérations de génération et de destruction à grande échelle.

Conditions préalables

  • Vous avez accès à un groupe de ressources et à un compte de stockage avec des autorisations reader ou ultérieures au niveau d’un compte de stockage.

Obtenir la sortie de commande à l’aide de la requête JMESPath

Obtenez des informations sur une ressource Azure existante à l’aide du paramètre --query de la commande show. Une requête JMESPath est exécutée et une ou plusieurs valeurs de propriété d’une ressource Azure sont retournées.

Conseil / Astuce

La syntaxe pour --query est sensible à la casse et spécifique à l’environnement. Si vous recevez des résultats vides, vérifiez votre majuscule. Évitez de citer des erreurs en appliquant les règles que vous avez apprises dans Les différences de syntaxe Azure CLI dans Bash, PowerShell et Cmd

Sauf si le paramètre --output est spécifié, ces exemples s’appuient sur une configuration de sortie par défaut de json définie dans Préparer votre environnement pour l’interface de ligne de commande Azure

Obtenir les propriétés du dictionnaire JSON d’une ressource Azure

À l’aide du compte de stockage créé dans Les différences de syntaxe Azure CLI dans Bash, PowerShell et Cmd, récupérez le primaryEndpoints de votre nouveau compte de stockage.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query primaryEndpoints

Sortie du dictionnaire JSON de la console :

{
  "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/"
}

Obtenir des objets JSON individuels

Pour retourner des propriétés individuelles dans un tableau (liste), spécifiez une liste délimitée par des virgules des propriétés du compte de stockage.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"

Sortie du tableau JSON de la console :

[
  "/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"
]

Renommer les propriétés

Renommez les propriétés à l’aide des accolades ({}) et d’une liste délimitée par des virgules. Les nouveaux noms de propriétés ne peuvent pas contenir d’espaces. Cet exemple retourne la sortie au format table.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
                        --output table

Sortie de la table de console. La première lettre de chaque colonne est majuscule dans --output table:

SaName             SaKind     SaMinTLSversion
-----------------  ---------  -----------------
msdocssa000000000  StorageV2  TLS1_0

Filtrer les résultats d’une requête

Combinez ce que vous avez appris sur la citation avec ce que vous venez d’apprendre sur --query. Ces exemples appliquent un filtre.

Dans Bash, vous ne pouvez pas avoir d’espace avant ou après le signe égal (=). Vous pouvez choisir d’utiliser des guillemets autour de la valeur de la variable, de sorte que msdocs-tutorial-rg-00000000 et "msdocs-tutorial-rg-00000000" sont tous les deux corrects.

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

Créer une ressource Azure stockant la sortie dans une variable

Apprendre à stocker la sortie des commandes dans une variable est bénéfique lors de la création de ressources Azure qui génèrent des secrets devant être protégés. Par exemple, lorsque vous créez un principal de service, réinitialisez des informations d’identification ou obtenez un secret de coffre de clés Azure, la sortie de la commande doit être protégée.

Créez un nouveau coffre de clés Azure et un secret, en renvoyant la sortie de la commande à une variable. Votre nom Azure Key Vault doit être globalement unique. Par conséquent, l’identificateur $RANDOM est utilisé dans cet exemple. Pour plus d’informations sur les règles d’affectation de noms Azure Key Vault, consultez codes d’erreur courants pour Azure Key Vault.

Ces exemples utilisent echo pour vérifier les valeurs des variables, car il s’agit d’un didacticiel d’enseignement. N’utilisez pas echo pour les valeurs de secret et de mot de passe dans les environnements de niveau production.

# 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

Obtenir le contenu d’un fichier JSON et le stocker dans une variable

Cette section suivante est une « tâche stimulante » pour un didacticiel d’intégration. Toutefois, pour gérer les ressources Azure dans les environnements de développement, d’étape et de production, vous devez souvent lire un fichier de configuration.

Êtes-vous prêt à étendre vos compétences Azure CLI ? Créez un fichier JSON contenant le code JSON suivant ou le contenu de votre fichier de votre choix. Enregistrez le fichier texte sur votre lecteur local. Si vous travaillez dans Azure Cloud Shell, utilisez l’icône upload/download files dans la barre de menus pour stocker le fichier texte dans votre lecteur de stockage cloud.

{
  "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"
    }
  }
}

Stockez le contenu de votre fichier JSON dans une variable pour une utilisation supplémentaire dans vos commandes Azure CLI. Dans cet exemple, remplacez msdocs-tutorial.json par le nom de votre fichier. N’enregistrez pas la commande echo dans les scripts de niveau production, car la sortie est enregistrée dans votre fichier journal.

Le script Bash suivant a été testé dans Azure Cloud Shell et dépend du jq Bash, qui doit être installé dans votre environnement.

# 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

Avez-vous reçu une erreur « jq command not found » ? Cette erreur se produit, car le script dépend de la commande Bash jq . Installez jq dans votre environnement ou exécutez ce script dans Azure Cloud Shell.

Vous disposez maintenant d’un nom de secret Azure Key Vault spécifique à l’environnement stocké dans une variable et vous pouvez l’utiliser pour vous connecter aux ressources Azure. Cette même méthode est adaptée aux adresses IP des machines virtuelles Azure et des chaînes de connexion SQL Server lorsque vous souhaitez réutiliser des scripts Azure CLI.

Obtenir plus de détails

Vous voulez plus d’informations sur un des sujets abordés dans cette étape de tutoriel ? Utilisez les liens de ce tableau pour en savoir plus.

Sujet Pour en savoir plus
Variables Consultez des exemples avancés dans Utiliser l’interface de ligne de commande Azure avec succès - Passer des valeurs à une autre commande
Lisez une bonne vue d’ensemble des variables dans Comment utiliser des variables dans les commandes Azure CLI.
Interrogation Recherchez un large éventail d’exemples dans Comment interroger la sortie de commande Azure CLI à l’aide d’une requête JMESPath.
Découvrez plus en détail Bash à l’aide de --query dans Découvrez comment utiliser Bash avec Azure CLI.
Coffre-fort de clés Azure À propos d’Azure Key Vault
Donner accès aux clés, certificats et secrets du coffre de clés avec un contrôle d’accès en fonction du rôle Azure.
Codes d’erreur courantes pour Azure Key Vault
PowerShell Liens de référence : Get-content, Where-Object, Select-Object

Étape suivante

Maintenant que vous comprenez comment utiliser des variables pour stocker la sortie de commande Azure CLI et les valeurs de propriété JSON, passez à l’étape suivante pour apprendre à utiliser des scripts pour supprimer des ressources Azure.