Concatenate a String with a Variable in Terraform
TLDR
In Terraform, you can concatenate strings with variables using interpolation syntax (${}) or the join function for more complex cases.
Concatenating Strings with Variables in Terraform
String concatenation is a common requirement in Terraform configurations, such as dynamically constructing resource names or paths.
Using Interpolation Syntax
The simplest way to concatenate a string with a variable is by using interpolation syntax:
variable "environment" {
default = "production"
}
output "bucket_name" {
value = "my-app-${var.environment}-bucket"
}
In this example, the bucket_name output will be "my-app-production-bucket" if the environment variable is set to "production".
Using the join Function
For more complex concatenations, you can use the join function:
variable "tags" {
default = ["app", "web", "prod"]
}
output "tag_string" {
value = join("-", var.tags)
}
This will produce a single string: "app-web-prod".
Combining Interpolation and Functions
You can combine interpolation and functions for advanced use cases:
variable "region" {
default = "us-east-1"
}
output "resource_id" {
value = "resource-${join("-", [var.region, "123"])}"
}
The resource_id output will be "resource-us-east-1-123".
Best Practices
- Use Meaningful Names: Ensure variable names clearly indicate their purpose.
- Avoid Hardcoding: Use variables for dynamic values instead of hardcoding strings.
- Test Outputs: Use
terraform consoleto verify concatenated strings before applying changes.
By mastering string concatenation, you can create more dynamic and reusable Terraform configurations.
We earn commissions when you shop through the links below.
DigitalOcean
Cloud infrastructure for developers
Simple, reliable cloud computing designed for developers
DevDojo
Developer community & tools
Join a community of developers sharing knowledge and tools
Acronis
The most secure backup
Acronis: the most secure backup solution for your data
Want to support DevOps Daily and reach thousands of developers?
Become a SponsorFound an issue?