Splat
The splat expression is a syntactic sugar variant of the for expression, they produce the same result with the same input but are easier to declare.
For example, the following expressions are equivalent: [for o in var.instances : o.name]
and var.instances[*].name
.
If var.instances
has an attribute name
, both expressions return a list containing all the instance names.
It is important to note that the splat expression doesn’t work with maps or objects.
Using a splat expression #
It’s a common practice to use splat expressions when defining outputs.
The following resource defines 2 Redis instances
resource "google_redis_instance" "example" {
count = 2
name = "redis-instance-${count.index}"
memory_size_gb = 10
}
We can use a splat expression to output all the names of all the Redis instances
output "redis_instance_names" {
value = google_redis_instance.example[*].name
}
Resources that use the for_each
argument will appear in expressions as a map of objects, so you can’t use splat expressions and you have to use a for expression loop.
You can’t refer to a resource using the splat operator [*]
if the resource uses a for_each
argument. This is because in this case the resource is a map of objects rather than a list of objects.
The splat operator applies only to lists.
Want to learn more about splat expressions? Check out the docs.
Continue to Data Sources