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 --query
show
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
A parancskimenet változóban való tárolásának elsajátítá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.