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" } }
Hey,
Thanks for the post. It really helped me. Just wondering. You declare rgName without the $ sign and then use it with the $ sign ($rgName). Is this a typo?
LikeLike
Hi Russel,
it’s not a typo, it’s up to the environment you are working on. In this case it’s Bash, and there you declare a variable like name=value and then reference it later with the $ sign in front of it.
I will change my post and make it more clear. Thanks!
LikeLike