我查看了terraform VPC模块的代码,发现了
resource "aws_subnet" "public" {
vpc_id = aws_vpc_ipv4_cidr_block_association.secondary_cidr.vpc_id
cidr_block = "172.2.0.0/24"
availability_zone = null
}
根据AWS提供商的文档,availability_zone
属性是可选的。
将availability_zone
设置为null
是否与不列出所有内容相同?例如,这与编写以下配置的方式相同:
resource "aws_subnet" "in_secondary_cidr" {
vpc_id = aws_vpc_ipv4_cidr_block_association.secondary_cidr.vpc_id
cidr_block = "172.2.0.0/24"
}
我以前从未见过。似乎这是一种在模块中声明可选变量的流行方式:
variable "private_subnet_assign_ipv6_address_on_creation" {
description = "Assign IPv6 address on private subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
type = bool
default = null
}
是的,如果使用null,则与不列出所有内容相同。来自文档:
一个表示缺失或遗漏的值。如果您将资源的一个参数设置为null,Terraform的行为就像您完全忽略了它一样——如果它有一个参数的默认值,它将使用该参数的缺省值,或者如果该参数是强制性的,则会引发错误。null在条件表达式中最有用,因此如果条件不满足,可以动态省略参数。