Preencher variáveis para uso em scripts
Nesta etapa 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.
A variável pode ser usada na CLI do Azure para executar trabalhos de compilação e destruição em escala.
Pré-requisitos
- Você tem acesso a um grupo de recursos e a uma conta de armazenamento com
reader
permissões ou superiores em um 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 --query
parâmetro do show
comando. Uma consulta JMESPath é executada e um ou mais valores de propriedade de um recurso do Azure são retornados.
Gorjeta
A sintaxe para --query
diferencia maiúsculas de minúsculas e é específica do ambiente. Se receber resultados vazios, verifique a capitalização. Evite erros de citação aplicando as regras aprendidas em Aprenda as diferenças de sintaxe da CLI do Azure em Bash, PowerShell e Cmd
A menos que o --output
parâmetro seja especificado, esses exemplos dependem de uma configuração de saída padrão de json
set em Prepare your environment for the Azure CLI
Obter propriedades do dicionário JSON de um recurso do Azure
Usando a conta de armazenamento criada em Aprenda as diferenças de sintaxe da CLI do Azure em Bash, PowerShell e Cmd, obtenha a 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 do 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
Especifique uma lista delimitada por vírgulas de propriedades de conta de armazenamento para retornar propriedades individuais em uma matriz (lista).
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 do 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 propriedades usando colchetes ({}
) e uma lista delimitada por vírgula. Os novos nomes de propriedade não podem conter espaços. Este exemplo retorna a saída em table
formato.
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 do console. A primeira letra de cada coluna está em maiúsculas em --output table
:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtrar resultados da consulta
Combine o que você aprendeu sobre citação com o que você acabou de aprender sobre --query
. Estes 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"
ambos 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 nova 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 ao criar recursos do Azure que geram segredos que devem ser protegidos. Por exemplo, quando você cria uma entidade de serviço, redefine uma credencial ou obtém um segredo do cofre de chaves do Azure, a saída do comando deve ser protegida.
Crie um novo Cofre de Chaves do Azure e secreto retornando a saída do comando para uma variável. Seu nome do Cofre da Chave do Azure deve ser globalmente exclusivo, portanto, o $RANDOM
identificador é usado neste exemplo. Para obter mais regras de nomenclatura do Azure Key Vault, consulte Códigos de erro comuns para o Azure Key Vault.
Estes exemplos são usados echo
para verificar valores de variáveis porque este é um tutorial de ensino. Não use echo
para valores secretos e de senha em ambientes de nível 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 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
Obter o conteúdo de um arquivo JSON e armazená-lo em uma variável
Esta próxima seção é uma "tarefa de alongamento" para um tutorial de integração. No entanto, para gerenciar recursos do Azure em ambientes de desenvolvimento, estágio e produção, muitas vezes você precisa ler um arquivo de configuração.
Você está pronto para ampliar suas habilidades da CLI do Azure? Crie um arquivo JSON contendo o seguinte JSON ou o conteúdo do arquivo de sua escolha. Salve o arquivo de texto em sua unidade local. Se você estiver trabalhando no Azure Cloud Shell, use o upload/download files
ícone 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 em seus comandos da CLI do Azure. Neste exemplo, altere msdocs-tutorial.json
para o nome do arquivo. Não salve o echo
comando em scripts de nível de produção, pois a saída é salva em seu arquivo de log.
Esse script Bash foi testado no Azure Cloud Shell e depende do Bash jq 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ê acabou de receber um erro "comando jq não encontrado"? Isso ocorre porque esse script depende do comando Bash jq . Instale o jq em seu ambiente ou execute esse script no Azure Cloud Shell.
Agora você tem um nome secreto do Cofre da Chave do Azure específico do ambiente armazenado em uma variável e pode usá-lo para se conectar aos recursos do Azure. Esse mesmo método é bom 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
Quer mais detalhes sobre um dos assuntos abordados nesta etapa do tutorial? Use os links nesta tabela para saber mais.
Assunto | Mais informações |
---|---|
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 nos comandos da CLI do Azure. | |
A consultar | Encontre uma ampla variedade de exemplos em Como consultar a saída do comando CLI do Azure usando uma consulta JMESPath. |
Aprofunde-se no Bash usando --query o Learn to use Bash com a CLI do Azure. |
|
Cofre de chaves do Azure | Sobre o Azure Key Vault |
Forneça acesso a chaves, certificados e segredos do Cofre da Chave com um controle de acesso baseado em função do Azure. | |
Códigos de erro comuns para o Azure Key Vault | |
PowerShell | Links de referência: Get-content, Where-Object, Select-Object |
Passo Seguinte
Agora que você entende como usar variáveis para armazenar a saída do comando 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.