Initial commit: Terraform configurations for multiple cloud providers
This commit is contained in:
89
volcengine/GIT_EXCLUDES.md
Normal file
89
volcengine/GIT_EXCLUDES.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# 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. 状态文件仅保存在本地或远程后端
|
||||
|
||||
这样可以确保代码库的安全性和可移植性。
|
||||
Reference in New Issue
Block a user