Terraform – Spalat Expression

什么是展开表达式(Splat Expression)

Terraform 的展开表达式是一种简洁的语法,用于对列表(或其他集合类型)中的每个元素进行相同的操作。例如,如果你有一个对象列表,每个对象都包含属性 id,你可以用展开表达式快速提取所有的 id 值,而无需写完整的 for 循环:

# 使用 for 表达式
[for o in var.list : o.id]

# 等价的展开表达式
var.list[*].id

在展开表达式中,[*] 表示对列表中的所有元素进行遍历,然后取每个元素的右侧属性。这种写法简洁且易读,非常适合在引用资源属性时使用

使用案例

提取所有服务器的 id

variable "servers" {
  default = [
    { id = "server-1", name = "web-01" },
    { id = "server-2", name = "web-02" }
  ]
}

output "server_ids" {
  value = var.servers[*].id
}

Output:

Loading

Facebook评论