Azure CLI 2.0: Create, Manage, and Delete Resource Groups

Chris Pietschmann Chris Pietschmann on May 17, 2017

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:

# command format
az group create --name {group name} --location {azure region}
# usage example
az group create --name BestAppEver --location westus

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:

# 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

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:

az group create --name BestAppEver
    --location westus
    --tags "Dept=Human Resources" "Env=Prod"

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:

# command format
az group delete --name {group name}
# usage example
az group delete --name BestGoupEver
# alternate usage with quotes
az group delete --name "BestGroupEver"

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:

az group delete --name BestGroupEver --yes

List All Azure 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:

az group list

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:

# command format
az group show --name {group name}

# usage example
az group show --name BestAppEver

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:

# command format
az resource list --resource-group {group name}
# usage example
az resource list --resource-group BestAppEver

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:

# command format
az group export --name {group name}
# usage example
az group export --name SuperCloudGroup

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.

# 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