mcpField
T
terraform-best-practices

terraform-best-practices

github.com/terramate-io云与 DevOps35401 次安装38 周前更新
代码仓库

关于 terraform-best-practices

面向 Terraform 与基础设施即代码团队的实践指南,按优先级整理规则,涵盖安全、状态管理、模块设计和测试,支持代码审查与重构。

主要功能

  1. 01涵盖 10 类实践规则
  2. 02规则按影响排序
  3. 03提供错误与正确代码示例
  4. 04涉及安全、状态和测试

适用场景

  1. 01编写 Terraform 模块与配置
  2. 02审查基础设施代码的安全性
  3. 03重构 Terraform 或 OpenTofu 代码
  4. 04制定团队工作流与治理规范

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terramate-io/agent-skills --skill terraform-best-practices

安装后在 Claude Code 中输入/terraform-best-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
rules/
language-data-sources.md
language-dynamic-blocks.md
language-linting.md
language-locals.md
language-no-heredoc-json.md
module-composition.md
module-naming.md
module-registry.md
module-single-responsibility.md
module-versioning.md
org-access-control.md
org-audit-logging.md
org-change-workflow.md
org-version-control.md
org-workspaces.md
output-descriptions.md
output-no-secrets.md
perf-debug.md
perf-parallelism.md
provider-version-constraints.md
resource-count-vs-foreach.md
resource-immutable.md
resource-lifecycle.md
resource-naming.md
resource-tagging.md
security-credentials.md
security-iam-least-privilege.md
security-no-hardcoded-secrets.md
state-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-
8Provider 配置中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 而不是 count
  • resource-immutable - 优先采用不可变基础设施模式
6. 变量与输出模式(中)- 6 条规则
  • variable-types - 使用具体类型、肯定式命名和 nullable
  • variable-validation - 添加验证规则以尽早发现错误
  • variable-sensitive - 将机密标记为敏感信息,不设置默认值
  • variable-descriptions - 为所有变量添加说明
  • output-descriptions - 为所有输出添加说明
  • output-no-secrets - 切勿直接输出机密
7. 语言最佳实践(中)- 5 条规则
  • language-no-heredoc-json - 使用 jsonencode/yamlencode,而不是 HEREDOC
  • language-locals - 使用 locals 为复杂表达式命名
  • language-linting - 运行 terraform fmt 和 tflint
  • language-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