Exercício – Consultar informações do sistema e de runtime sobre a VM
Agora que criamos uma máquina virtual, podemos obter informações sobre ela por meio de outros comandos.
Vamos começar executando vm list
.
az vm list
Esse comando retornará todas as máquinas virtuais definidas nessa assinatura. Você pode filtrar a saída para um grupo de recursos específico por meio do parâmetro --resource-group
.
Tipos de saída
Observe que o tipo de resposta padrão para todos os comandos que fizemos até agora foi o JSON. Isso é ótimo para o script, mas a maioria das pessoas acha que ele é mais difícil de ser lido. Você pode alterar o estilo de saída para qualquer resposta por meio do sinalizador --output
. Por exemplo, execute o comando a seguir no Azure Cloud Shell para ver o estilo de saída diferente.
az vm list --output table
Junto com table
, você pode especificar json
(o padrão), jsonc
(JSON colorido) ou tsv
(valores separados por tabulação). Experimente usar algumas variações com o comando anterior para ver a diferença.
Obter o endereço IP
Outro comando útil é vm list-ip-addresses
, que lista os endereços IP públicos e privados de uma VM. Se eles forem alterados ou se não forem capturados durante a criação, você poderá recuperá-los a qualquer momento.
az vm list-ip-addresses -n SampleVM -o table
Isso retorna uma saída como:
VirtualMachine PublicIPAddresses PrivateIPAddresses
---------------- ------------------- --------------------
SampleVM 168.61.54.62 10.0.0.4
Dica
Observe que estamos usando uma sintaxe abreviada do sinalizador --output
como -o
. Você pode abreviar a maioria dos parâmetros para comandos da CLI do Azure como um único traço e uma única letra. Por exemplo, você pode abreviar --name
como -n
e --resource-group
como -g
. Isso é útil para digitar caracteres do teclado, mas recomendamos o uso do nome de opção completo em scripts para maior clareza. Verifique a documentação para obter detalhes sobre cada comando.
Obter detalhes da VM
Podemos obter informações mais detalhadas sobre uma máquina virtual específica por nome ou ID executando o comando vm show
.
az vm show --resource-group "<rgn>[sandbox resource group name]</rgn>" --name SampleVM
Isso retorna um bloco JSON bastante grande com todos os tipos de informações sobre a VM, incluindo dispositivos de armazenamento anexados, adaptadores de rede e todas as IDs de objeto para os recursos aos quais a VM está conectada. Novamente, podemos alterá-lo para um formato de tabela, mas isso omite quase todos os dados interessantes. Em vez disso, podemos recorrer a uma linguagem de consulta interna do JSON chamada JMESPath.
Adicionar filtros a consultas com o JMESPath
O JMESPath é uma linguagem de consulta padrão do setor, criada em torno de objetos JSON. A consulta mais simples é especificar um identificador que seleciona uma chave no objeto JSON.
Por exemplo, considerando o objeto:
{
"people": [
{
"name": "Fred",
"age": 28
},
{
"name": "Barney",
"age": 25
},
{
"name": "Wilma",
"age": 27
}
]
}
Podemos usar a consulta people
para retornar a matriz de valores para a matriz people
. Se apenas desejamos obter uma das pessoas, podemos usar um indexador. Por exemplo, people[1]
retornará:
{
"name": "Barney",
"age": 25
}
Também podemos adicionar qualificadores específicos que retornam um subconjunto dos objetos com base em alguns critérios. Por exemplo, adicionar o qualificador people[?age > '25']
retornará:
[
{
"name": "Fred",
"age": 28
},
{
"name": "Wilma",
"age": 27
}
]
Por fim, podemos restringir os resultados com a adição de uma seleção: people[?age > '25'].[name]
, que retorna apenas os nomes:
[
[
"Fred"
],
[
"Wilma"
]
]
O JMESQuery tem vários outros recursos de consulta interessantes. Quando tiver tempo, confira o tutorial online disponível no site JMESPath.org.
Filtrar as consultas da CLI do Azure
Com uma compreensão básica das consultas JMES, é possível adicionar filtros aos dados retornados por consultas, como o comando vm show
. Por exemplo, é possível recuperar o nome de usuário administrador:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "osProfile.adminUsername"
Podemos atribuir o tamanho à nossa VM:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query hardwareProfile.vmSize
Ou, para recuperar todas as IDs dos adaptadores de rede, podemos executar a consulta:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id"
Essa técnica de consulta funciona com qualquer comando da CLI do Azure e você pode usá-la para extrair partes específicas de dados da linha de comando. Também é útil para a criação de scripts. Por exemplo, você pode retirar um valor de sua conta do Azure e armazená-lo em uma variável de ambiente ou de script. Se você decidir usá-lo dessa maneira, será útil adicionar o parâmetro --output tsv
(que pode ser abreviado como -o tsv
). Isso retornará resultados que incluem apenas os valores de dados reais com separadores de guia.
Por exemplo:
az vm show \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--query "networkProfile.networkInterfaces[].id" -o tsv
retorna o texto: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.Network/networkInterfaces/SampleVMVMNic