Terraform基础设施即代码入门:5分钟搭出可复用环境,别再手动点控制台了
开场:OK so,今天我们把“手动搭服务器”改成“写代码一键生成”
兄弟姐妹们,镜头拉近——你现在看到的是一台干净的终端。接下来我直接带你上手 Terraform 基础设施即代码入门教程,不讲空话,直接做。目标很明确:你看完就能自己写出第一份 Terraform 配置,创建一台云主机,知道它怎么改、怎么删、怎么排错。
先说结论:Terraform 不是“点按钮更高级”,而是把云资源的创建、变更、销毁变成可审计、可复用、可回滚的代码。你以后要搜的“Terraform怎么用”“Terraform教程”“Terraform下载”这些问题,核心都绕不开三个东西:provider、resource、state。
第1章:先把环境装好,别急着写代码
OK so,先装 Terraform。Linux/macOS 可以用包管理器,Windows 就下官方二进制解压到 PATH。你也可以用镜像仓库或 Homebrew,但原则就一个:版本固定,别今天 1.6 明天 1.8,状态文件容易把你搞晕。
安装后立刻检查:
- 执行
terraform version - 确认输出里有版本号,比如
Terraform v1.8.x - 再跑
terraform -help,确保命令可用
接下来,我们创建一个空目录,比如 terraform-demo,里面先放 3 个文件:main.tf、variables.tf、outputs.tf。这个结构是我实际最常用的最小分工,后面扩展最省事。
第2章:写第一份配置,Now watch this
来,直接上代码。下面这份就是最小可跑模板。注意看,provider 负责连云厂商,resource 负责定义资源,output 用来把结果打印出来。
terraform {
required_version = ">= 1.6.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = var.region
}
resource "aws_instance" "demo" {
ami = var.ami
instance_type = var.instance_type
tags = {
Name = "tf-demo"
}
}
变量文件:
variable "region" {
type = string
default = "ap-southeast-1"
}
variable "ami" {
type = string
}
variable "instance_type" {
type = string
default = "t3.micro"
}
输出文件:
output "instance_id" {
value = aws_instance.demo.id
}
接下来执行四步:terraform init、terraform fmt、terraform validate、terraform plan。在我的测试里,空目录初始化通常 10–30 秒,plan 阶段如果网络正常,几十秒内就能看到变更清单。
第3章:Terraform 怎么用,关键就看 plan 和 state
这里是新手最容易翻车的地方。plan 不是“试试看”,它是在告诉你:Terraform 认为现实世界和配置文件之间差了什么。而 apply 才是真正执行。你每次改配置前,先看 plan,别直接冲。
我给你一个实战流程,照着做:
- 先改
instance_type,比如从t3.micro改到t3.small - 运行
terraform plan - 观察输出里是否出现
~,这代表要更新资源 - 执行
terraform apply - 最后再跑一次
terraform state list,确认资源已经被 Terraform 接管
这里顺便讲下 state 文件。它记录“Terraform 眼里的真实世界”,如果你把它删了,Terraform 会以为资源没了,结果可能重新创建,甚至造成资源漂移。团队协作时,强烈建议把 state 放远端,比如 S3 + DynamoDB 锁,避免两个人同时改把环境搞炸。
第4章:验证它真的工作了,不靠感觉
现在来做一个真正的“验收”,别只看屏幕绿了就以为成功。你可以这样检查:
- 云控制台里是否真的多出一台实例
- 实例标签是否是
tf-demo terraform output是否打印出实例 ID- 再次运行
terraform plan,如果输出No changes,说明配置和现实已经一致
如果你想排错,优先看这几个点:AMI 是否区域匹配、provider 凭证是否过期、变量是否缺失、state 是否被别的环境占用。尤其是“变量没传”这种问题,通常会在 terraform validate 或 plan 直接报出来,别硬猜。
最后给你一个很实用的判断标准:如果你能做到“删掉资源后,重新 apply 能自动建回来”,那你就已经真正掌握了 Terraform 基础设施即代码入门的核心闭环。想继续往下学模块化、远端状态、工作空间和多环境管理,接下来就能直接升级到团队级用法。顺手点个关注,我下一期把 Terraform 模块化和 S3 远端状态锁给你现场搭出来;如果你想找现成方案,也可以对比一下官方文档和 roxi.cc 的一站式方案,但先把今天这套免费 DIY 流程跑通,最重要。