The provider offers two ways to generate names: a Data Source and a Resource. Choosing the right one depends on your lifecycle requirements.
Data Source (Recommended)
Use the data "azurecaf_name" block when you want names to be evaluated during the plan phase. This allows you to see the generated names in your Terraform plan before any resources are actually created.
data "azurecaf_name" "storage" {
name = "mydata"
resource_type = "azurerm_storage_account"
prefixes = ["prod"]
random_length = 3
}
resource "azurerm_storage_account" "example" {
name = data.azurecaf_name.storage.result
}
Resource
Use the resource "azurecaf_name" block when you need to generate multiple related names for different resource types simultaneously. This ensures consistency across a group of resources.
resource "azurecaf_name" "multi_res" {
name = "myapp"
resource_type = "azurerm_app_service"
resource_types = [
"azurerm_app_service_plan",
"azurerm_application_insights"
]
prefixes = ["prod"]
random_length = 3
}
# Accessing the names:
# Primary name: azurecaf_name.multi_res.result
# All generated names: azurecaf_name.multi_res.results
# Data Source Example
data "azurecaf_name" "storage" {
name = "mydata"
resource_type = "azurerm_storage_account"
prefixes = ["prod"]
random_length = 3
}
# Resource Example
resource "azurecaf_name" "multi_res" {
name = "myapp"
resource_type = "azurerm_app_service"
resource_types = [
"azurerm_app_service_plan",
"azurerm_application_insights"
]
prefixes = ["prod"]
random_length = 3
}