Wie überprüfe ich über die Azure CLI, ob eine VM bereits vorhanden ist?

Wie überprüfe ich über die Azure CLI, ob eine VM bereits vorhanden ist?

Dies ist eine funktionierende Lösung, aber nicht sehr sauber:

if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" == "$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")" ]; 
then
    printf "VM DOES NOT EXIST YET"
else
    printf "VM ALREADY EXISTS"
fi

Ich konnte nicht herausfinden, was
"$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")"
zurückkommt, weshalb ich diese Lösung nicht abkürzen konnte.
Ich bin sicherlich kein Experte für Bash-Skripting und weiß nicht, wie ich das Ergebnis in Hex-Werte oder ähnliches umwandeln kann, um es sichtbar zu machen.

Ich suche also entweder nach einer Kurzversion dieser Lösung oder nach einem anderen, saubereren Ansatz. Leider konnte ich nichts dergleichen finden az vm exists.

Antwort1

Sie könnten verwendenAzure Graphum es zu tun.

az graph query -q "Resources | where type =~'Microsoft.Compute/virtualMachines' | limit 1"

Sie können einige Beispiele sehenHier.

Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| order by name asc

Antwort2

Ich habe vor einiger Zeit die Lösung gefunden. Die Ausgabe des Befehls az vm list, wenn keine VM verfügbar ist, ist anscheinend die leere Zeichenfolge. Sie müssen für den Vergleich jedoch ein Gleichheitszeichen anstelle von zwei verwenden.

if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
    echo "No VM was found."
else
    echo "VM was found."
fi

verwandte Informationen