如何在 terraform 中的同一子网关联中关联相同 az 的不同标记的 aws 子网

问题描述 投票:0回答:1

我有 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"]
}

如有任何帮助,我们将不胜感激。预先感谢。

terraform terraform-provider-aws
1个回答
0
投票

这里有一些作业:

variable "azs" {
  default = ["eu-west-1a", "eu-west-1b"]
}

output "name" {
  value = length(var.azs[0])
}

你得到了什么?


看起来你还没有看到

for_each
,这是一个很好的例子:
https://developer.hashicorp.com/terraform/language/meta-arguments/for_each#chaining-for_each- Between-resources

© www.soinside.com 2019 - 2024. All rights reserved.