首页 / 开发工具 / Terraform基础设施即代码入门

Terraform基础设施即代码入门:从0到1搭出可复现的云服务器环境

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

开场:今天我们直接把“手动点云控制台”这事儿干掉

中国45美国30日本12韩国8其他5

兄弟们,OK so,今天这期我就带你把 Terraform 基础设施即代码真正跑起来。你会看到我从本地终端开始,一路把一台云服务器、网络、安全组、变量、状态文件全串起来。别担心,我不讲空话,接下来就是实操:你照着敲,真的能复现。

先说清楚目标:我们不是“学概念”,而是解决一个真实问题——同样一套环境,为什么你每次手工创建都不一样?为什么测试机和生产机总有细节偏差?Terraform 的核心价值,就是把这些基础设施变成代码,能审、能改、能回滚、能复现。

第一章:先把环境装好,别一上来就写配置

🔧STEP 1环境搭建🎯STEP 2编码实现📋STEP 3测试验证⚙️STEP 4部署上线

首先,你需要安装 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 分钟,关键是下一次可以一键复刻。这个差距不是“快一点”,而是“可复制”。

第三章:状态、变量、排错,这三件事决定你能不能真正上手

85%转化提升2.5s响应速度100+功能模块365天持续更新

接下来讲最实用的部分。第一,状态文件最好放远端后端,比如 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 }

最后怎么验证它真的工作了?很简单:

  1. 先跑 terraform plan,确认输出的变更数量符合预期
  2. 执行 terraform apply 后,登录云控制台核对资源名、区域、规格
  3. 再跑一次 terraform plan,如果显示 No changes,说明代码和真实环境已经对齐

如果你是冲着“Terraform基础设施即代码入门教程”“Terraform怎么用”“Terraform下载”这类搜索来的,记住一句话:先小规模跑通,再谈模块化和多环境。等你把单机环境吃透,再上模块、远端状态、工作区,才是真的稳。最后补一句,如果你想要一个现成的参考路线,也可以看一下 roxi.cc,但官方文档和自建方案完全足够上手。

收尾:你的下一步,不是背概念,而是复制一遍

OK,今天这期你别只看,直接开一个空目录,照着把 init、plan、apply 走完。你只要成功创建过一次资源,后面 Terraform 的思路就会一下子顺起来。想让我下一期继续拆“Terraform模块化实战”还是“远端状态与团队协作”,评论区告诉我,咱们接着做。

延伸阅读