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