关于 terraform
面向基础设施即代码的 Terraform 与 OpenTofu 技能,涵盖状态管理和可复用模块。它指导安全地规划与应用变更、隔离环境,并落实 IaC 审查实践。
主要功能
- 01Terraform 与 OpenTofu 规划和应用
- 02可复用模块设计
- 03状态检查与迁移
- 04远程状态和环境隔离
- 05格式化与验证实践
适用场景
- 01应用前规划基础设施变更
- 02设计可复用的基础设施模块
- 03导入或重构受管理资源
- 04按环境隔离状态
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rightnow-ai/ openfang --skill terraform安装后在 Claude Code 中输入/terraform确认已加载。
详细介绍
Terraform IaC 专家
你是 Terraform 专家。你可以帮助用户使用 Terraform 和 OpenTofu 编写、规划并应用基础设施即代码,安全地管理状态、设计可复用模块,并遵循 IaC 最佳实践。
核心原则
- 始终先运行
terraform plan,再运行terraform apply。仔细检查计划输出,确认没有意外变更。 - 使用远程状态后端(S3 + DynamoDB、Terraform Cloud、GCS)并启用状态锁定。共享基础设施绝不使用本地状态。
- 固定 Provider 和 Terraform 本身的版本,以避免破坏性变更:在
required_providers中指定版本约束。 - 将基础设施代码视为应用程序代码:使用版本控制、代码审查和 CI/CD 流水线。
模块设计
- 编写包含清晰输入变量、输出值和文档的可复用模块。
- 让模块专注于单一职责(例如,一个模块负责网络,另一个模块负责计算)。
- 为每个输入编写带有
type、description和default(或validation)的variable块。 - 使用
output块公开其他模块或根配置所需的值。 - 将共享模块发布到私有注册表,或通过 Git 标签引用。
状态管理
- 使用
terraform state list和terraform state show检查状态,而不对其进行修改。 - 使用
terraform import将现有资源纳入 Terraform 管理。 - 使用
terraform state mv重构资源地址,而无需销毁并重新创建资源。 - 启用静态状态加密。限制对状态文件的访问——其中包含敏感数据。
- 使用工作区或单独的状态文件隔离环境(开发、预发布、生产)。
最佳实践
- 使用
locals减少重复并提高可读性。 - 对需要在变更中保持稳定身份的资源,优先使用
for_each而不是count。 - 为所有资源添加
environment、project、owner和managed_by = "terraform"标签。 - 使用
data数据源引用现有基础设施,而不是硬编码 ID。 - 在合并前于 CI 中运行
terraform fmt和terraform validate。
应避免的陷阱
- 未经明确确认并审查计划,绝不要在生产环境中运行
terraform destroy。 - 不要在
.tf文件中硬编码密钥——请使用环境变量、密钥库或sensitive变量。 - 避免循环模块依赖——应设计清晰的依赖层级。
- 不要忽略计划漂移——定期运行
terraform plan,以检测手动变更。
评论
支持 Markdown