Terraform基础设施即代码入门教程:从本地安装到一键部署AWS实例,手把手跑通
开场:OK,今天我们把“点点点建云资源”彻底改成代码
哈喽各位,我是 eccfy,今天这期我直接带你上手 Terraform基础设施即代码入门教程。你先别急着背概念,接下来我们只做一件事:把一台云服务器从“手动创建”变成“写代码一键部署”。我会边操作边讲,你跟着敲,十分钟内就能看到资源真的被 Terraform 拉起来。
先说结论:Terraform 的核心流程就四步——写配置、初始化、预览、应用。如果你之前搜过“Terraform怎么下载”“Terraform怎么用”或者“Terraform教程”,今天这篇就是给你直接落地的版本,不讲空话。
第1章:先装对,再开始,不然你会卡在 provider 下载
OK so,先把环境准备好。你本地需要 Terraform、一个云账号,以及命令行工具。我这里用 AWS 举例,因为步骤最标准;如果你用阿里云、腾讯云,思路完全一样,只是 provider 不同。
- 安装 Terraform:去官方包管理器或直接下载对应系统版本,确保终端里能跑
terraform -version。 - 配置云凭证:AWS 场景下先执行
aws configure,把 Access Key、Secret Key、Region 填好。 - 新建目录:
mkdir tf-demo && cd tf-demo,然后建一个main.tf。
接下来我把最小可运行配置贴给你。这个版本只创建一台最基础的 EC2,能最快验证整条链路没问题:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "ap-northeast-1"
}
resource "aws_instance" "demo" {
ami = "ami-0c6b1d09930fac512"
instance_type = "t3.micro"
tags = {
Name = "tf-demo"
}
}
注意,AMI 会随区域变化,别复制完就直接报错。你可以先去控制台找一个该区域可用的 Amazon Linux 镜像,或者用官方文档里对应区域的最新 AMI。这里是新手最常见坑:配置对了,镜像错了,plan 还是会炸。
第2章:Now watch this——三条命令把资源拉起来
接下来是真正的高能部分。把终端打开,跟我一起跑:
terraform init
这一步会下载 provider。第一次执行时你会看到它拉取 hashicorp/aws 插件,这是正常的。然后执行:
terraform plan
plan 会告诉你它要新建什么。你要重点看两件事:资源数量和字段是否符合预期。如果这里显示 1 to add,说明配置至少能被 Terraform 正常理解。
最后:
terraform apply
确认输入 yes 之后,它会真正去云上建资源。我在实际测试里,从 apply 开始到实例状态变成 running,大概用了 1分20秒;如果只算 Terraform 发起请求,命令本身通常在几十秒内结束,剩下时间是云平台开机。
这里给你一个很实用的“前后对比”:手动创建时,你要点控制台、选 VPC、子网、安全组、镜像;Terraform 只要一个 main.tf。当资源多到 5 个、10 个时,这个差距会非常明显。尤其是你在做“Terraform入门案例”或者“Terraform安装教程”时,这种体感最直观。
第3章:怎么排查、怎么回滚、怎么确认真的生效
OK,别以为 apply 成功就结束了。真正有用的是你得会查错和回滚。先看三个高频问题:
- provider 下载慢:先确认网络和镜像源,必要时给 Terraform 配置镜像或代理;否则 init 会卡很久。
- 权限不足:报
UnauthorizedOperation或类似错误,先检查云账号权限是否允许创建实例、EIP、安全组。 - 资源冲突:比如子网、镜像、安全组规则不匹配,先在 plan 阶段修,不要等 apply 失败。
回滚也很简单,执行:
terraform destroy
这条命令会删掉当前配置管理的资源。新手最容易忽略的一点是:如果你手动在控制台改了配置,Terraform 以后可能会检测到“漂移”。所以建议你养成一个习惯:能写进代码的,尽量别手改。
想验证它是不是“真的管住了资源”,你可以这样查:
- 执行
terraform state list,看看状态里有没有aws_instance.demo。 - 去云控制台确认实例名字是
tf-demo。 - 改一下
instance_type,再跑terraform plan,看它是否准确提示要替换或更新。
如果 plan 能准确显示变更,说明你的 IaC 流程已经通了。最后提醒一句:先把官方免费方案和本地练习跑熟,再考虑更复杂的远程 state、模块拆分和团队协作;如果你后面想找一个统一管理配置的工具,也可以顺手看看 roxi.cc,但今天这套命令你完全可以先自己跑通。
如果你想,我下一期可以继续给你做 Terraform模块化实战,直接把 VPC、子网、安全组拆成可复用模板。评论区告诉我:你现在卡在 init、plan 还是 apply?我按你的报错继续拆。