Terraform 与 AWS - 第1天:为什么 Terraform 很重要以及它的真实工作原理
Source: Dev.to
什么是基础设施即代码(IaC)?
基础设施即代码(IaC)指的是使用代码来创建和管理云基础设施。
它让你可以用代码代替在云控制台里点击按钮。
示例
resource "aws_instance" "demo" {
ami = "ami-12345"
instance_type = "t2.micro"
}
IaC 的优势
- 可重复
- 一致性
- 版本控制
- 自动化
- 零错误(降低人为失误)
- 团队友好
IaC 使用的工具
多云工具
- Terraform ⭐(最流行)
- Pulumi
云厂商专属工具
- AWS CloudFormation、CDK、SAM
- Azure ARM、Bicep
- GCP Deployment Manager
Terraform 是通用的——它支持 AWS、Azure、GCP、Kubernetes 以及数十种其他平台。这也是几乎所有 DevOps 路线图都以 Terraform 为起点的原因。
为什么我们需要 Terraform?
手动搭建基础设施难以扩展
以一个简单的 3 层应用(Web、App、数据库)为例,手动部署需要创建:
- VPC
- 子网
- EC2 实例
- 自动伸缩组
- 负载均衡器
- RDS 数据库
- Route 53 记录
- 安全组
- …以及更多
手动完成这些大约需要 每个环境 2 小时。再乘以常见的环境(开发、预发布、生产)→ 每个应用 12 小时。在真实公司里,往往有数十甚至数百个应用需要部署,导致:
- 工作耗时
- 成本高
- 易出错
- 环境不一致
- 没有审计日志
手动云资源配置的挑战
- 速度慢 → 发布延迟
- 需要大量人力 → 基础设施团队成本高
- 人为错误(错误的 AMI、子网、IP) → 故障宕机
- 缺乏一致性(开发 ≠ 预发布 ≠ 生产) → “在我机器上可以跑!”
- 没有版本控制 → 无历史、审计或回滚
Terraform:终极解决方案
- 编写一次基础设施代码
- 可在任意数量的环境中复用
- 保持所有环境一致
- 自动化部署
- 消除人为错误
- 通过 Git 跟踪所有变更
- 自动销毁环境以节省成本
只需几个 .tf 文件,就能为云基础设施带来速度、安全、可重复性和可控性。
Terraform 的实际工作原理
Terraform 使用一种声明式语言 HCL(HashiCorp Configuration Language)。你在 .tf 文件中描述期望的状态。
示例
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
}
核心命令
terraform init– 下载提供商插件(始终是第一条命令)。terraform validate– 检查 Terraform 文件的语法是否正确。terraform plan– 预览 Terraform 将创建、修改或删除的内容(安全检查)。terraform apply– 通过 API 实际在 AWS 上创建基础设施。terraform destroy– 删除.tf文件中定义的所有资源;适用于开发/测试环境。
Terraform + Git = 纯粹的魔法
将 Git 与 Terraform 结合使用可以实现:
- 完整的版本历史
- 轻松回滚
- 拉取请求审批
- 跨团队协作
- 更快的审批流程
- CI/CD 自动化
基础设施因此变得可预测、安全且可审计。
安装 Terraform(快速概览)
- 通过 Homebrew、apt、yum 或 Chocolatey 安装。
- 验证安装:
terraform version - 安装 VS Code 扩展 HashiCorp Terraform。
- (可选)设置别名:
alias tf=terraform,以便更快捷地使用。
现在,你已经准备好开始构建基础设施即代码了!