Create output variables with Azure CLI 2.0
I’m using more and more the Azure CLI 2.0, which makes my scripting life with Azure Resources a lot easier.
The default output of the Azure CLI is json, but you can also use other kind of output formats, as described in this blog.
I want to have some variables that I can reuse in other commands, so let’s say I want to get the name of all the Resource Groups which have a tag called Kind with a value VM, I can use the following JMESPath query:
az group list --query "[?tags.Kind=='VM'].name"
The output will be:
[
"Development",
"Mystique"
]
Now, I want to pick the first one:
az group list --query "[?tags.Kind=='VM'].name|[0]"
Let’s set the output into a variable called rgName so that I can reuse it later:
Note: I am working from a Bash shell, so variables are defined like name=value and referred later with a $ sing in front of it
rgName="$(az group list --query "[?tags.Kind=='VM'].name|[0]" --output tsv)"
the switch –output tsv makes possible to remove the double quotes from the output.
Now we can reuse the variable in other commands:
az group show -n $rgName
And the output:
{
"id": "/subscriptions/ff1a0889-5f9e-44bc-908c-59e3e99361c3/resourceGroups/Development",
"location": "westeurope",
"managedBy": null,
"name": "Development",
"properties": {
"provisioningState": "Succeeded"
},
"tags": {
"Kind": "VM"
}
}