Terraform资源中的条件嵌套块

时间:2019-10-02 15:32:07

标签: terraform

提供此资源:

resource "google_compute_instance" "instance" {
    ...
    network_interface {
        ...
        access_config {
            ...
        }
    }
}

我想根据条件有条件地定义access_config属性。

[编辑]解决方案

resource "google_compute_instance" "instance" {
    ...
    network_interface {
        ...
        dynamic "access_config" {
            for_each = var.condition ? [1] : []
            content {
                ...
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我不太熟悉,但是我认为您可以使用count参数来完成此操作。

首先,您需要将一个变量添加到您的variables.tf文件中:

variable "conditional_on" {
  description = "enable or disable"
  type        = bool
}

然后,您可以在count参数中添加变量:

resource "google_compute_instance" "instance" {
    ...
    network_interface {
        ...
        dynamic "access_config" {
            count = var.conditional_on ? 1 : 0
            content {
                ...
            }
        }
    }
}

有关Terraform文档的更多信息: https://www.terraform.io/docs/configuration-0-11/interpolation.html#conditionals

答案 1 :(得分:1)

类似于 Josep Nadal 提到的,但将 count 更改为 for_each 就像

  dynamic "access_config" {
    for_each = var.conditional_on ? ["1"] : []
    content {
      nat_ip = null
    }
  }