Variabelen invullen voor gebruik in scripts
In deze zelfstudiestap leert u hoe u kunt werken met variabelen:
- Voer een Azure CLI-opdracht uit en sla uitvoer op in een variabele.
- Lees een lokaal JSON-bestand en sla eigenschapswaarden op in een variabele.
Enkele veelvoorkomende gebruiksvoorbeelden voor variabelen zijn:
- Informatie ophalen over een bestaande Azure-resource, zoals een resource-id.
- Uitvoer ophalen van een Azure CLI-opdracht, zoals een wachtwoord.
- JSON-objecten ophalen voor omgevingsgegevens, zoals ontwikkeling, fase en productie-id's.
De variabele kan vervolgens worden gebruikt in Azure CLI om bouwtaken op schaal uit te voeren en te vernietigen.
Vereisten
- U hebt toegang tot een resourcegroep en opslagaccount met
reader
of hogere machtigingen op opslagaccountniveau.
Opdrachtuitvoer ophalen met behulp van JMESPath-query
Informatie ophalen over een bestaande Azure-resource met behulp van de --query
parameter van de show
opdracht. Er wordt een JMESPath-query uitgevoerd en een of meer eigenschapswaarden van een Azure-resource worden geretourneerd.
Tip
De syntaxis voor --query
is hoofdlettergevoelig en omgevingsspecifiek. Als u lege resultaten ontvangt, controleert u uw hoofdlettergebruik. Vermijd fouten door de regels toe te passen die u in Learn Azure CLI-syntaxisverschillen hebt geleerd in Bash, PowerShell en Cmd
Tenzij de --output
parameter is opgegeven, zijn deze voorbeelden afhankelijk van een standaarduitvoerconfiguratie van json
de set in Uw omgeving voorbereiden voor de Azure CLI
Eigenschappen van JSON-woordenlijst van een Azure-resource ophalen
Met behulp van het opslagaccount dat is gemaakt in Learn Azure CLI-syntaxisverschillen in Bash, PowerShell en Cmd, haalt u het primaryEndpoints
nieuwe opslagaccount op.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Uitvoer van console-JSON-woordenlijst:
{
"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/"
}
Afzonderlijke JSON-objecten ophalen
Geef een door komma's gescheiden lijst met eigenschappen van het opslagaccount op om afzonderlijke eigenschappen in een matrix (lijst) te retourneren.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Uitvoer van console-JSON-matrix:
[
"/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"
]
De naam van eigenschappen wijzigen
Wijzig de naam van eigenschappen met accolades ({}
) en een door komma's gescheiden lijst. De nieuwe eigenschapsnamen mogen geen spaties bevatten. In dit voorbeeld wordt uitvoer geretourneerd in table
indeling.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Uitvoer van consoletabel. De eerste letter van elke kolom wordt in hoofdletters geplaatst in --output table
:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Queryresultaten filteren
Combineer wat u hebt geleerd over quoteren met wat u zojuist hebt geleerd --query
. In deze voorbeelden wordt een filter toegepast.
In Bash kunt u geen spatie voor of na het gelijkteken (=
) hebben. U kunt ervoor kiezen om aanhalingstekens te gebruiken rond de variabele waarde, dus msdocs-tutorial-rg-00000000
en "msdocs-tutorial-rg-00000000"
beide juist zijn.
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
Een nieuwe Azure-resource maken waarin uitvoer in een variabele wordt opgeslagen
Het is nuttig om opdrachtuitvoer op te slaan in een variabele bij het maken van Azure-resources die geheimen uitvoeren die moeten worden beveiligd. Wanneer u bijvoorbeeld een service-principal maakt, een referentie opnieuw instelt of een Azure-sleutelkluisgeheim ophaalt, moet de uitvoer van de opdracht worden beveiligd.
Maak een nieuwe Azure Key Vault en geheim voor het retourneren van opdrachtuitvoer naar een variabele. Uw Azure Key Vault-naam moet wereldwijd uniek zijn, dus de $RANDOM
id wordt in dit voorbeeld gebruikt. Zie Algemene foutcodes voor Azure Key Vault voor meer naamgevingsregels voor Azure Key Vault.
Deze voorbeelden gebruiken echo
om variabele waarden te verifiëren, omdat dit een leszelfstudie is. Gebruik dit niet echo
voor geheime en wachtwoordwaarden in omgevingen op productieniveau.
# 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
De inhoud van een JSON-bestand ophalen en opslaan in een variabele
Deze volgende sectie is een stretch-taak voor een zelfstudie over onboarding. Voor het beheren van Azure-resources in ontwikkel-, fase- en productieomgevingen moet u vaak een configuratiebestand lezen.
Bent u klaar om uw Azure CLI-vaardigheden uit te rekken? Maak een JSON-bestand met de volgende JSON of de gewenste bestandsinhoud. Sla het tekstbestand op uw lokale station op. Als u in Azure Cloud Shell werkt, gebruikt u het upload/download files
pictogram in de menubalk om het tekstbestand op te slaan in uw cloudopslagstation.
{
"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"
}
}
}
Sla de inhoud van uw JSON-bestand op in een variabele voor verder gebruik in uw Azure CLI-opdrachten. In dit voorbeeld wijzigt msdocs-tutorial.json
u de naam van het bestand. Sla de echo
opdracht niet op in scripts op productieniveau, omdat de uitvoer wordt opgeslagen in het logboekbestand.
Dit Bash-script is getest in Azure Cloud Shell en is afhankelijk van de Bash-jq die in uw omgeving moet worden geïnstalleerd.
# 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
Hebt u zojuist de fout 'jq-opdracht niet gevonden' ontvangen? Dit komt omdat dit script afhankelijk is van de Bash jq-opdracht . Installeer jq in uw omgeving of voer dit script uit in Azure Cloud Shell.
U hebt nu een omgevingsspecifieke azure Key Vault-geheime naam die is opgeslagen in een variabele en u kunt deze gebruiken om verbinding te maken met Azure-resources. Deze methode is ook geschikt voor IP-adressen van Azure-VM's en SQL Server-verbindingsreeks s wanneer u Azure CLI-scripts opnieuw wilt gebruiken.
Meer informatie
Wilt u meer informatie over een van de onderwerpen die in deze zelfstudiestap worden behandeld? Gebruik de koppelingen in deze tabel voor meer informatie.
Onderwerp | Meer informatie |
---|---|
Variabelen | Zie geavanceerde voorbeelden in De Azure CLI gebruiken : waarden doorgeven aan een andere opdracht |
Lees een goed overzicht van variabelen in Het gebruik van variabelen in Azure CLI-opdrachten. | |
Uitvoeren van query's | Zoek een breed scala aan voorbeelden in Het uitvoeren van query's op Azure CLI-opdrachtuitvoer met behulp van een JMESPath-query. |
Ga dieper in op Bash met behulp van --query Learn om Bash te gebruiken met de Azure CLI. |
|
Azure Key Vault | Info over Azure Key Vault |
Toegang bieden tot Key Vault-sleutels, -certificaten en -geheimen met een op rollen gebaseerd toegangsbeheer van Azure. | |
Veelvoorkomende foutcodes voor Azure Key Vault | |
Powershell | Naslagkoppelingen: Get-content, Where-Object, Select-Object |
Volgende stap
Nu u begrijpt hoe u variabelen gebruikt om uitvoer van Azure CLI-opdrachten en JSON-eigenschapswaarden op te slaan, gaat u verder met de volgende stap om te leren hoe u scripts gebruikt om Azure-resources te verwijderen.