Dicas para usar a CLI do Azure com êxito

A CLI do Azure é uma ferramenta de linha de comando que permite configurar e gerenciar recursos do Azure por meio de vários ambientes de shell. Depois de escolher seu ambiente de shell preferido e instalar a CLI do Azure, use este artigo para descobrir dicas úteis sobre como evitar armadilhas comuns e usar a CLI do Azure com êxito.

Para saber mais sobre comandos específicos da CLI do Azure, confira a Lista de referências da CLI do Azure.

Escolha uma linguagem de script

A CLI do Azure é uma ferramenta de software livre que você pode executar em várias linguagens de script.

  • É a linguagem de script que determina as regras de citação, caractere de escape e continuação de linha para comandos da CLI do Azure.
  • Pode ser desafiador copiar a sintaxe de comando da CLI do Azure contendo aspas simples ou duplas, caracteres de escape ou caracteres de continuação de linha entre idiomas.
  • A maior parte da documentação da Microsoft para a CLI do Azure é escrita e testada no Bash.
  • Se o PowerShell for a linguagem de script de sua escolha, considere usar a ferramenta Azure PowerShell, que tem a funcionalidade nativa da linguagem de script do PowerShell .

Para obter mais informações sobre opções de linguagem de script para a CLI do Azure, consulte Escolher a ferramenta de linha de comando correta.

Perguntas frequentes

Aqui estão alguns links para ajudá-lo a responder às perguntas mais frequentes da CLI do Azure:

Área temática com link do artigo Dica
Trabalhe por trás de um proxy Informações sobre como trabalhar em um servidor proxy.
Gerenciador de contas da Web (WAM) Informações sobre o WAM e como desativá-lo.
Definições de configuração Lista de definições de configuração da CLI do Azure disponíveis, como ativar/desativar recursos da CLI do Azure e definir valores padrão.
Formatos de saída Instruções sobre como armazenar IDs de recursos do Azure em variáveis e proteger segredos retornados por comandos da CLI do Azure.
Passando valores JSON em uma string Exemplos de aspas para valores de parâmetro JSON.
Ciclo de vida de suporte Informações sobre sistemas operacionais com suporte, linguagens de script e o fim do serviço para versões e dependências da CLI do Azure.
REST API Comando az rest alternativo a ser usado quando um comando específico da CLI do Azure não estiver disponível para um recurso do Azure.
Grupos de referência da CLI do Azure Lista de A a Z de grupos de referência da CLI do Azure com detalhamento de subgrupos e todos os comandos da CLI do Azure.
Artigos da CLI do Azure Lista de A a Z de Inícios Rápidos, guias de instruções e tutoriais que usam comandos de referência da CLI do Azure. A lista é agrupada por grupo de referência e subgrupo para facilitar a pesquisa.
Exemplos da CLI do Azure Lista de A a Z de exemplos, incluindo os exemplos no repositório GitHub Azure-samples/azure-cli-samples.
Solução de problemas Causa do erro e dicas de correção.
Novidades Breve resumo dos novos recursos da CLI do Azure.

Converter valores para outro comando

Se o valor for usado mais de uma vez, atribua-o a uma variável. As variáveis permitem que você use valores mais de uma vez ou crie scripts mais gerais. Este exemplo atribui uma ID encontrada pelo comando az vm list a uma variável.

# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM running'].id" --output tsv)

# verify the value of the variable
echo $running_vm_ids

Se o valor for usado apenas uma vez, considere usar a barra vertical. (A tubulação passa a saída de um comando como entrada para um segundo comando.)

az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm

Para listas de vários valores, considere as seguintes opções:

  1. Se você precisar de mais controles no resultado, use o loop "for":
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id"   -output tsv); do
    echo stopping $vmList
    az vm stop --ids $vmList
    if [ $? -ne 0 ]; then
        echo "Failed to stop $vmList"
        exit 1
    fi
    echo $vmList stopped
done
  1. Como alternativa, use xargs e considere usar o sinalizador -P para executar as operações em paralelo para melhor desempenho:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Por fim, a CLI do Azure tem suporte interno para processar comandos com vários --ids em paralelo de modo a obter o mesmo efeito de xargs. @- é usado para obter valores do pipe:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Para obter mais informações de como usar constructos do Bash com a CLI do Azure, incluindo loops, instruções de maiúsculas e minúsculas, if..then..else e tratamento de erro, confira Aprender a usar o Bash com a CLI do Azure.

Parâmetros comuns de atualização

Os grupos de comandos da CLI do Azure geralmente apresentam um comando de atualização. Por exemplo, as máquinas virtuais do Azure incluem o comando az vm update. A maioria dos comandos de atualização oferece os três parâmetros comuns: --add, --set, e --remove.

Os parâmetros --set e --add usam uma lista de pares chave-valor separados por espaços: key1=value1 key2=value2. Para ver quais propriedades você pode atualizar, use um comando de exibição, como az vm show.

az vm show --resource-group VMResources --name virtual-machine-01

Para simplificar o comando, você pode usar uma cadeia de caracteres JSON. Por exemplo, use o seguinte valor para anexar um novo disco de dados a uma máquina virtual:

az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
   {\"id\":
   \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
   \"lun\": 1}"

Comandos de recurso genéricos

Um serviço com o qual você deseja trabalhar pode não ter suporte para a CLI do Azure. Você pode usar os comandos az resource ou az rest para trabalhar com esses recursos.

Execução simultânea

Se você executar comandos da CLI do Azure simultaneamente no mesmo computador, poderão ocorrer conflitos de gravação se vários comandos da CLI do Azure forem gravados no mesmo cache de token da MSAL (Biblioteca de Autenticação da Microsoft).

Para evitar possíveis falhas, isole a pasta de configuração da CLI do Azure para cada script definindo a variável AZURE_CONFIG_DIR de ambiente para cada script em um diretório separado. Os comandos da CLI do Azure nesse script salvam a configuração e o cache de token no local configurado em vez de na pasta padrão ~/.azure.

export AZURE_CONFIG_DIR=/my/config/dir

Operações assíncronas

As operações no Azure podem levar um tempo significativo. Por exemplo, a configuração de uma máquina virtual em um datacenter não é instantânea. A CLI do Azure aguarda até que o comando seja concluído para aceitar outros comandos. Portanto, muitos comandos oferecem um parâmetro --no-wait, como é mostrado aqui:

az group delete --name MyResourceGroup --no-wait

Quando você exclui um grupo de recursos, todos os recursos que pertencem a ele também são removidos. A remoção desses recursos pode demorar bastante tempo. Quando você executa o comando com o parâmetro --no-wait, o console aceita novos comandos sem interromper a remoção.

Muitos comandos oferecem a opção de espera, pausando o console até que alguma condição seja atendida. O seguinte exemplo usa o comando az vm wait para dar suporte à criação de recursos independentes em paralelo:

az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait

subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id

Depois que as duas IDs forem criadas, você poderá usar o console novamente.

Exemplos de script

Veja exemplos de uso de variáveis e loops em uma lista ao trabalhar com as Máquinas Virtuais do Azure. Para obter exemplos mais detalhados de como usar constructos do Bash com a CLI do Azure, incluindo loops, instruções de maiúsculas e minúsculas, if/then/else e tratamento de erro, confira Aprender a usar o Bash com a CLI do Azure.

Use estes scripts para salvar IDs em variáveis:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
   `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    SET "vm_ids=%%F %vm_ids%"  :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel

Use estes scripts para fazer loop em uma lista:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
    `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    ECHO Stopping %%F
    az vm stop --ids %%F
)

Confira também