[ PROMPT_NODE_24358 ]
Terraform 说明文档
[ SKILL_DOCUMENTATION ]
# Cloudflare Terraform Provider
**Cloudflare Terraform Provider 专家指南 - 用于 Cloudflare 资源的“基础设施即代码”。**
## 核心原则
- **Provider 优先**:所有基础设施均使用 Terraform provider - 切勿与 wrangler.jsonc 混合管理同一资源
- **状态管理**:团队环境务必使用远程状态 (S3, Terraform Cloud 等)
- **模块化架构**:为常见模式(区域、智能体、页面)创建可重用模块
- **版本锁定**:始终使用 `~>` 锁定 provider 版本,以确保升级可预测
- **密钥管理**:使用变量 + 环境变量处理敏感数据 - 切勿硬编码 API 令牌
## Provider 版本
| 版本 | 状态 | 说明 |
|---------|--------|-------|
| 5.x | 当前 | 基于 OpenAPI 自动生成,相比 v4 有重大变更 |
| 4.x | 旧版 | 手动维护,已弃用 |
**关键:** v5 重命名了许多资源(`cloudflare_record` → `cloudflare_dns_record`,`cloudflare_worker_*` → `cloudflare_workers_*`)。详情请参阅 [gotchas.md](./gotchas.md#v5-breaking-changes) 中的迁移细节。
## Provider 设置
### 基础配置
hcl
terraform {
required_version = ">= 1.0"
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 5.15.0"
}
}
}
provider "cloudflare" {
api_token = var.cloudflare_api_token # 或 CLOUDFLARE_API_TOKEN 环境变量
}
### 认证方式 (优先级排序)
1. **API 令牌** (推荐):`api_token` 或 `CLOUDFLARE_API_TOKEN`
- 创建:仪表盘 → 我的个人资料 → API 令牌
- 为安全起见,限制在特定账户/区域
2. **全局 API 密钥** (旧版):`api_key` + `api_email` 或 `CLOUDFLARE_API_KEY` + `CLOUDFLARE_EMAIL`
- 安全性较低,建议使用令牌
3. **用户服务密钥**:用于源站 CA 证书的 `user_service_key`
## 快速参考:常用命令
bash
terraform init # 初始化 provider
terraform plan # 计划变更
terraform apply # 应用变更
terraform destroy # 销毁资源
terraform import cloudflare_zone.example # 导入现有资源
terraform state list # 列出状态中的资源
terraform output # 显示输出
terraform fmt -recursive # 格式化代码
terraform validate # 验证配置
## 导入现有资源
使用 cf-terraforming 从现有 Cloudflare 资源生成配置:
bash
# 安装
brew install cloudflare/cloudflare/cf-terraforming
# 生成 HC