All cloud resources created / provisioned in Microsoft Azure need to be associated with Resource Groups. This is one of the basic features of the Azure Resource Management model to cloud resource management, and it makes it far easier to manage groupings of resources that comprise full applications and workloads. The Azure Portal makes it extremely simple to create and delete Azure Resource Groups. This article takes a look at managing Azure Resource Groups form the cross-platform command-line using the Azure CLI 2.0.

Create an Azure Resource Group

Since all cloud resources (Web App, SQL Database, Virtual Machine, IP Address, Virtual Network, etc.) in Microsoft Azure needs to be associated with a Resource Group, this places the Resource Group at the forefront to Azure Resource provisioning. The Azure Portal makes this easy as it asks for the Resource Group name when you provision all resources and will even create new Resource Groups for you at the time of provisioning other resources. However, when working with provisioning new Azure resources using the Azure CLI, you do need to first create your Resource Group before provisioning other Azure resources.

The following Azure CLI 2.0 command is used to create resource groups in your Azure Subscription:

[code language=”bash”]
# command format
az group create –name {group name} –location {azure region}

# usage example
az group create –name BestAppEver –location westus
[/code]

In the above commands, the first example shows the format for using the “az group create” command, with placeholders for the parameter values. The second example demonstrates how to use the command to create a resource group named “BestAppEver” and specifying the “westus” Azure Region for the Resource Group.

The resource group create command does have some additional parameters that are optional when using the command. One of the most useful is the “–tags” parameter which allows you to specify the Tags to assign to the Resource Group. Tags allow you to assign additional meta-data to your resources in Azure. Here’s some examples of meta-data that can be useful to set on your Azure resource groups:

  • Using tags to signify the Department or Cost Center for a Resource Group can help with rolling up into Azure Billing to help you determine the Azure spend to pass on to that particular Cost Center or Department so you know what part of your business is responsible for a particular cloud workload and it’s cost.
  • Using tags to signify the Environment for a Resource Group can help with defining specifically which Azure resources are for Production, Development, or Test environments.

Here’s the same commands above for creating a Resource Group that include the “–tags” parameter to assign Tags to a Resource Group at the time of creation:

[code language=”bash”]
# command format
az group create –name {group name}
–location {azure region}
–tags {tag keys/values}

# usage example
az group create –name BestAppEver
–location westus
–tags Dept=HR

# usage setting multiple Tags
az group create –name BestAppEver
–location westus
–tags Dept=HR Env=Prod
[/code]

Notice the method of specifying multiple Tags for the Resource Group. This is done by adding a space between them. It may seem obvious that these would be comma or semicolon delimited, but in fact these need to be space delimited.

If you need to use a longer or more readable value for the value of a Tag, then you need to use quotes around the key=value of the Tag. Here’s an example of doing this:

[code language=”bash”]
az group create –name BestAppEver
–location westus
–tags "Dept=Human Resources" "Env=Prod"
[/code]

Delete an Azure Resource Group

If you have resources or a specific workload you no longer need running and want to delete and remove it from your Azure Subscription, you could go and delete each resource individually. However, this is a tedious and cumbersome task to do. Instead, the best approach is to delete the Resource Group, as this will delete the full Resource Group including all the resources within it.

The following Azure CLI 2.0 command is used to Delete an Azure Resource Group and all the resources contained within it:

[code language=”bash”]
# command format
az group delete –name {group name}

# usage example
az group delete –name BestGoupEver

# alternate usage with quotes
az group delete –name "BestGroupEver"
[/code]

Be default, when you delete a Resource Group the Azure CLI 2.0 will prompt you to ensure you really mean to delete the Resource Group. You can optionally pass in the “–yes” parameter to indicate a hard yes and signify that the CLI should not prompt you for confirmation. Here’s an example of using this parameter:

[code language=”bash”]

az group delete –name BestGroupEver –yes

[/code]

List All Resource Groups

If you’re not sure of the name of a Resource Group, then you can also list out all the resource groups on your Azure Subscription using the following command:

[code language=”bash”]

az group list

[/code]

Show a Resource Group

There are times when you may want to inspect the region, tags or some other information on a specific Resource Group. Here’s the command that lets you show the details for a Resource Group:

[code language=”bash”]
# command format
az group show –name {group name}
# usage example
az group show –name BestAppEver
[/code]

List All Resources within the Resource Group

Another thing that can be useful is to be able to see what are all the resources contained within a particular Resource Group. This can help when verifying this is the Resource Group you need to be working with, or even to inspect the Resource Group when working with a particular resource in general.

Here’s the command to list out all the resources in a particular Azure Resource Group:

[code language=”bash”]
# command format
az resource list –resource-group {group name}
# usage example
az resource list –resource-group BestAppEver
[/code]

Export Resource Group to ARM Template

The Azure Portal has some nice user interface components for being able to work with Azure ARM Templates. However, there are times when it can be useful to generate an ARM Template for a specific Resource Group from the command-line.

Here’s the command you can use to export a Resource Group to an ARM Template:

[code language=”bash”]
# command format
az group export –name {group name}

# usage example
az group export –name SuperCloudGroup
[/code]

Add Tags to Existing Resource Group

There are times when Resource Groups get created without Tags. Perhaps, a user did it through he Azure Portal, or you just have existing resources that don’t yet have Tags assigned. Whatever the reason, you can use the following command to easily add Tags to existing resource groups. You can also use this command to modify the Tags of an existing Resource Group as well.

[code language=”bash”]
# command format
az group update –name {group name}
–set {tag properties to set}

# usage example
az group update –name SuperCloudGroup
–set tags.Env=Stage tags.Dept=IT
[/code]

Posted by Chris Pietschmann

Chris is a Microsoft MVP and has 15+ years of experience building enterprise systems both in the cloud and on-premises. He is also a Microsoft Certified (MCSD) Azure Solutions Architect. He has a passion for technology and sharing what he learns with others to help enable them to learn faster and be more productive.

One Comment

  1. […] Azure CLI 2.0: Manage Resource Groups (Chris Pietschmann) […]

    Reply

Leave a Reply