我有 2 个标记为 app_private_subnets 的子网和 2 个标记为 data_app_subnets 的子网,如链接中所示。
我想使用 terraform 将同一路由表中同一 az 中的那些关联起来。
但是我还没有找到一种方法来做到这一点,因为我对 Terraform 相当陌生。 我的代码高达 aws_subnet_table_association 如下。
main.tf
resource "aws_subnet" "app_private_subnet" {
count = length(var.app_private_subnet_cidrs)
vpc_id = aws_vpc.dev_main.id
cidr_block = element(var.app_private_subnet_cidrs, count.index)
availability_zone = element(var.azs, count.index)
tags = {
name = "Private App Subnet AZ${count.index + 1 }"
}
}
resource "aws_subnet" "data_private_subnet" {
count = length(var.data_private_subnet_cidrs)
vpc_id = aws_vpc.dev_main.id
cidr_block = element(var.data_private_subnet_cidrs, count.index)
availability_zone = element(var.azs, count.index)
tags = {
name = "Private Data Subnet AZ${count.index + 1 }"
}
}
resource "aws_route_table" "private_route_table_az1" {
vpc_id = aws_vpc.dev_main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
tags = {
name = "Private Route Table AZ1"
}
}
resource "aws_route_table_association" "private_route_table_asso_az1" {
count = length(var.azs[0])
subnet_id = element(aws_subnet.app_private_subnet[*].id, count.index) # I'm not sure how to add the data_private_subnet
route_table_id = aws_route_table.private_route_table_az1.id
}
变量.tf
variable "app_private_subnet_cidrs" {
type = list(string)
description = "App Subnet CIDR List"
default = ["10.0.2.0/24", "10.0.3.0/24"]
}
variable "data_private_subnet_cidrs" {
type = list(string)
description = "Data Subnet CIDR List"
default = ["10.0.4.0/24", "10.0.5.0/24"]
}
variable "azs" {
type = list(string)
description = "Availability zones"
default = ["eu-west-1a", "eu-west-1b"]
}
如有任何帮助,我们将不胜感激。预先感谢。
这里有一些作业:
variable "azs" {
default = ["eu-west-1a", "eu-west-1b"]
}
output "name" {
value = length(var.azs[0])
}
你得到了什么?
看起来你还没有看到
for_each
,这是一个很好的例子: