AWS VPC Private/Public 子网/Terraform?

AWS VPC Private/Public Subnet /Terraform?

如何创建文件夹结构以使用 terraform 在 vpc 中创建 public 和私有子网需要实现下图的体系结构? 1.This 是我需要实现的架构

为了在 Terraform 中实现特定设计,您需要确定相关提供程序中的哪些资源类型与您设计中的每个概念相对应。您计划的架构似乎专门使用 AWS 概念,因此您将使用 the AWS provider.

首先,我建议从您的设计图中选择一个对象,并在 Terraform 的 AWS 提供商中找到与之对应的资源类型,然后尝试为其编写 Terraform 配置。为获得最佳结果,请从“最外层”对象开始——不依赖于其他对象存在的对象——然后向内处理。

例如,您的图表包含一个 VPC。如果我在 AWS 提供商文档中搜索“VPC”,除其他外,我发现 the aws_vpc resource type,这就是 AWS 提供商表示单个 VPC 声明的方式。所以在你的 main.tf 文件中你可以写一个 aws_vpc 资源:

resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

当您继续处理其他对象时,您会发现您需要有关已声明对象的信息。例如,为了声明一个子网,您需要包含 VPC id。您可以使用 references 来做到这一点,在本例中 aws_vpc.example.id 使用 VPC ID。

您的问题过于宽泛,无法给出比这更具体的答案,因此我建议您从上述内容着手,然后看看您 运行 遇到的其他挑战。一旦您编写了一些 Terraform 配置并对其进行了试验,您应该能够在 Stack Overflow 上提出更具体的新问题,其中包含真实的代码示例和您看到的任何错误消息,因此人们希望能够给出更具体的建议。

**( This code is for only creating vpc with public and private subnets)**
resource "aws_vpc" "myvpc" {    
  cidr_block       = "10.10.0.0/16"    
  instance_tenancy = "default"    
    
  tags = {    
    Name = "myvpc"    
  }    
}    
resource "aws_subnet" "public" {
  cidr_block              = "10.10.1.0/24"
  vpc_id                  = aws_vpc.myvpc.id
  map_public_ip_on_launch = "true"
  availability_zone       = "ap-northeast-1d"

  tags = {
    Name = "public"
  }
}
resource "aws_subnet" "private" {
  cidr_block              = "10.10.2.0/24"
  vpc_id                  = aws_vpc.myvpc.id
  map_public_ip_on_launch = "false"
  availability_zone = "ap-northeast-1d"

  tags = {
    Name = "private"
  }
}