我在.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
}
}
我看过动态块,但是看起来您只能使用它们来编辑资源中的字段和块。我需要能够忽略整个资源。
答案 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
。