实用指南:Terraform 项目中 Git Push 错误的排查
Source: Dev.to

引言
在处理一个 Terraform 项目时,我遇到了几个 Git push 错误,起初让人感到困惑和沮丧。每个错误其实都是一次宝贵的学习机会。本文逐步记录这些问题,解释它们产生的原因,并展示正确的解决办法。
如果你正在学习 Terraform、DevOps 或基础设施即代码(IaC),很可能也会遇到这些相同的问题。
1️⃣ GitHub 拒绝大文件(>100 MB)
错误
File .terraform/...terraform-provider-aws is larger than 100 MB
为什么会出现
.terraform/ 目录被提交进了仓库。该目录包含 Terraform 提供者的二进制文件,体积往往达数百兆,绝不应该被版本控制。
正确的解决办法
在 .gitignore 中添加以下条目:
.terraform/
*.tfstate
*.tfstate.backup
如果大文件已经进入了仓库历史,针对新项目最简洁的做法是重新初始化仓库:
rm -rf .git
git init
git add .
git commit -m ""
(对于已有的仓库,也可以使用 git filter-repo 或 git filter-branch 将这些文件从历史记录中清除。)
2️⃣ GitHub Push Protection 阻止泄露密钥
错误
Push cannot contain secrets (AWS Access Key detected)
为什么会出现
AWS 凭证被硬编码在 provider.tf 中。GitHub 会自动扫描提交内容中的密钥,并阻止推送,以防止凭证泄露。
不要这么做
provider "aws" {
access_key = "AKIA..."
secret_key = "xxxx"
}
正确的做法
在不嵌入凭证的情况下配置提供者:
provider "aws" {
region = "us-east-1"
}
将凭证安全地存放,例如:
- 使用
aws configure(写入~/.aws/credentials) - 环境变量(
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY等) - IAM 角色(推荐用于 EC2、CloudShell、CI/CD 流水线)
⚠️ 如果凭证曾经被提交,即使推送被阻止,也要立即轮换这些凭证。