AWS VPC模块公共和私有子网-Terraform

时间:2020-04-20 09:24:44

标签: amazon-web-services terraform amazon-vpc terraform-provider-aws

我正在尝试使用通过“ template_file”创建的公共和私有子网创建AWS vpc环境,但是,我在定义VPC模块内部的公共和私有子网时遇到了问题。

我使用以下方法生成了子网:

onKeyPress

在VPC模块中,上面的代码将我所有的子网添加到公共子网(工作)中:

data "template_file" "cidrsubnets" {
  count = var.subnet_count[terraform.workspace]

  template = "$${cidrsubnet(vpc_cidr,8,current_count)}"

  vars = {
    vpc_cidr      = var.network_address_space[terraform.workspace]
    current_count = count.index
  }
}

但是,我想将列表中的偶数子网添加到公共子网中,并将列表中的奇数子网添加到私有子网中。 我仍然没有将子网自动划分为私有和公共子网(这是我所需要的),但是尝试在列表中添加特定元素并得到上面的错误: enter image description here

您可以帮忙吗?谢谢您的回复。

1 个答案:

答案 0 :(得分:0)

在这里使用template_file数据源似乎过于复杂。我想您想要实现的功能类似于以下内容(使用locals可提高可读性)[未测试]:

locals {
  cidr    = var.network_address_space[terraform.workspace]
  netnums = range(var.subnet_count[terraform.workspace])
}

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"

  ....
  cidr           = local.cidr
  public_subnets = [for i in local.netnums : cidrsubnet(local.cidr, 8, i)]
  ....
}

netnums是一个以0开头的数字数组。有关如何从其他数字开始的信息,请参见range() terraform函数。