Formatos de saída dos comandos da CLI do Azure
A CLI do Azure usa JSON como formato de saída padrão, mas oferece outros formatos. Use o parâmetro --output
(--out
ou -o
) para formatar a saída da CLI. Os valores e tipos de argumentos de saída são:
--output | Descrição |
---|---|
json |
cadeia de caracteres JSON. Essa configuração é a padrão |
jsonc |
JSON colorido |
table |
A tabela ASCII com chaves como títulos de colunas |
tsv |
Valores separados por tabulação, sem chaves |
yaml |
YAML, uma alternativa ao JSON legível por seres humanos |
yamlc |
YAML colorido |
none |
Nenhuma saída diferente de erros e avisos |
Aviso
Use um formato de saída de none
ou armazene a saída do comando em uma variável para evitar a exposição de segredos, como chaves de API e credenciais. Observação: Alguns ambientes de CI/CD podem armazenar a saída dos comandos executados em registros. É uma boa prática confirmar o que está escrito nesses arquivos de registro e quem tem acesso a eles.
Para mais informações, consulte Nenhum formato de saída.
Formato de saída JSON (padrão)
O exemplo a seguir exibe a lista de máquinas virtuais em suas assinaturas no formato JSON padrão.
az vm list --output json
A saída a seguir tem alguns campos omitidos para fins de brevidade e informações de identificação substituídas.
[
{
"availabilitySet": null,
"diagnosticsProfile": null,
"hardwareProfile": {
"vmSize": "Standard_DS1"
},
"id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
"instanceView": null,
"licenseType": null,
"location": "westus",
"name": "DemoVM010",
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
"primary": null,
"resourceGroup": "demorg1"
}
]
},
...
...
...
]
Formato de saída YAML
O formato yaml
imprime a saída como YAML, um formato de serialização de dados de texto sem formatação. YAML tende a ser mais fácil de ler que o JSON e facilmente mapeia para esse formato. Alguns aplicativos e comandos da CLI usam YAML como entrada de configuração, em vez de JSON.
az vm list --output yaml
A saída a seguir tem alguns campos omitidos para fins de brevidade e informações de identificação substituídas.
- availabilitySet: null
diagnosticsProfile: null
hardwareProfile:
vmSize: Standard_DS1_v2
id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
identity: null
instanceView: null
licenseType: null
location: westus
name: ExampleVM1
networkProfile:
networkInterfaces:
- id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
primary: null
resourceGroup: DemoRG1
...
...
Formato de saída da tabela
O formato table
imprime a saída como uma tabela ASCII, facilitando a leitura e a análise. Objetos aninhados não são incluídos na saída da tabela, mas ainda podem ser filtrados como parte de uma consulta. Alguns campos não estão incluídos na tabela, por isso, esse formato é o ideal quando seu objetivo é ter uma visão geral rápida dos dados e que possa ser pesquisada manualmente.
az vm list --output table
Name ResourceGroup Location
----------- --------------- ----------
DemoVM010 DEMORG1 westus
demovm212 DEMORG1 westus
demovm213 DEMORG1 westus
KBDemo001VM RGDEMO001 westus
KBDemo020 RGDEMO001 westus
Você pode usar o parâmetro --query
para personalizar as propriedades e as colunas que você deseja mostrar na saída da lista. O exemplo a seguir mostra como selecionar o Nome da VM e o Nome do Grupo de Recursos no comando list
.
az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource Name
---------- -----------
DEMORG1 DemoVM010
DEMORG1 demovm212
DEMORG1 demovm213
RGDEMO001 KBDemo001VM
RGDEMO001 KBDemo020
Observação
Algumas chaves não são impressas no modo de exibição de tabela, por padrão. Elas são: id
, type
e etag
. Se você precisar ver isso na saída, poderá usar o recurso de recriação de chave JMESPath para alterar o nome da chave e evitar a filtragem.
az vm list --query "[].{objectID:id}" --output table
Para obter mais informações sobre como usar consultas para filtrar dados, confira Usar as consultas JMESPath com a CLI do Azure.
O formato de saída TSV
O formato de saída tsv
retorna valores separados por tabulação e nova linha sem formatação, chaves ou outros símbolos adicionais. Esse formato facilita o consumo da saída em outros comandos e ferramentas que precisam processar o texto de alguma maneira. Como o formato table
, tsv
não imprime objetos aninhados.
Se o exemplo anterior com a opção tsv
for usado, gerará o resultado separado por tabulações.
az vm list --output tsv
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010 None None westus DemoVM010 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines cbd56d9b-9340-44bc-a722-25f15b578444
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212 None None westus demovm212 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines 4bdac85d-c2f7-410f-9907-ca7921d930b4
None None /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213 None None westus demovm213 None Succeeded DEMORG1 None Microsoft.Compute/virtualMachines 2131c664-221a-4b7f-9653-f6d542fbfa34
None None /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM None None westus KBDemo001VM None Succeeded RGDEMO001 None Microsoft.Compute/virtualMachines 14e74761-c17e-4530-a7be-9e4ff06ea74b
None None /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020 None None westus KBDemo020 None Succeeded RGDEMO001 None Microsoft.Compute/virtualMachines 36baa9-9b80-48a8-b4a9-854c7a858ece
Uma restrição do formato de saída TSV é que não há uma garantia de ordem na saída. A CLI realiza todos os esforços para preservar a ordenação classificando alfabeticamente as chaves de classificação na resposta JSON e depois imprimindo os valores nessa ordem para a saída TSV. Não há garantia de que a ordem seja sempre idêntica, já que o formato de resposta de serviço do Azure pode mudar.
Para impor uma ordem consistente, é necessário usar o parâmetro --query
e o formato de lista de multisseleção. Quando um comando de CLI retorna um único dicionário JSON, use o formato geral [key1, key2, ..., keyN]
para forçar uma ordem de chave. Para comandos da CLI que retornam uma matriz, use o [].[key1, key2, ..., keyN]
de formato geral para ordenar valores de coluna.
Por exemplo, para ordenar as informações exibidas acima da ID, do local, do grupo de recursos e do nome da VM:
az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010 westus DEMORG1 DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212 westus DEMORG1 demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213 westus DEMORG1 demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM westus RGDEMO001 KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020 westus RGDEMO001 KBDemo020
O exemplo a seguir mostra como a saída tsv
pode ser transportada para outros comandos no bash. A consulta é usada para filtrar a saída e forçar o ordenamento, grep
seleciona itens com o texto "RGD" e o comando cut
seleciona o quarto campo para mostrar o nome da VM na saída.
az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020
O formato de saída tsv
é frequentemente usado ao atribuir valores a variáveis. Este exemplo obtém a ID de assinatura ativa e a armazena em uma variável para uso em um script.
# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"
Para obter mais exemplos de parâmetros --query
, consulte Como consultar a saída do comando da CLI do Azure.
Nenhum formato de saída
Alguns comandos da CLI do Azure geram informações que você deve proteger. Aqui estão quatro exemplos:
- senhas
- Cadeias de conexão
- segredos
- keys
Para proteger segredos e chaves ao usar comandos da CLI do Azure, escolha uma dessas opções:
Opção | Benefício | Caso de uso |
---|---|---|
--output none formato de saída |
Evita que informações confidenciais sejam exibidas no seu console. Se o comando falhar, você ainda receberá mensagens de erro. | 1. Use quando a saída do comando pode ser recuperada posteriormente. |
2. Use quando você não tiver necessidade de saída. | ||
3. Uma escolha comum quando uma identidade gerenciada ou uma entidade de serviço está sendo usada para gerenciar recursos do Azure. | ||
Parâmetro --query |
Armazena a saída em uma variável. | 1. Use quando a saída do comando não pode ser recuperada posteriormente. |
2. Use quando precisar usar um valor de saída de comando em um script. |
Use none
e recupere informações de segurança posteriormente
Alguns segredos do Azure podem ser recuperados posteriormente. Um bom exemplo são os segredos armazenados no Azure Key Vault. Neste exemplo, crie um segredo do Azure Key Vault usando az keyvault secret set com a opção --output none
. Você pode recuperar o segredo mais tarde usando o comando az keyvault secret show.
az keyvault secret set --name MySecretName \
--vault-name MyKeyVaultName \
--value MySecretValue\
--output none
Usar --query
e retornar informações de segurança para uma variável
O uso de --query
para armazenar a saída em uma variável não é tecnicamente um formato de saída. É uma solução para proteger segredos, e é uma alternativa ao uso --output none
. Por exemplo, quando você redefine uma credencial de entidade de serviço, a senha não pode ser recuperada novamente.
Redefina uma credencial de entidade de serviço retornando a saída no formato JSON padrão:
# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json
Saída do console mostrando a nova senha no console.
{
"appId": "myServicePrincipalID",
"password": "myServicePrincipalNewPassword",
"tenant": "myTenantID"
}
Uma solução melhor é retornar informações confidenciais para uma variável.
# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)
# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"
Para obter mais exemplos sobre como armazenar a saída para uma variável, consulte Usar a CLI do Azure com êxito - passar valores para outro comando. Para saber mais sobre --query
sintaxe de parâmetro, consulte Como consultar a saída do comando da CLI do Azure.
Definir o formato de saída padrão
Os comandos da CLI do Azure fornecem saída que pode ser controlada de duas maneiras:
Controle de saída | Benefício | Como fazer |
---|---|---|
Cenário global | Selecione um valor de saída padrão que você mais usa para não precisar fornecer continuamente um parâmetro --output para cada comando de referência. |
Especifique um formato de saída padrão usando az config set. |
Parâmetro Command | Especifique a saída no nível de comando e dê aos scripts a máxima flexibilidade. Você controla a saída do console, e a entrada de variáveis para cada comando de referência. | Substitua a configuração padrão usando o parâmetro --output de um comando de referência. |
A saída padrão para a CLI do Azure é json
. Defina a saída padrão para none
quando a saída do console não for necessária.
az config set core.output=none
Você pode substituir a saída padrão de qualquer comando de referência da CLI do Azure usando o parâmetro --output
. Aqui está um script de comandos que alteram e testam a saída do comando:
# set your default output to table
az config set core.output=table
# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show
# override your table default and show your active subscription in jsonc format
az account show --output jsonc
# reset your default output to json
az config set core.output=json