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

发布: (2025年12月25日 GMT+8 01:46)
3 分钟阅读
原文: Dev.to

Source: Dev.to

Cover image for A Practical Guide to Troubleshooting Git Push Errors in Terraform Projects

引言

在处理一个 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-repogit 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_IDAWS_SECRET_ACCESS_KEY 等)
  • IAM 角色(推荐用于 EC2、CloudShell、CI/CD 流水线)

⚠️ 如果凭证曾经被提交,即使推送被阻止,也要立即轮换这些凭证。

Back to Blog

相关文章

阅读更多 »