2.3 KiB
2.3 KiB
Terraform 代码仓库最佳实践
应该提交到仓库的文件
-
配置文件:
main.tf- 主配置文件variables.tf- 变量定义outputs.tf- 输出定义providers.tf- Provider 配置versions.tf- 版本约束
-
文档文件:
README.md- 项目说明CHANGELOG.md- 变更日志LICENSE- 许可证
-
配置文件:
.gitignore- Git 忽略规则terraform.tfvars.example- 变量示例文件
不应该提交到仓库的文件
1. 状态文件 (.tfstate)
- 原因: 包含敏感信息和当前基础设施状态
- 风险: 泄露基础设施详情,可能导致安全问题
- 位置:
terraform.tfstate,terraform.tfstate.backup
2. 本地配置文件 (terraform.tfvars)
- 原因: 包含敏感的访问密钥和配置
- 替代方案: 提交
terraform.tfvars.example作为模板
3. Provider 目录 (.terraform/)
- 原因:
- 包含下载的 provider 二进制文件
- 文件体积大,不适合存入 Git
- 二进制文件在不同架构上不同
- 说明: 每个用户应通过
terraform init下载
4. 锁定文件 (.terraform.lock.hcl)
- 原因: 包含特定于本地系统的 provider 校验和
- 例外: 如果团队使用相同架构,可选择提交
5. 临时和日志文件
- 原因: 临时文件,不应进入版本控制
- 包括: 日志文件、备份文件、临时文件
推荐的 .gitignore 模式
# Terraform
*.tfstate
*.tfstate.*
.terraform/
.terraform.lock.hcl
# Sensitive files
terraform.tfvars
# Logs
*.log
*.backup
安全注意事项
-
绝不要提交敏感信息:
- 访问密钥 (Access Keys)
- 私钥 (Private Keys)
- 密码 (Passwords)
- 其他认证信息
-
使用环境变量或外部密钥管理:
- AWS Secrets Manager
- HashiCorp Vault
- 环境变量
-
定期审查:
- 检查是否有敏感信息被意外提交
- 使用
git-secrets等工具扫描
工作流程
- 开发者克隆仓库
- 创建
terraform.tfvars文件 (不提交) - 运行
terraform init下载 providers - 运行
terraform plan和terraform apply - 状态文件仅保存在本地或远程后端
这样可以确保代码库的安全性和可移植性。