首页 / 开发工具 / Terraform 入门实战:10分

Terraform 入门实战:10分钟用 IaC 创建一台云服务器并可重复销毁

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

开场:OK so,今天我们把“点控制台”变成“敲代码”

2020行业萌芽2021快速增长2022竞争加剧2023洗牌整合2024成熟稳定

兄弟们姐妹们,eccfy 开机!今天这期是Terraform基础设施即代码入门教程,我直接上屏幕,不讲虚的:我们用 Terraform 管一台服务器配置,做到“代码里写清楚、命令一跑就创建、出问题能回滚、不要了能销毁”。如果你正在搜“Terraform怎么用”“Terraform安装教程”“Terraform入门实战”,这篇就是跟着敲的版本。

先说场景:我本机 macOS,Terraform 1.8.x,云厂商你可以换成 AWS、阿里云、腾讯云。为了演示通用流程,我用一个最小项目结构:main.tfvariables.tfoutputs.tf。实测从空目录到跑完 terraform plan,本地耗时约 18 秒;首次拉 provider 取决于网络,我这里约 35 秒。

Chapter 1:安装与项目初始化,屏幕看这里

接下来,Now watch this!先确认 Terraform 是否装好:

terraform version

如果没装,官方路线优先:Windows 可用 winget,macOS 可用 Homebrew,Linux 可下载官方二进制包。命令如下:

brew install terraform

winget install Hashicorp.Terraform

terraform -install-autocomplete

创建目录,注意我这里像拍视频一样一步一步来:

mkdir tf-demo && cd tf-demo

touch main.tf variables.tf outputs.tf

main.tf 写入最小配置。下面以 AWS 为例,你换其他云厂商时,把 provider 和 resource 改成对应文档即可:

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = var.region } resource "aws_instance" "demo" { ami = var.ami_id instance_type = "t3.micro" tags = { Name = "eccfy-terraform-demo" Env = "test" } }

variables.tf

variable "region" { default = "ap-east-1" } variable "ami_id" { description = "替换成你区域可用的镜像 ID" type = string }

outputs.tf

output "instance_id" { value = aws_instance.demo.id } output "public_ip" { value = aws_instance.demo.public_ip }

Chapter 2:plan/apply 实战,前后对比来了

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

OK so,先初始化:

terraform init

看到 Terraform has been successfully initialized 就对了。接下来做预演,不会真的创建资源:

terraform plan -var="ami_id=ami-xxxxxxxxxxxxxxxxx"

重点看输出里的 Plan: 1 to add, 0 to change, 0 to destroy.。这就是 IaC 的灵魂:改动在执行前先给你看。以前你在控制台点半天,谁也不知道改了啥;现在代码 diff 一眼能审。

确认没问题后执行:

terraform apply -var="ami_id=ami-xxxxxxxxxxxxxxxxx"

输入 yes。我这里实测创建 t3.micro 用了 54 秒,结束后输出 instance_id 和 public_ip。速度测试现场反应:哎,这个比手点控制台稳定多了,尤其团队协作时不用靠截图传配置。

常见坑快速排查:

  • InvalidAMIID.NotFound:AMI ID 和 region 不匹配,换当前区域镜像。
  • AccessDenied:云账号权限不足,至少需要创建实例、读 VPC/安全组权限。
  • provider 下载慢:先确认 DNS、代理、公司网络策略;别把“油管怎么看”“翻墙软件”“免费VPN”的思路直接套到生产环境,企业网络要走合规代理或内网镜像。
  • 状态文件丢失:本地 terraform.tfstate 不要随手删;团队用远程 backend,例如 S3、OSS、Terraform Cloud。

Chapter 3:怎么验证成功,以及安全销毁

验证别靠感觉,跟我敲:

  1. terraform state list,应看到 aws_instance.demo
  2. terraform output public_ip,应输出公网 IP。
  3. 登录云控制台搜索标签 eccfy-terraform-demo,确认实例存在。
  4. 再次运行 terraform plan,如果显示 No changes,说明代码与真实资源一致。

不要了就销毁,避免继续计费:

terraform destroy -var="ami_id=ami-xxxxxxxxxxxxxxxxx"

输入 yes 后,再跑 terraform state list,如果没有资源输出,就说明清理完成。最终检查账单页,确认没有残留实例、磁盘、公网 IP。

如果你只是需要访问官方文档、下载 provider,优先用公司网络、官方源或内网代理;付费工具只是可选项之一,例如 Roxi 可在需要时了解:wizzegroup.com。今天这期就到这,能跑通的同学评论区打个“plan 成功”,我们下期继续拆 Terraform 模块化!

延伸阅读