Expressions#

  • for

  • condition

for Expressions#

> var.aws_regions
tolist([
"eu-central-1",
"us-east-1",
"us-east-2",
])
> [for v in var.aws_regions: upper(v)]
[
"EU-CENTRAL-1",
"US-EAST-1",
"US-EAST-2",
]
> {for s in var.aws_regions : s => upper(s)}
{
"eu-central-1" = "EU-CENTRAL-1"
"us-east-1" = "US-EAST-1"
"us-east-2" = "US-EAST-2"
}
>
>
> [for i, v in var.aws_regions : "${i} is ${v}"]
[
"0 is eu-central-1",
"1 is us-east-1",
"2 is us-east-2",
]
>

Condition#

定义一个variable

variable "users" {
  type = map(object({
    is_admin = bool
    name     = string
  }))
  default = {
    "admin" = {
      is_admin = true
      name     = "admin"
    }
    "user" = {
      is_admin = false
      name     = "user"
    }
  }
}

locals {
  admin_users = {
    for name, user in var.users : name => user
    if user.is_admin
  }
  regular_users = {
    for name, user in var.users : name => user
    if !user.is_admin
  }
}
> var.users
tomap({
  "admin" = {
    "is_admin" = true
    "name" = "admin"
  }
  "user" = {
    "is_admin" = false
    "name" = "user"
  }
})
> local.admin_users
{
  "admin" = {
    "is_admin" = true
    "name" = "admin"
  }
}
> local.regular_users
{
  "user" = {
    "is_admin" = false
    "name" = "user"
  }
}
>