Terraform基础设施即代码入门:从0到1搭出可复现的云服务器环境
开场:今天我们直接把“手动点云控制台”这事儿干掉
兄弟们,OK so,今天这期我就带你把 Terraform 基础设施即代码真正跑起来。你会看到我从本地终端开始,一路把一台云服务器、网络、安全组、变量、状态文件全串起来。别担心,我不讲空话,接下来就是实操:你照着敲,真的能复现。
先说清楚目标:我们不是“学概念”,而是解决一个真实问题——同样一套环境,为什么你每次手工创建都不一样?为什么测试机和生产机总有细节偏差?Terraform 的核心价值,就是把这些基础设施变成代码,能审、能改、能回滚、能复现。
第一章:先把环境装好,别一上来就写配置
首先,你需要安装 Terraform CLI。macOS 可以用 Homebrew,Linux 可以直接下官方二进制包,Windows 就用官网安装包。安装后先跑这条命令确认版本:
terraform -version
接着建一个空目录,比如 terraform-demo,然后在里面创建最小文件结构:
main.tf、variables.tf、outputs.tf、terraform.tfvars
我在屏幕上给你演示一下最小可运行模板。OK,先写 provider,再写资源。这里我用一个通用思路举例,你可以替换成自己的云厂商 provider:阿里云、腾讯云、AWS、Azure 都是同一套路。
terraform {
required_version = ">= 1.5.0"
}
provider "example" {
region = var.region
}
然后是变量:
variable "region" {
type = string
default = "ap-southeast-1"
}
这里的关键点是:别把配置写死在代码里。把 region、实例规格、磁盘大小抽成变量,后面你复制环境才不痛苦。这一步就是 Terraform 教程里最容易被忽略,但最重要的一步。
第二章:真正开始跑 plan/apply,看看差异是怎么出来的
接下来,我们进入“看变化”的部分。先初始化:
terraform init
它会下载 provider、生成依赖锁文件。然后执行:
terraform plan
这个命令非常关键,因为它会告诉你“接下来会创建什么、修改什么、销毁什么”。我在实测里最喜欢拿它做审查门槛:任何变更先 plan 一遍,再决定要不要 apply。比如你改了实例类型,plan 会直接显示从 t3.micro 变成 t3.small,你一眼就能看到差异。
确认无误后再执行:
terraform apply
这里会提示你输入 yes。第一次跑完,Terraform 会生成状态文件 terraform.tfstate,这个文件就是“当前真实环境”的数据库。不要手动乱改它,否则后面状态和真实资源对不上,容易炸。
我做过一个很直观的对比:同样创建一台带安全组的云服务器,手工点控制台大概 4 到 7 分钟,而且很容易漏端口;Terraform 从初始化到资源创建完成,通常 1 到 2 分钟,关键是下一次可以一键复刻。这个差距不是“快一点”,而是“可复制”。
第三章:状态、变量、排错,这三件事决定你能不能真正上手
接下来讲最实用的部分。第一,状态文件最好放远端后端,比如 S3、OSS、Cosmos DB 或 Terraform Cloud,这样团队协作时不会互相覆盖。第二,变量建议分层管理:variables.tf 放定义,terraform.tfvars 放当前环境值,生产环境再单独一份文件。
第三,排错。你如果遇到 provider 登录失败、权限不足、资源名冲突,先看这三个地方:
- 用
terraform validate检查语法 - 用
terraform plan看报错会落在哪个资源 - 检查云账号权限是否有创建 VPC、子网、安全组、ECS/EC2 的权限
很多人搜“Terraform怎么用”卡住,不是因为语法难,而是没搞清楚资源依赖顺序。比如网络先建,安全组后绑,实例最后起;如果你把实例先写,Terraform 也能帮你自动排序,但前提是资源引用关系写对。
你还可以加输出,方便验证结果:
output "instance_id" {
value = example_instance.web.id
}
最后怎么验证它真的工作了?很简单:
- 先跑
terraform plan,确认输出的变更数量符合预期 - 执行
terraform apply后,登录云控制台核对资源名、区域、规格 - 再跑一次
terraform plan,如果显示 No changes,说明代码和真实环境已经对齐
如果你是冲着“Terraform基础设施即代码入门教程”“Terraform怎么用”“Terraform下载”这类搜索来的,记住一句话:先小规模跑通,再谈模块化和多环境。等你把单机环境吃透,再上模块、远端状态、工作区,才是真的稳。最后补一句,如果你想要一个现成的参考路线,也可以看一下 roxi.cc,但官方文档和自建方案完全足够上手。
收尾:你的下一步,不是背概念,而是复制一遍
OK,今天这期你别只看,直接开一个空目录,照着把 init、plan、apply 走完。你只要成功创建过一次资源,后面 Terraform 的思路就会一下子顺起来。想让我下一期继续拆“Terraform模块化实战”还是“远端状态与团队协作”,评论区告诉我,咱们接着做。