Share via


Változók feltöltése szkriptekben való használatra

Ebben az oktatóanyagi lépésben megismerheti a változók működését:

  • Hajtsa végre az Azure CLI-parancsot, és tárolja a kimenetet egy változóban.
  • Olvassa el a helyi JSON-fájlt, és tárolja a tulajdonságértékeket egy változóban.

A változók gyakori használati esetei a következők:

  • Információk lekérése egy meglévő Azure-erőforrásról, például egy erőforrás-azonosítóról.
  • Kimenet lekérése egy Azure CLI-parancsból, például jelszóból.
  • JSON-objektumok lekérése környezeti információkhoz, például fejlesztési, fázis- és éles azonosítókhoz.

A változó ezután az Azure CLI-ben használható a buildelési és megsemmisítő feladatok nagy léptékű végrehajtásához.

Előfeltételek

  • Hozzáféréssel rendelkezik egy erőforráscsoporthoz és tárfiókhoz reader tárfiókszinten vagy magasabb engedélyekkel.

Parancskimenet lekérése JMESPath-lekérdezéssel

Egy meglévő Azure-erőforrással kapcsolatos információk lekérése a --queryshow parancs paraméterével. A rendszer végrehajt egy JMESPath-lekérdezést , és visszaad egy Azure-erőforrás egy vagy több tulajdonságértékét.

Tipp.

A kis- és nagybetűk --query szintaxisa környezetfüggő. Ha üres eredményeket kap, ellenőrizze a nagybetűsítést. A Hibák idézetének elkerülése a Learn Azure CLI szintaxisbeli különbségeinek a Bash, a PowerShell és a Cmd használatával történő alkalmazásával

Ha nincs megadva a paraméter, ezek a --output példák a környezet előkészítése az Azure CLI-hez beállítás alapértelmezett kimeneti konfigurációján json alapulnak

Egy Azure-erőforrás JSON-szótártulajdonságainak lekérése

A Learn Azure CLI-ben létrehozott tárfiók Bash, PowerShell és Cmd szintaxisbeli különbségeit használva szerezze be az primaryEndpoints új tárfiókot.

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

Konzol JSON-szótárkimenete:

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

Egyéni JSON-objektumok lekérése

Adja meg a tárfiók tulajdonságainak vesszővel tagolt listáját egy tömb (lista) egyedi tulajdonságainak visszaadásához.

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

Konzol JSON-tömbkimenete:

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

Tulajdonságok átnevezése

Nevezze át a tulajdonságokat kapcsos zárójelek ({}) és vesszővel tagolt lista használatával. Az új tulajdonságnevek nem tartalmazhatnak szóközöket. Ez a példa formátumbeli table kimenetet ad vissza.

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

Konzoltábla kimenete. Az egyes oszlopok első betűje nagybetűs:--output table

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

Lekérdezési eredmények szűrése

Kombinálja az idézetkészítésről tanultakat az imént tanultakkal --query. Ezek a példák szűrőt alkalmaznak.

A Bashben nem lehet szóköz az egyenlőségjel= előtt vagy után. Választhatja, hogy idézőjeleket használ a változó értéke körül, így msdocs-tutorial-rg-00000000"msdocs-tutorial-rg-00000000" mindkettő helyes.

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

Új Azure-erőforrástárolási kimenet létrehozása változóban

Tanulás parancskimenet változóban való tárolása akkor hasznos, ha olyan Azure-erőforrásokat hoz létre, amelyek titkos kulcsokat adnak ki, amelyeket védeni kell. Ha például létrehoz egy szolgáltatásnevet, alaphelyzetbe állít egy hitelesítő adatot, vagy lekér egy Azure Key Vault-titkos kulcsot, a parancs kimenetét védeni kell.

Hozzon létre egy új Azure Key Vaultot, és adja vissza a parancs kimenetét egy változónak. Az Azure Key Vault nevének globálisan egyedinek kell lennie, ezért az azonosítót ebben a $RANDOM példában használjuk. További Azure Key Vault-elnevezési szabályokért tekintse meg az Azure Key Vault gyakori hibakódjait.

Ezek a példák a változó értékek ellenőrzésére használhatók echo , mivel ez egy oktatóprogram. Ne használja echo a titkos és jelszóértékeket éles környezetekben.

# 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

JSON-fájl tartalmának lekérése és tárolása változóban

Ez a következő szakasz egy "stretch task" egy előkészítési oktatóanyaghoz. Az Azure-erőforrások fejlesztési, fázis- és éles környezetekben való kezeléséhez azonban gyakran be kell olvasnia egy konfigurációs fájlt.

Készen áll az Azure CLI-készségek fejlesztésére? Hozzon létre egy JSON-fájlt, amely a következő JSON-t vagy a választott fájltartalmat tartalmazza. Mentse a szövegfájlt a helyi meghajtóra. Ha az Azure Cloud Shellben dolgozik, a upload/download files menüsávon található ikonnal tárolja a szövegfájlt a felhőbeli tárolómeghajtón.

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

A JSON-fájl tartalmát egy változóban tárolhatja az Azure CLI-parancsok további használatához. Ebben a példában váltson msdocs-tutorial.json a fájl nevére. Ne mentse a echo parancsot éles szintű szkriptekben, mert a kimenet a naplófájlba lesz mentve.

Ezt a Bash-szkriptet az Azure Cloud Shellben tesztelték, és a Bash jq-jától függ, amelyet telepíteni kell a környezetben.

# 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

Most kapott egy "jq parancs nem található" hibaüzenetet? Ennek az az oka, hogy ez a szkript a Bash jq parancstól függ. Telepítse a jq-t a környezetében, vagy futtassa ezt a szkriptet az Azure Cloud Shellben.

Most már rendelkezik egy környezetspecifikus Azure Key Vault-titkos névvel, amely egy változóban van tárolva, és használhatja az Azure-erőforrásokhoz való csatlakozáshoz. Ugyanez a módszer az Azure-beli virtuális gépek és az SQL Server kapcsolati sztring IP-címéhez is hasznos, ha azure CLI-szkripteket szeretne újra használni.

További részletek

Szeretne részletesebben is megtudni az oktatóanyag lépéseinek egyik témakörét? További információért használja a táblázatban található hivatkozásokat.

Tárgy További információ
Változók Speciális példák az Azure CLI sikeres használata – Értékek átadása egy másik parancsnak
Olvassa el a változók jó áttekintését a változók Azure CLI-parancsokban való használatáról.
Lekérdezés Az Azure CLI-parancs kimenetének JMESPath-lekérdezéssel történő lekérdezéséhez számos példát találhat.
Részletesebben is megismerkedhet a Bash használatával --query a Learnben , hogy a Basht az Azure CLI-vel használhassa.
Azure Key Vault Az Azure Key Vault bemutatása
Azure-beli szerepköralapú hozzáférés-vezérléssel hozzáférést biztosíthat a Key Vault kulcsaihoz, tanúsítványaihoz és titkos kulcsaihoz.
Az Azure Key Vault gyakori hibakódjai
PowerShell Hivatkozási hivatkozások: Get-content, Where-Object, Select-Object

Következő lépés

Most, hogy megismerte, hogyan használhat változókat az Azure CLI-parancsok kimenetének és JSON-tulajdonságértékeinek tárolására, folytassa a következő lépésben, és ismerje meg, hogyan törölhet szkripteket az Azure-erőforrások törléséhez.