Terraform:基于.tfvars中的变量有条件地创建资源
我在Terraform:基于.tfvars中的变量有条件地创建资源,terraform,terraform-provider-cloudflare,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}"
.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
}
但是,我在我的.tfvars
文件中声明了类似于cloudflare=false的东西,我希望能够这样做:
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
}
}
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
}
我已经研究了动态块,但看起来您只能使用它们来编辑资源中的字段和块。我需要能够忽略整个资源。这实际上非常简单。使用.tfvars
中声明的变量添加一个带有三元条件的count
参数,如下所示:
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
}
}
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的记录。如果为false,则将创建计数为0的记录
在计数
应用后,资源成为一个组,因此在后面的参考中使用组的0-index
:
cloudflare_record.record[0].some_field
什么版本的Terraform?我现在安装了Terraform v0.12.10,但如果需要,我可以切换到另一个版本。是否有一种方法可以允许在不使用索引的情况下引用此资源?e、 g.cloudflare\u record.record[0]。name
?如果使用计数功能,则需要索引。如果不想硬编码0,可以使用count.index。请参阅:若由于count字段,资源并没有得到create,那个么下面的行将失败cloudflare\u记录。记录[0]。一些\u字段
。如何输出此值