Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nesta etapa do tutorial, aprenda a trabalhar com variáveis:
- Execute um comando da CLI do Azure e armazene a saída em uma variável.
- Leia um arquivo JSON local e armazene valores de propriedade em uma variável.
Alguns casos de uso comuns para variáveis são:
- Obtenha informações sobre um recurso existente do Azure, como uma ID de recurso.
- Obtenha a saída de um comando da CLI do Azure, como uma senha.
- Obtenha objetos JSON para obter informações de ambiente, como IDs de desenvolvimento, estágio e produção.
Você pode usar a variável na CLI do Azure para executar operações de build e destruição em escala.
Pré-requisitos
- Você tem acesso a um grupo de recursos e uma conta de armazenamento com
readerou permissões mais altas no nível de conta de armazenamento.
Obter saída de comando usando a consulta JMESPath
Obtenha informações sobre um recurso existente do Azure usando o parâmetro --query do comando show. Uma consulta JMESPath é executada e um ou mais valores de propriedade de um recurso do Azure são retornados.
Dica
A sintaxe para --query diferencia maiúsculas de minúsculas e é específica do ambiente. Se você receber resultados vazios, verifique se usou a capitalização correta. Evite citar erros aplicando as regras que você aprendeu nas diferenças de sintaxe da CLI do Azure no Bash, no PowerShell e no Cmd
A menos que o parâmetro --output seja especificado, esses exemplos dependem de uma configuração de saída padrão do json definido em Preparar seu ambiente para a CLI do Azure
Obter propriedades de dicionário JSON de um recurso do Azure
Usando a conta de armazenamento criada em Learn Azure CLI syntax differences in Bash, PowerShell, and Cmd, obtenha primaryEndpoints da sua nova conta de armazenamento.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Saída do dicionário JSON no 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/"
}
Obter objetos JSON individuais
Para retornar propriedades individuais em uma matriz (lista), especifique uma lista delimitada por vírgulas das propriedades da conta de armazenamento.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Saída da matriz JSON no 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"
]
Renomear propriedades
Renomeie as propriedades usando colchetes ({}) e uma lista delimitada por vírgulas. Os novos nomes de propriedade não podem conter espaços. Este exemplo retorna a saída em formato table.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Saída da tabela de console. A primeira letra de cada coluna é maiúscula no --output table:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtrar resultados da consulta
Combine o que você aprendeu sobre aspas com o que acabou de aprender sobre --query. Esses exemplos aplicam um filtro.
No Bash, você não pode ter um espaço antes ou depois do sinal de igual (=). Você pode optar por usar aspas em torno do valor da variável, portanto msdocs-tutorial-rg-00000000 e "msdocs-tutorial-rg-00000000" estão corretos.
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
Criar uma saída de armazenamento de recursos do Azure em uma variável
Aprender a armazenar a saída do comando em uma variável é benéfico se você estiver criando recursos do Azure que geram segredos que devem ser protegidos. Por exemplo, quando você cria um principal de serviço, redefine uma credencial ou obtém um segredo em um cofre de chaves do Azure, a saída do comando deve ser protegida.
Crie um novo cofre de chaves do Azure e um segredo, retornando a saída do comando para uma variável. O nome do Azure Key Vault deve ser globalmente exclusivo, portanto, o identificador $RANDOM é usado neste exemplo. Para conhecer mais regras de nomenclatura do Azure Key Vault, consulte Códigos de erro comuns no Azure Key Vault.
Esses exemplos usam echo para verificar valores de variáveis porque este é um tutorial de ensino. Não use echo como valor de segredo e senha em ambientes de produção.
# 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
Obter o conteúdo de um arquivo JSON e armazená-lo em uma variável
Esta próxima seção é uma "tarefa desafiadora" para um tutorial de integração. No entanto, para gerenciar recursos do Azure em ambientes de desenvolvimento, estágio e produção, você geralmente precisa ler um arquivo de configuração.
Você está pronto para ampliar suas habilidades com a CLI do Azure? Crie um arquivo JSON contendo o JSON a seguir ou o conteúdo de sua escolha. Salve o arquivo de texto na unidade local. Se você estiver trabalhando no Azure Cloud Shell, use o ícone upload/download files na barra de menus para armazenar o arquivo de texto em sua unidade de armazenamento em nuvem.
{
"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"
}
}
}
Armazene o conteúdo do arquivo JSON em uma variável para uso posterior nos comandos da CLI do Azure. Neste exemplo, altere msdocs-tutorial.json para o nome do arquivo. Não salve o comando echo em scripts de nível de produção, pois a saída é salva no arquivo de log.
O script Bash a seguir foi testado no Azure Cloud Shell e depende do jq bash, que deve ser instalado em seu ambiente.
# 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
Você recebeu um erro de "comando jq não encontrado"? Esse erro ocorre porque o script depende do comando jq do Bash. Instale o jq em seu ambiente ou execute esse script no Azure Cloud Shell.
Agora você tem um nome de segredo do Azure Key Vault específico do ambiente armazenado em uma variável e pode usá-lo para se conectar aos recursos do Azure. Esse mesmo método serve para endereços IP de VMs do Azure e cadeias de conexão do SQL Server quando você deseja reutilizar scripts da CLI do Azure.
Obtenha mais detalhes
Deseja obter mais detalhes sobre um dos assuntos abordados nesta etapa do tutorial? Use os links nesta tabela para saber mais.
| Assunto | Saiba Mais |
|---|---|
| Variáveis | Veja exemplos avançados em Usar a CLI do Azure com êxito – Passar valores para outro comando |
| Leia uma boa visão geral das variáveis em Como usar variáveis em comandos da CLI do Azure. | |
| Consultando | Encontre uma ampla variedade de exemplos em Como consultar a saída de comando da CLI do Azure usando uma consulta JMESPath. |
Aprofunde-se mais no Bash para usar --query em Aprenda a usar o Bash com a CLI do Azure. |
|
| Cofre de chaves do Azure | Sobre o Azure Key Vault |
| Fornecer acesso a chaves, certificados e segredos do Key Vault com um controle de acesso baseado em função do Azure. | |
| Códigos de erro comuns do Azure Key Vault | |
| PowerShell | Links de referência: Get-content, Where-Object, Select-Object |
Próxima Etapa
Agora que você entende como usar variáveis para armazenar a saída de comandos da CLI do Azure e os valores de propriedade JSON, prossiga para a próxima etapa para saber como usar scripts para excluir recursos do Azure.