关于 terraform-best-practices
面向 Terraform 与基础设施即代码团队的实践指南,按优先级整理规则,涵盖安全、状态管理、模块设计和测试,支持代码审查与重构。
主要功能
- 01涵盖 10 类实践规则
- 02规则按影响排序
- 03提供错误与正确代码示例
- 04涉及安全、状态和测试
适用场景
- 01编写 Terraform 模块与配置
- 02审查基础设施代码的安全性
- 03重构 Terraform 或 OpenTofu 代码
- 04制定团队工作流与治理规范
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ terramate-io/ agent-skills --skill terraform-best-practices安装后在 Claude Code 中输入/terraform-best-practices确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdrules/language-data-sources.mdlanguage-dynamic-blocks.mdlanguage-linting.mdlanguage-locals.mdlanguage-no-heredoc-json.mdmodule-composition.mdmodule-naming.mdmodule-registry.mdmodule-single-responsibility.mdmodule-versioning.mdorg-access-control.mdorg-audit-logging.mdorg-change-workflow.mdorg-version-control.mdorg-workspaces.mdoutput-descriptions.mdoutput-no-secrets.mdperf-debug.mdperf-parallelism.mdprovider-version-constraints.mdresource-count-vs-foreach.mdresource-immutable.mdresource-lifecycle.mdresource-naming.mdresource-tagging.mdsecurity-credentials.mdsecurity-iam-least-privilege.mdsecurity-no-hardcoded-secrets.mdstate-import.md详细介绍
Terraform 最佳实践
面向 Terraform 和基础设施即代码的全面优化指南,由 Terramate 维护。包含 10 个类别中的 37 条规则,并按影响程度排序,为自动重构和代码生成提供指导。
适用场景
在以下情况下参考这些指南:
- 编写新的 Terraform 模块或配置
- 实施基础设施模式(AWS、GCP、Azure 等)
- 审查代码中的安全性和可靠性问题
- 重构现有 Terraform/OpenTofu 代码
- 优化状态管理和性能
- 建立团队工作流和治理机制
按优先级排列的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 组织与工作流 | 严重 | org- |
| 2 | 状态管理 | 严重 | state- |
| 3 | 安全最佳实践 | 严重 | security- |
| 4 | 模块设计 | 高 | module- |
| 5 | 资源组织 | 中高 | resource- |
| 6 | 变量与输出模式 | 中 | variable-、output- |
| 7 | 语言最佳实践 | 中 | language- |
| 8 | Provider 配置 | 中 | provider- |
| 9 | 性能优化 | 低中 | perf- |
| 10 | 测试与验证 | 低 | test- |
快速参考
1. 组织与工作流(严重)- 5 条规则
org-version-control- 将所有 Terraform 代码纳入版本控制org-workspaces- 每种配置在每个环境中使用一个工作区org-access-control- 控制谁可以更改哪些基础设施org-change-workflow- 建立正式的基础设施变更流程org-audit-logging- 跟踪所有基础设施变更
2. 状态管理(严重)- 3 条规则
state-remote-backend- 始终使用远程状态后端state-locking- 启用状态锁定以防止损坏state-import- 将现有基础设施导入 Terraform
3. 安全最佳实践(严重)- 3 条规则
security-no-hardcoded-secrets- 切勿在代码中硬编码机密security-credentials- 使用适当的凭据管理方式(OIDC、Vault、IAM 角色)security-iam-least-privilege- 遵循最小权限原则
4. 模块设计(高)- 5 条规则
module-single-responsibility- 每个逻辑组件使用一个模块module-naming- 使用一致的命名约定(terraform--)module-versioning- 为所有模块引用指定版本module-composition- 像搭积木一样组合模块module-registry- 使用现有的社区或共享模块
5. 资源组织(中高)- 5 条规则
resource-naming- 使用一致的命名约定resource-tagging- 为所有资源添加标签以跟踪成本resource-lifecycle- 使用生命周期块(prevent_destroy、ignore_changes)resource-count-vs-foreach- 优先使用 for_each 而不是 countresource-immutable- 优先采用不可变基础设施模式
6. 变量与输出模式(中)- 6 条规则
variable-types- 使用具体类型、肯定式命名和 nullablevariable-validation- 添加验证规则以尽早发现错误variable-sensitive- 将机密标记为敏感信息,不设置默认值variable-descriptions- 为所有变量添加说明output-descriptions- 为所有输出添加说明output-no-secrets- 切勿直接输出机密
7. 语言最佳实践(中)- 5 条规则
language-no-heredoc-json- 使用 jsonencode/yamlencode,而不是 HEREDOClanguage-locals- 使用 locals 为复杂表达式命名language-linting- 运行 terraform fmt 和 tflintlanguage-data-sources- 使用数据源,而不是硬编码language-dynamic-blocks- 使用动态块编写 DRY 代码
8. Provider 配置(中)- 1 条规则
provider-version-constraints- 固定 Provider 版本
9. 性能优化(低中)- 2 条规则
perf-parallelism- 为大型部署调整并行度perf-debug- 启用调试日志以便排查问题
10. 测试与验证(低优先级)- 2 条规则
test-strategies- 测试金字塔(验证、代码检查、规划、集成)test-policy-as-code- 实施策略检查(OPA、Checkov、tfsec)
使用方法
阅读各规则文件,了解详细说明和代码示例:
rules/state-remote-backend.md
rules/security-no-hardcoded-secrets.md
rules/module-versioning.md
每个规则文件都包含:
- 简要说明其重要性
- 错误代码示例及说明
- 正确代码示例及说明
- 补充背景信息和参考资料
完整汇编文档
如需查看包含所有完整规则的指南:AGENTS.md
评论
支持 Markdown