Files
terraform/volcengine/GIT_EXCLUDES.md

89 lines
2.3 KiB
Markdown

# Terraform 代码仓库最佳实践
## 应该提交到仓库的文件
1. **配置文件**:
- `main.tf` - 主配置文件
- `variables.tf` - 变量定义
- `outputs.tf` - 输出定义
- `providers.tf` - Provider 配置
- `versions.tf` - 版本约束
2. **文档文件**:
- `README.md` - 项目说明
- `CHANGELOG.md` - 变更日志
- `LICENSE` - 许可证
3. **配置文件**:
- `.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
```
## 安全注意事项
1. **绝不要提交敏感信息**:
- 访问密钥 (Access Keys)
- 私钥 (Private Keys)
- 密码 (Passwords)
- 其他认证信息
2. **使用环境变量或外部密钥管理**:
- AWS Secrets Manager
- HashiCorp Vault
- 环境变量
3. **定期审查**:
- 检查是否有敏感信息被意外提交
- 使用 `git-secrets` 等工具扫描
## 工作流程
1. 开发者克隆仓库
2. 创建 `terraform.tfvars` 文件 (不提交)
3. 运行 `terraform init` 下载 providers
4. 运行 `terraform plan``terraform apply`
5. 状态文件仅保存在本地或远程后端
这样可以确保代码库的安全性和可移植性。