【问题标题】:How to reference resources created by for_each in Terraform如何在 Terraform 中引用 for_each 创建的资源
【发布时间】:2020-01-23 21:18:22
【问题描述】:

我在 Terraform 中使用 for_each 创建了多个子网 [私有/公共],如下所示

resource "aws_subnet" "public" {
  for_each = toset(data.aws_availability_zones.azs.names)
  vpc_id = aws_vpc.vpc.id
  cidr_block = cidrsubnet(var.private_ranges,1 ,index(data.aws_availability_zones.azs.names, each.value))
  availability_zone = each.value
  map_public_ip_on_launch = true
  tags = merge(local.common_tags, map("Name", join("-", [local.prefix, index(data.aws_availability_zones.azs.names,each.value )]),
  "Availibility Zone", each.value, "Type", "Public"))

  lifecycle {
    prevent_destroy = false
  }
}

resource "aws_subnet" "private" {
  for_each = toset(data.aws_availability_zones.azs.names)
  vpc_id = aws_vpc.vpc.id
  cidr_block = cidrsubnet(var.private_ranges,1 ,index(data.aws_availability_zones.azs.names, each.value))
  availability_zone = each.value
  tags = merge(local.common_tags, map("Name", join("-", [local.prefix, index(data.aws_availability_zones.azs.names,each.value )]),
  "Availibility Zone", each.value, "Type", "Private"))

  lifecycle {
    prevent_destroy = false
  }
}

我需要在其他资源aws_default_network_acl中引用这些子网

resource "aws_default_network_acl" "default" {
  default_network_acl_id = aws_vpc.vpc.default_network_acl_id
  subnet_ids = <can you tell me how to reference the subnet ids here>
........

【问题讨论】:

  • 你想要所有这些吗?还是其中的特定子集?
  • 所有的,私有的和公共的
  • 我尝试了以下方法,似乎可以正常工作subnet_ids = concat([for subnet in aws_subnet.private: subnet.id], [for subnet in aws_subnet.public: subnet.id])

标签: terraform


【解决方案1】:

我使用以下解决方案做到了,

subnet_ids = concat([for subnet in aws_subnet.private: subnet.id], [for subnet in aws_subnet.public: subnet.id])

【讨论】:

    猜你喜欢
    • 2021-04-15
    • 2020-12-09
    • 2020-12-17
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2023-02-08
    相关资源
    最近更新 更多