我应该提交还是忽略 Terraform 本地模块符号链接?

Should I commit or ignore Terraform local module symlinks?

Terraform 可能会在 .terraform 目录中创建一些文件。

  1. .tfstate 文件,这是一个包含状态的 json 文件。我可以为此复习这个问题。
  2. .tfstate 备份,我很确定我可以 .gitignore.
  3. 模块目录,其中包含模块链接。

如果我使用 local modulesterraform get 命令将创建到我的本地模块路径的符号链接。这些路径名是散列,比如

7a1d2376c59a613c3888163f019b98c1@ -> /Users/michael/dev/a-project/terraform/modules/netpart
dc86adf2084ae95b189765d26b75702d@ -> /Users/michael/dev/a-project/terraform/modules/cluster
e03511e017c5612ae4b9e9ebc49d4611@ -> /Users/michael/dev/a-project/terraform/modules/cluster
eb8c48ae43e85626ff456d0a58a6a6a6@ -> /Users/michael/dev/a-project/terraform/modules/netpart

所有这些文件都在同一个仓库中。当一位同事克隆该 repo 时,他注意到 运行ning terraform get 导致了新的符号链接,即使模块没有改变。

我是否应该将 .terraform/modules 目录添加到 .gitignore 并要求所有开发人员随时 运行 terraform get git pull

我们完全忽略整个 .terraform 文件夹。

是的,这确实意味着您需要在每个操作之前 运行 一个 terraform get,但通常在作为团队的一部分工作时,您会希望将 Terraform 操作包装在可以执行此操作的帮助脚本中以及为您管理远程状态。

实际上 terraform get 的上述文档明确建议您不要将文件夹提交给源代码管理:

The modules are downloaded into a local .terraform folder. This folder should not be committed to version control.