Is there an AND/OR Conditional Operator in Terraform?
TLDR
Terraform supports AND (&&
) and OR (||
) conditional operators for creating dynamic configurations. These operators are used in expressions to evaluate multiple conditions.
Using AND/OR Conditional Operators in Terraform
In Terraform, you can use logical operators to combine multiple conditions. These operators are particularly useful when defining resource conditions, variable defaults, or dynamic blocks.
AND Operator (&&)
The &&
operator returns true
if both conditions are true. Here's an example:
variable "enable_feature" {
default = true
}
variable "is_production" {
default = false
}
output "should_enable" {
value = var.enable_feature && var.is_production
}
In this example, the should_enable
output will only be true
if both enable_feature
and is_production
are true
.
OR Operator (||)
The ||
operator returns true
if either condition is true. Here's an example:
variable "enable_feature" {
default = true
}
variable "is_production" {
default = false
}
output "should_enable" {
value = var.enable_feature || var.is_production
}
In this case, the should_enable
output will be true
if either enable_feature
or is_production
is true
.
Combining AND and OR
You can combine &&
and ||
operators to create more complex conditions. Use parentheses to ensure the correct order of operations:
output "complex_condition" {
value = (var.enable_feature && var.is_production) || var.enable_feature
}
Best Practices
- Use Parentheses: Always use parentheses to make complex conditions more readable and avoid logical errors.
- Keep Conditions Simple: Break down complex conditions into smaller, reusable variables for better readability.
- Test Your Logic: Use
terraform console
to test your expressions before applying them.
By understanding and using AND/OR operators effectively, you can create more dynamic and flexible Terraform configurations.
Found an issue?