Azure Resource Graph está diseñado para extender la administración de los recursos de Azure, ayudándonos a gobernar nuestro entorno un poquito más. Actualmente soporta querys contra recursos básicos de Azure, como nombres de recursos, ID, Type, Subscription… Pero como todo en Azure, seguro que evolucionará y muy rápido
Azure Resource Graph está basado en lenguaje Kusto, soportando un gran número de funciones y operadores.
Para preparar nuestro entorno para hacer querys contra Azure Resource Graph, como mínimo necesitaremos permisos de lectura sobre los recursos que queremos consultar, y utilizar Azure CLI, la extensión SDK con REST o bien PowerShell. En este post exploraremos este último método.
Primero, para instalar los comandos de Azure Resource Graph, deberemos de abrir una consola de PowerShell y ejecutar el siguiente comando:
Install-Module -Name Az.ResourceGraph
A partir de aquí, sobre la misma consola de PowerShell, podemos ejecutar la siguiente query con lo que nos devolverá sobre qué número de objetos tenemos permisos sobre nuestro tenant:
1Search-AzGraph -Query "summarize count()"2count_3------4 2175
Ahora lo que haremos es consultar las máquinas virtuales que tenemos bajo la suscripción, y utilizaremos un operador para consultar tanto las máquinas en formato ARM como las que están en formato clásico (si algunos aún tenemos de esas)
1Search-AzGraph -Query "where type == 'Microsoft.Compute/virtualMachines' or type == 'Microsoft.ClassicCompute/virtualMachines' | summarize count()"2count_3------4185
Incluso podemos ver el tipo de máquinas que tenemos:
1Search-AzGraph -Query "where type =~ 'Microsoft.Compute/virtualMachines' | summarize count() by tostring(properties.storageProfile.osDisk.osType)"2properties_storageProfile_osDisk_osType count_3--------------------------------------- ------4Windows 145Linux 46
Otros ejemplos que podemos utilizar (entre muchos) son:
1# Listar Recursos por tipo de la suscripción2Search-AzGraph -Query "summarize count() by type, subscriptionId | order by type, subscriptionId asc"34# Listar Máquinas virtuales que cumplen con un patrón en concreto5Search-AzGraph -Query "where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$' | project name | order by name asc"67# Listar todas las IP públicas8Search-AzGraph -Query "where type contains 'publicIPAddresses' and isnotempty(properties.ipAddress) | project properties.ipAddress"910# Listar WebApps:11Search-AzGraph -Query "where type=='microsoft.web/sites' | project name, subscriptionId, type | order by type, subscriptionId"1213# Listar Storage accounts:14Search-AzureRmGraph -Query "where type=='microsoft.storage/storageaccounts' | project name, resourceGroup,subscriptionId"15
Alberto Andrés Rodríguez
Cloud Architect en Seidor