Creating resources
Now that we’ve got a Terraform command-line and given it the credentials it needs to provision resources in our Cloud, we can start provisioning.
Keeping it unique
When running these kind of tutorials, I find it helpful to keep all the resources unique. That can either be done by appending a unique name, or using a short random string.
This resource creates a random string, which can be accessed using ${random_string.unique_key.result}
.
resource "random_string" "unique_key" {
length = 8
special = false
}
We only want to use this random_string if the user hasn’t passed a variable, either using the -var
command line option, a TF_VAR_ environment variable or .tfvars. We can detect that based on the value and derive a local variable:
locals {
# use a unique ID for all resources based on a random string unless one is specified
unique_append = "${ var.unique_id == "" ? "-${random_string.unique_key.result}" : "-${var.unique_id}"}"
}
Terraform resource group
Having generated that local.unique_append
we can use it in resources names to keep them unique. Even if this module is re-run in the same account, the resource names should be different enough to avoid a collision.
resource "azurerm_resource_group" "rg" {
name = "rg${local.unique_append}"
location = "${var.region}"
}
Filtering in the console
By selecting a unique name, we can easily filter the Azure web console ‘Resource’ view to show only those resources.
Open-source
All the code for these tutorials is available as part of DevOps-Workstream. The segments from this tutorial specifically make up terraform/tutorial/03-azure-resource-group-with-unique-default
here on GitHub.
If you’d like to see all the previous and future installments of this tutorial, they’re available under the remprov
tag.
More like this
If you’d like to see more posts like this, or see this post expanded in more detail, please let us know.
Leave a comment