Terraform基础设施即代码入门实战:从环境初始化到多环境资源编排

举报
yd_248750836 发表于 2026/11/10 08:06:36 2026/11/10
【摘要】 Terraform 基础设施即代码入门实战:从环境初始化到多环境资源编排 一、Terraform 是什么Terraform 是 HashiCorp 开源的**基础设施即代码(IaC)**工具。它把服务器、网络、数据库这些基础设施资源用配置文件描述出来,再由它计算"从当前状态到目标状态"需要执行的动作并自动执行。核心工作流只有三步:编写配置 → terraform plan(预演变更) → ...

Terraform 基础设施即代码入门实战:从环境初始化到多环境资源编排

一、Terraform 是什么

Terraform 是 HashiCorp 开源的**基础设施即代码(IaC)**工具。它把服务器、网络、数据库这些基础设施资源用配置文件描述出来,再由它计算"从当前状态到目标状态"需要执行的动作并自动执行。

核心工作流只有三步:

编写配置 → terraform plan(预演变更) → terraform apply(执行变更)

这和 Git 的 diff → commit 几乎一样 —— 你永远不会在生产环境盲改,永远先看 plan 再决定是否 apply。

几个关键概念:

概念 说明
Provider 云厂商插件,负责和具体 API 交互
Resource 声明式资源块,如 huaweicloud_compute_instance
Module 可复用资源集合,像函数一样接受变量、输出结果
State 状态文件,记录已创建资源的真实 ID,是 Terraform 的"记忆"

二、安装与初始化

Linux/macOS 直接解压:

wget https://releases.hashicorp.com/terraform/1.9.5/terraform_1.9.5_linux_amd64.zip
unzip terraform_1.9.5_linux_amd64.zip
sudo mv terraform /usr/local/bin/
terraform version

初始化工作目录:

mkdir terraform-demo && cd terraform-demo
terraform init

三、写第一个资源

provider "huaweicloud" {
  region = "cn-north-4"
}

resource "huaweicloud_compute_instance" "web" {
  name        = "web-01"
  flavor_name = "s6.large.2"
  image_id    = "..."
  network_id  = "..."
}

terraform init 之后跑 terraform plan,输出会明确列出"要创建什么、要改什么、要删除什么",逐条确认后再执行 terraform apply。

四、多环境编排

用目录区分环境,变量从 terraform.tfvars 注入:

environments/
├── dev/
│   ├── main.tf
│   └── terraform.tfvars
└── prod/
    ├── main.tf
    └── terraform.tfvars

也可以用内置的 workspace 切换:

terraform workspace new dev
terraform workspace select prod

五、四个常见坑

  • 不要手工改云上资源:改完会导致 state 与实际不一致,plan 会出现意外变更。改完必须 terraform import 把状态导回来。
  • 敏感信息别写进配置:密码、密钥走环境变量,state 文件要加密存储。
  • state 必须备份:删了 state 就等于失去所有资源记录,只能重建。
  • 团队协作用远端 state:配合对象存储加锁机制,避免多人同时 apply 互相覆盖。

六、小结

Terraform 的价值在于让基础设施变更可审计、可回滚、可复现。建议先从单资源的小配置练起,熟悉 plan / apply 的节奏,再逐步拆分 Module、把 apply 放进 CI 流水线自动执行。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。