Formatos de saída para os comandos da CLI do Azure

A CLI do Azure utiliza JSON como formato de saída predefinido, mas oferece outros formatos. Utilize o parâmetro --output (--out ou -o) para formatar a saída da CLI. Seguem-se os valores de argumentos e os tipos de saída:

--output Description
json Cadeia de carateres JSON. Essa configuração é o padrão
jsonc JSON colorido
table Tabela ASCII com teclas como cabeçalhos de coluna
tsv Valores separado por tabulações, sem chaves
yaml YAML, uma alternativa legível por humanos ao JSON
yamlc YAML colorido
none Nenhuma saída além de erros e avisos

Aviso

Use um formato de saída ou armazene a saída do comando em uma variável para evitar a exposição de segredos, como chaves de none API e credenciais. Nota: Certos ambientes CI/CD podem armazenar a saída dos comandos executados em logs. É uma boa prática confirmar o que está escrito nesses arquivos de log e quem tem acesso aos logs. Para obter 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 seguinte saída tem alguns campos omitidos para efeitos de brevidade e as informações de identificação foram 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 simples. O YAML tende a ser mais fácil de ler do que o JSON e facilmente mapeia para esse formato. Algumas aplicações e os comandos da CLI utilizam o YAML como uma entrada de configuração, em vez do JSON.

az vm list --output yaml

A seguinte saída tem alguns campos omitidos para efeitos de brevidade e as informações de identificação foram 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, o que facilita a leitura e análise. Os objetos aninhados não são incluídos na saída da tabela, mas ainda assim podem ser filtrados como parte de uma consulta. Alguns campos não são incluídos na tabela, pelo que este formato é mais indicado quando quiser uma descrição geral rápida dos dados num formato pesquisável por humanos.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Pode utilizar o parâmetro --query para personalizar as propriedades e as colunas que pretende mostrar na saída de lista. O exemplo a seguir mostra como selecionar apenas 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

Nota

Algumas chaves não são impressas na vista de tabela por predefinição. São id, type, e etag. Se precisar delas na sua saída, pode sempre utilizar a funcionalidade de novas chaves JMESPath para alterar o nome da chave e evitar a filtragem.

az vm list --query "[].{objectID:id}" --output table

Para saber mais sobre como utilizar as consultas para filtrar dados, veja Utilizar consultas JMESPath com a CLI do Azure.

Formato de saída TSV

O tsv formato de saída retorna valores separados por tabulação e nova linha sem formatação extra, teclas ou outros símbolos. Este formato permite consumir facilmente a saída noutros comandos e ferramentas que têm de processar, de alguma forma, o texto. À semelhança do formato table, tsv não imprime objetos aninhados.

Com base no exemplo anterior, a opção tsv gera uma saída de resultados separados 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 na ordem de saída. A CLI faz um esforço melhor para preservar a ordenação classificando as chaves no JSON de resposta alfabeticamente e, em seguida, imprimindo seus valores em ordem para a saída TSV. Não há garantia de que o pedido seja sempre idêntico, pois o formato de resposta do serviço do Azure pode ser alterado.

Para impor um pedido consistente, você precisará usar o parâmetro e o --query formato de lista de seleção múltipla. Quando um comando CLI retorna um único dicionário JSON, use o formato [key1, key2, ..., keyN] geral para forçar uma ordem de chave. Para comandos da CLI que retornam uma matriz, use o formato [].[key1, key2, ..., keyN] geral para ordenar valores de coluna.

Por exemplo, para ordenar as informações exibidas acima por ID, local, grupo de recursos e 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 seguinte mostra de que modo a saída de tsv pode ser enviada para outros comandos em bash. A consulta é usada para filtrar a saída e forçar a ordenação, grep seleciona itens que têm texto "RGD" neles, em seguida, o cut comando 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 tsv formato de saída é 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 --query exemplos de parâmetros, consulte Como consultar a saída do comando da CLI do Azure.

Nenhum formato de saída

Algumas informações de saída de comandos da CLI do Azure que você deve proteger. Eis quatro exemplos:

  • palavras-passe
  • cadeias de ligação
  • segredos
  • chaves

Para proteger segredos e chaves ao usar comandos da CLI do Azure, escolha uma destas opções:

Opção Benefício Caso de utilização
--output none formato de saída Impede que informações confidenciais sejam exibidas no console. Se o comando falhar, você ainda receberá mensagens de erro. 1. Use quando a saída do comando puder ser recuperada posteriormente.
2. Use quando 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.
--query parâmetro Armazena a saída em uma variável. 1. Use quando a saída do comando não puder ser recuperada posteriormente.
2. Use quando precisar usar um valor de saída de comando em um script.

Usar none e recuperar informações de segurança posteriormente

Alguns segredos do Azure podem ser recuperados posteriormente. Um bom exemplo são os segredos armazenados no Cofre da Chave do Azure. Neste exemplo, crie um segredo do Azure Key Vault usando az keyvault secret set com a --output none opção. 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 para armazenar a saída em uma variável tecnicamente não é um formato de --query 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 a sintaxe dos parâmetros, consulte Como consultar a saída do comando da CLI do Azure.

Definir o formato de saída predefinido

Os comandos da CLI do Azure fornecem saída que pode ser controlada de duas maneiras:

Controlo de saída Benefício Procedimentos
Cenário global Selecione um valor de saída padrão que você mais usa para não precisar fornecer continuamente um --output parâmetro para cada comando de referência. Especifique um formato de saída padrão usando az config set.
Parâmetro de comando Especifique a saída no nível de comando e dê aos seus scripts a máxima flexibilidade. Você controla a saída do console e a entrada variável para cada comando de referência. Substitua a configuração padrão usando o parâmetro de um comando de --output 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 --output parâmetro. 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

Consulte também