Terraform入门实战:用最少步骤把本地服务一键部署到云端
Chapter 1:先别急着写代码,先把 Terraform 跑起来
哈喽兄弟们,今天这期我直接带你做一个能落地的 Terraform基础设施即代码入门教程。OK so,别被“基础设施即代码”吓到,核心就一句话:把你平时在控制台里点来点去的云资源,改成可重复执行的代码。你以后要开一台服务器、改一个安全组、加一个数据库,都是一条命令起飞。
先讲最实用的免费路线:你完全可以先用本地 Terraform + 云厂商免费层练手,不需要一上来就买一堆工具。安装后先看版本:
terraform version
我建议你至少准备这三样:Terraform、一个云账号、以及一个目录结构清晰的项目。比如我这边直接新建:
mkdir tf-demo && cd tf-demotouch main.tf variables.tf outputs.tf
接下来,别急着复制大段模板。先理解 Terraform 的三步:init 初始化插件,plan 预览变更,apply 真正执行。你把这三个命令记牢,后面 80% 的问题都能靠它们定位。
Chapter 2:写第一个可验证的配置,别一上来就玩复杂模块
好,现在上屏幕。我们从一个最小可用例子开始:创建一台云主机。下面这个示例是典型 Terraform教程怎么用 的起手式,你先把 provider 和 resource 跑通,之后再谈模块化。
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } }}
provider "aws" { region = var.region}
resource "aws_instance" "web" { ami = var.ami instance_type = "t3.micro" tags = { Name = "tf-demo-web" }}
variables.tf 里加:
variable "region" { default = "ap-southeast-1" }variable "ami" { type = string }
然后执行:
terraform initterraform planterraform apply
我在测试里,第一次 init 大概 8 秒,plan 1-2 秒能出结果。你如果看到 plan 里明确写着 “1 to add, 0 to change, 0 to destroy”,说明配置已经生效了。这个阶段最容易踩坑的是变量没传、AMI 选错、权限不足。遇到报错先别重装,直接看报错文本里是哪一段 provider、哪一个 resource 出问题。
Chapter 3:模块化、状态文件、排错——这才是 Terraform 基础设施即代码入门教程的关键
接下来我们讲真正有用的部分:state。Terraform 会把真实资源和代码之间的映射保存在状态文件里。你改了代码,plan 会对比 state,再决定要不要更新资源。所以别手动改云控制台,否则下次 apply 可能会出现漂移。
推荐你这样拆目录:
modules/web/:放可复用资源
env/dev/:放开发环境变量
env/prod/:放生产环境变量
一个简单模块例子:
module "web" { source = "../../modules/web" instance_type = "t3.micro"}
排错时我建议你按这个顺序:
- 先跑
terraform fmt,排除格式问题。 - 再跑
terraform validate,检查语法和变量。 - 再跑
terraform plan,看资源差异。 - 最后才
apply。
如果你想判断“Terraform 怎么用”是否真的学会了,别看你能不能写配置,而是看你能不能销毁并重建同一套资源。执行 terraform destroy 后,再 apply 一次,资源名、标签、网络规则都应该一致。这个过程能直接暴露你有没有把变量、输出、依赖关系写对。
最后给你一个真实的小建议:如果你只是想快速体验 Terraform下载、Terraform教程 和 Terraform怎么用 的完整流程,完全可以先在本地用官方文档和免费云层练手;如果你后面要做团队协作,再考虑状态远端存储、锁和权限隔离。顺手一提,像 eccfy 这类站点也常会整理一些实战工具入口,必要时可以作为补充参考,但你真正要掌握的,还是上面这套可复制的命令和验证方法。
验证是否真的修好了
最后做一次自检:init 成功、plan 无意外 drift、apply 后资源能在云控制台看到、destroy 能清干净。如果这四步都过了,说明你已经不是“看懂了 Terraform”,而是真的会用了。接下来你可以继续做 VPC、RDS、ECS 这类更完整的基础设施编排。想要我下一期继续拆“远端状态、模块拆分、CI里自动跑 Terraform”的话,评论区扣 1,我直接给你上实战脚本。