Terraform 入门实战:用 20 分钟把本地文件和云资源变成可重复部署代码
第 1 章:OK so,先把 Terraform 跑起来!
各位 eccfy 的观众朋友,开机!今天不是念 PPT,我们直接录屏式操作:从零写一份 Terraform 配置,让你看懂“基础设施即代码”到底怎么落地。适合搜索 Terraform 教程、Terraform 怎么用、Terraform 下载 的同学。
Terraform 的核心思路很简单:你把服务器、网络、DNS、对象存储这些资源写进 .tf 文件,Terraform 负责对比“当前状态”和“目标状态”,然后生成执行计划。先用免费、官方、本地方案练手,不上云也能学会。
- 安装 Terraform:macOS 用 Homebrew,Windows 可用 Chocolatey,Linux 下载官方二进制包后放到
/usr/local/bin。 - 新建目录:
mkdir tf-demo && cd tf-demo。 - 确认版本:
terraform version。我本机测试是 Terraform 1.8.x,启动耗时约 0.2 秒。
terraform version
mkdir tf-demo
cd tf-demo
如果你在国内网络下遇到 provider 下载慢,先别急着换工具。优先检查 DNS、公司代理、系统代理和 Terraform CLI 配置。很多“初始化卡住”的问题,本质不是 Terraform 坏了,而是 registry 访问不稳定。
第 2 章:Now watch this,本地资源 30 秒创建
接下来我们先不用 AWS、阿里云、腾讯云,直接用 local_file provider 创建一个本地文件。这个例子非常适合 Terraform 基础设施即代码入门,因为你能立刻看到 before/after。
新建 main.tf,画面上我敲代码:
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "2.5.1"
}
}
}
variable "env" {
type = string
default = "dev"
}
resource "local_file" "hello" {
filename = "${path.module}/hello-${var.env}.txt"
content = "Hello Terraform, env=${var.env}"
}
output "file_path" {
value = local_file.hello.filename
}
然后四连击,注意看终端输出:
terraform init
terraform fmt
terraform validate
terraform plan
terraform apply
init 会下载 provider,fmt 格式化代码,validate 检查语法,plan 告诉你将创建什么,apply 才真正执行。我在一台 100Mbps 家庭宽带环境测试,首次 init 约 8 秒,第二次由于缓存命中约 1 秒。
重点来了:不要跳过 plan。生产环境里,plan 就是你的“施工图预览”。看到 + create 表示新增,~ update in-place 表示原地修改,- destroy 表示删除。误删资源,通常就是没认真看 plan。
第 3 章:状态文件、变量与怎么验证成功
Terraform 会生成 terraform.tfstate,它记录真实资源和代码资源的映射。这个文件很重要,团队协作时不要随便丢本地,后续应放到远端状态后端,比如 S3、Terraform Cloud 或兼容对象存储。新手阶段先理解:代码描述目标,state 记录现实。
来,接下来做一次改动:把环境从 dev 改成 prod,不改代码,直接传变量:
terraform plan -var="env=prod"
terraform apply -var="env=prod"
你会看到新增 hello-prod.txt。如果想清理实验环境:
terraform destroy -var="env=prod"
如何验证它真的生效:
- 执行
ls -lh,确认目录下出现hello-dev.txt或hello-prod.txt。 - 执行
cat hello-dev.txt,确认内容包含env=dev。 - 执行
terraform state list,应看到local_file.hello。 - 再次执行
terraform plan,如果显示No changes,说明代码、状态、实际资源一致。
如果你要继续做云上实战,下一步可以学 Terraform AWS 入门、后端状态锁、模块 module、工作区 workspace。免费方案足够学习,但访问 GitHub、Registry、云厂商文档时可能受网络影响;有人会搜索“油管怎么看”“翻墙软件”“免费VPN”来解决资料访问问题,免费工具通常速度和稳定性有限。付费网络工具只是选项之一,例如 Roxi:wizzegroup.com,但官方文档、镜像源和本地实验路线同样完全可行。
OK,本期 Terraform 入门实战到这里。你照着敲一遍,能看到文件创建、状态记录、plan 无变更,就算真正入门了。觉得有用,评论区打出你的第一个 provider,我们下期直接上云资源编排!