Terraform Locals
Local values (or
locals) let you assign a name to an expression. They are similar to variables, but you cannot set them from outside; they are internal to the configuration. Locals help avoid repeating complex expressions and make your configuration more readable.Declaring Locals
Use a
locals block to define one or more named expressions.locals {
common_tags = {
Environment = var.environment
Project = "demo"
}
instance_name = "web-${var.environment}"
}Using Locals
Reference a local value with
local.<name>:resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = var.instance_type
tags = local.common_tags
}Benefits of Locals
- DRY: Write an expression once, reuse many times.
- Clarity: Give a name to a complex expression.
- Modularity: Change the definition in one place.
Example: Combining Locals and Variables
variable "environment" { default = "dev" }
locals {
name_prefix = "${var.environment}-app"
subnet_ids = var.environment == "prod" ? ["subnet-prod1", "subnet-prod2"] : ["subnet-dev1"]
}
resource "aws_instance" "app" {
count = length(local.subnet_ids)
subnet_id = local.subnet_ids[count.index]
tags = { Name = "${local.name_prefix}-${count.index}" }
}Local vs Variable
- Variables are input parameters (set by user).
- Locals are derived expressions (internal).
- Use variables for values that change between runs; use locals for intermediate calculations.
Two Minute Drill
- Locals assign names to expressions for reuse.
- Define in a
localsblock, reference withlocal.name. - Unlike variables, locals cannot be set externally.
- Ideal for common tags, name prefixes, or complex conditionals.
Need more clarification?
Drop us an email at career@quipoinfotech.com
