首页 > 解决方案 > if 语句通过 terraform 中的 for_each

问题描述

我正在使用 terraform 0.14.2,我有下一个代码:

resource "aws_backup_vault" "vaultrds" {
  for_each             = local.ob

  name = "vault-${each.value}"
}
locals {
    ob = toset([
     "es",
     "uk"
    ])

资源通过这个 var 进行迭代,现在我想设置一个条件,如果 var.anyvar 存在,则不会像这样执行上述任务:

anyvar = true

resource "aws_backup_vault" "vaultrds" {
  for_each    = var.anyvar == true : local.ob
  *(don't execute anything)*
  name = "vault-${each.value}"
}

有任何想法吗?

谢谢!

标签: terraform

解决方案


首先确保如果没有设置变量,则默认值为空。

variable "anyvar" {
    default = null
}

然后使用一个动态块来检查它是否不为空。

 dynamic "aws_backup_vault" {
    for_each = var.anyvar != null ? [1] : []
    content {
      name = var.name
    }
  }

推荐阅读