Terraform:基于.tfvars中变量的条件创建资源

时间:2020-02-14 17:54:39

标签: terraform terraform-provider-cloudflare

我在.tf文件中定义了一些应用程序通用的资源。我通过.tfvars文件填充了许多字段。我需要完全基于.tfvars中的变量来省略一些资源。

例如,如果我有像这样的资源:

resource "cloudflare_record" "record" {
  zone_id = "${data.cloudflare_zones.domain.zones[0].id}"
  name    = "${var.subdomain}"
  value   = "${var.origin_server}"
  type    = "CNAME"
  ttl     = 1
  proxied = true
}

但是随后我在cloudflare = false文件中声明了类似.tfvars的内容,我希望能够执行以下操作:

if var.cloudflare {
  resource "cloudflare_record" "record" {
    zone_id = "${data.cloudflare_zones.domain.zones[0].id}"
    name    = "${var.subdomain}"
    value   = "${var.origin_server}"
    type    = "CNAME"
    ttl     = 1
    proxied = true
 }
}

我看过动态块,但是看起来您只能使用它们来编辑资源中的字段和块。我需要能够忽略整个资源。

1 个答案:

答案 0 :(得分:4)

这实际上非常简单。使用count中声明的变量,添加具有三元条件的.tfvars参数,如下所示:

resource "cloudflare_record" "record" {
  count = var.cloudflare ? 1 : 0
  zone_id = "${data.cloudflare_zones.domain.zones[0].id}"
  name    = "${var.subdomain}"
  value   = "${var.origin_server}"
  type    = "CNAME"
  ttl     = 1
  proxied = true
}

在此示例中,var.cloudflare是在.tfvars文件中声明的布尔值。如果为真,则将创建计数1 record。如果为假,则将创建计数0 record