Remplir des variables à utiliser dans des scripts

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 la sortie 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.

La variable peut ensuite être utilisée dans Azure CLI pour effectuer des tâches de génération et de destruction à grande échelle.

Prérequis

  • 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

La syntaxe de --query respecte 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 Découvrez les différences de syntaxe de l'interface de programmation Azure 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 Découvrez les différences de syntaxe Azure CLI dans Bash, PowerShell et Cmd, obtenez 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

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

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 les guillemets 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

L’apprentissage de la sortie de commande dans une variable est bénéfique lors de la création de ressources Azure qui génèrent des secrets qui doivent ê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 Azure Key Vault et un secret qui retournent une sortie de 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 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

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

Cette section suivante est une « tâche étendue » pour un didacticiel d’intégration. Toutefois, pour gérer les ressources Azure dans les environnements de développement, de phase 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.

Ce script Bash a été testé dans Azure Cloud Shell et dépend du Bashjq 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 simplement reçu une erreur « jq command not found » ? Cela est dû au fait que ce 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.

Objet 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.
Azure Key Vault À 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.