如果您需要设置AWS虚拟私有云(VPC),您可以通过AWS管理控制台实现,但自动化操作更有趣!在DevOps场景中,通过像Terraform这样的工具构建AWS服务是云资源配置的一种更可扩展和自动化的方法。
在本教程中,您将学习如何构建和运行Terraform配置以从头开始创建Terraform VPC!
先决条件
本文将是一个逐步教程。如果您想跟着操作,请确保已经准备好以下内容:
- An AWS账户
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.
了解AWS VPC
AWS 云拥有数十种不同的服务,涵盖计算、存储、网络等多个领域。这些服务之间可以像本地数据中心的服务一样进行通信。但是,这些服务各自独立,它们并不一定与其他服务隔离。AWS VPC 可以改变这一现状。
AWS VPC 是一个单一网络,允许您在单个隔离的网络中启动 AWS 服务。从技术上讲,AWS VPC 几乎与拥有数据中心相同,但具有可伸缩性、容错性、无限存储等内置的附加优势。

AWS VPC 受区域限制。您不能在多个区域之间拥有一个跨越的 VPC,每个区域最多支持五个 VPC。
构建 AWS VPC 的 Terraform 配置
言归正传,让我们开始吧!
1. 首先,在一个文件夹中创建用于存储 Terraform 配置文件的文件夹。本教程将在您的主目录中创建一个名为 terraform-vpc-demo 的文件夹。
2. 打开您喜爱的代码编辑器,复制/粘贴下面已为您创建的配置,并将文件保存为 main.tf,放在 ~/terraform-vpc-demo 目录中。有关要创建的每个资源的信息都在内联中说明。
main.tf 文件包含了所有需要被配置的资源。
Terraform使用几种不同类型的配置文件。每个文件都以纯文本格式或JSON格式编写。它们具有特定的命名约定,要么是.tf,要么是.tfjson格式。
下面是Terraform配置:
- 创建一个VPC
- 创建一个Internet网关并将其附加到VPC,以允许VPC内的流量可以被外部访问。
- 创建公共和私有子网
子网是网络中的网络。它们旨在帮助网络流量更加高效,并提供更小、更可管理的IP地址‘块’
- 为公共和私有子网创建路由表,并将该表与两个子网关联
- 创建一个NAT网关,以使私有子网能够访问互联网,而无需为每个资源分配外部可路由的IP地址。
3. 现在,在〜/terraform-vpc-demo目录中创建另一个文件,命名为vars.tf,并粘贴下面的内容。
Vars.tf是一个Terraform变量文件,其中包含配置文件引用的所有变量。
您可以通过以下方式在配置文件中查看变量引用:
var.region
var.main_vpc_cidr
var.public_subnets
var.private_subnets
可以将所有配置值放入单个配置文件中。为了保持清晰并使开发人员和管理员更容易理解,重要的是将配置拆分开来。
4. 在~/terraform-vpc-demo目录内创建一个新文件,将以下代码粘贴进去,并将其命名为provider.tf以定义 AWS 提供程序。本教程将在us-east-2
区域创建资源。
提供程序文件定义了 AWS、Oracle 或 Azure 等提供程序,以便 Terraform 可以与正确的云服务建立连接。
provider "aws" { region = "us-east-2" }
5. 最后,在~/terraform-vpc-demo目录内创建另一个文件,命名为terraform.tfvars,并粘贴下面的代码。此变量文件包含 Terraform 将用于替换配置文件内变量引用的值。
现在,打开您喜欢的终端(在本例中是 Bash)并通过运行tree
命令验证文件夹中包含所有必需文件。

运行 Terraform 创建 AWS VPC
现在您已经准备好Terraform配置文件和变量文件,是时候启动Terraform并创建VPC了!为了配置Terraform,Terraform通常采用三阶段的方法terraform init → terraform plan → terraform apply。让我们现在逐个阶段地走一遍。
1. 打开终端并导航到~\terraform-vpc-demo目录。
2. 在相同的目录中运行terraform init
命令。terraform init
命令初始化插件和提供者,这些是与资源一起工作所需的。
如果一切顺利,您应该在输出中看到消息Terraform has been successfully initialized
,如下所示。

3. 现在运行terraform plan
命令。这是一个可选但建议的操作,可确保配置的语法正确,并为您的基础架构提供将要预配哪些资源的概述。 terraform plan
如果成功,您应该会看到一条消息,类似于计划:"X" 添加,"Y" 更改,或 "Z" 销毁
,表示命令执行成功。您还将看到 Terraform 所打算创建的每个 AWS 资源。

4. 接下来,告诉 Terraform 实际使用terraform apply
来配置 AWS VPC 和资源。当您调用terraform apply
时,Terraform 将读取配置文件(main.tf)和其他文件来编译配置。然后,它会将该配置发送到 AWS,作为构建 VPC 和其他组件的指令。

请注意 Terraform 输出中定义的 ID。您将需要这些 ID 来关联下一节中创建的资源。
Terraform 命令执行成功,所以让我们切换到 AWS 管理控制台,确认 VPC 和组件是否成功创建。
验证 AWS Terraform VPC
到目前为止,您应该已经用 Terraform 创建了 VPC。让我们通过手动检查 AWS 管理控制台中的 VPC 来验证。
1. 打开您喜欢的网络浏览器,导航至AWS 管理控制台并登录。
2. 在控制台中,单击顶部的搜索栏,搜索‘vpc’,然后单击VPC菜单项。

3. 进入 VPC 页面后,单击Your VPCs。您应该会看到与 Terraform 之前返回的相同 ID 创建的 VPC。

4. 由于Terraform不仅创建了VPC资源,而且创建了VPC所需的所有资源,因此您应该在此页面上找到每个资源。




在所有组件成功创建后,使用Terraform,这个VPC已经准备就绪!
结论
在本教程中,您已经学会了如何使用Terraform部署AWS VPC及其组件。
使用Terraform构建Amazon Virtual Private Cloud允许您快速、轻松且可预测地创建资源。您现在可以将这些知识与其他AWS服务一起使用,并在其基础上构建强大的服务。