今天早些时候,我看到https://github.com/terraform-aws-modules/terraform-aws-vpc/blob/v2.77.0/main.tf深入了解AWS的VPC模块在幕后是如何工作的。
我正在努力解决的一件事是计数条件,比如aws_internet_gateway资源中的计数条件。
有人能解释和翻译这个资源中定义的计数实际在做什么吗?现在我很困惑。
resource "aws_internet_gateway" "this" {
count = var.create_vpc && var.create_igw && length(var.public_subnets) > 0 ? 1 : 0
vpc_id = local.vpc_id
tags = merge(
{
"Name" = format("%s", var.name)
},
var.tags,
var.igw_tags,
)
}
它使用三元运算的一般形式为:
CONDITION ? TRUEVAL : FALSEVAL
在模块中,
CONDITION is var.create_vpc && var.create_igw && length(var.public_subnets) > 0
TRUEVAL is 1
FALSEVAL is 0
此将转换为以下内容:如果create_vpc
和create_igw
都是true
,并且已经定义了public_subnets
,则count
将是1
(TRUEVAL
(,并且将恰好创建一个aws_internet_gateway.this
。
相反,如果不满足CONDITION
,则count
将是0
(FALSEVAL
(,并且不会创建aws_internet_gateway.this
。
一般来说,有条件地在地形中创建资源是一种常见的模式:
resource "type" "name" {
count = CONDITION : 1 ? 0
}