terraform - 将 vpc_id 参数从不同的 VPC 传递到多个子网

Posted

技术标签:

【中文标题】terraform - 将 vpc_id 参数从不同的 VPC 传递到多个子网【英文标题】:terraform - passing vpc_id parameter from different VPC's to several subnets 【发布时间】:2021-09-25 14:28:27 【问题描述】:

我是 terraform 的新手,正在尝试以下方法:

    我创建了 3 个 aws VPC:

#VPC 创建

enter codresource "aws_vpc" "new_vpc" 
 cidr_block = var.new_vpc[count.index]
 count = 3
 tags = 
 Name = var.vpc_name[count.index]
 count = 3

    variables.tf如下:

#varibales 用于 vpc #========================

variable "new_vpc" 
    type = list
   

variable "vpc_name" 
  type = list

    terraform.tfvars 是:

    new_vpc=["10.0.0.0/16" , "10.0.0.0/17" , "10.0.0.0/18"]
    vpc_name=["DEV_VPC" , "UAT_VPC" , "PROD_VPC" ]
    

所有 VPC 均已成功创建

下一步是创建 3 个子网,每个子网需要分配给不同的 VPC。

为了创建子网,需要以下参数:vpc_id + cidr_block

需要您对所需的 vpc_id 参数的建议 - 如何传递每个子网不同的 vpc_id(正如我在上面提到的 3 个 vpc 的创建)

10 倍很多

【问题讨论】:

【参考方案1】:

由于您使用 count 来创建 vpc,因此您也可以使用 count 来创建子网。

resource "aws_subnet" "You_subnet_name" 
  count = 3
  vpc_id = aws_vpc.new_vpc[count.index].id

不需要指定 cidr,vpc id 就足够了。 但是,您需要指定 cidr_block 部分来为您的子网分配 IP 范围。 如果您想将 vpc 中的所有 ip 空间用于 1 个子网,您只需执行以下操作:

resource "aws_subnet" "You_subnet_name" 
  count = 3
  vpc_id = aws_vpc.new_vpc[count.index].id
  cidr_block = aws_vpc.new_vpc[count.index].cidr_block

【讨论】:

以上是关于terraform - 将 vpc_id 参数从不同的 VPC 传递到多个子网的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 在 AWS SSM 参数中存储三元素元组?

如何在子模块中使用远程状态数据源

通过 Terraform 添加 AWS 安全组时出现问题

如何在 terraform 路由表中引用 AWS 本地前缀列表?

如何从 Terraform 输出中传递值而不将其放入 tfvars 文件中

Terraform - 将类型对象作为参数传递给 Azure 模板部署