Terraform基础设施即代码入门实战:从环境初始化到多环境资源编排
【摘要】 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)