Obter informações da VM com consultas
Agora que uma VM foi criada, as informações detalhadas sobre ela podem ser recuperadas. O comando comum para obter informações de um recurso é show
.
az vm show --name $vmName --resource-group $resourceGroup
Uma Máquina Virtual tem muitas propriedades que podem ser difíceis de analisar visualmente. O JSON retornado contém informações sobre autenticação, armazenamento de adaptadores de rede e muito mais. Mais importante: ele contém as IDs de objeto do Azure para recursos aos quais a VM está conectada. As IDs de objeto permitem o acesso direto a esses recursos para se obter mais informações sobre a configuração e os recursos da VM.
Para extrair a ID, é usado o argumento --query
. As consultas são escritas na linguagem de consulta JMESPathComece obtendo a ID de objeto do NIC (controle de adaptador de rede).
az vm show --name $vmName \
--resource-group $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
Muita coisa está acontecendo por simplesmente adicionar a consulta. Cada parte dela faz referência a uma chave na saída do JSON, ou é um operador JMESPath.
networkProfile
é uma chave JSON de nível superior que temnetworkInterfaces
como uma subchave. Se um valor JSON é um dicionário, suas chaves são referenciadas a partir da chave pai com o operador.
.- O valor
networkInterfaces
é uma matriz, então ele mescla com o operador[]
. Esse operador executa o restante da consulta em cada elemento da matriz. Nesse caso, ele obtém o valorid
de todos os elementos da matriz.
É garantido que o formato de saída tsv
(valores separados por tabulação) incluirá apenas os dados de resultado e o espaço em branco que consiste em guias e novas linhas.
Uma vez que o valor retornado é uma única cadeia de caracteres vazia, é seguro atribuir diretamente a uma variável do shell.
Para obter mais informações sobre como consultar a saída da CLI do Azure, confira Como consultar a saída do comando da CLI do Azure usando uma consulta JMESPath
Continue e atribua a ID de objeto do NIC a uma variável do shell.
nicId=$(az vm show \
-n $vmName \
-g $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
Este exemplo também demonstra o uso de argumentos curtos. Você pode usar -g
em vez de --resource-group
, -n
em vez de --name
e -o
em vez de --output
.