Должен ли я фиксировать или игнорировать символические ссылки локального модуля Terraform?

#git #version-control #terraform

#git #контроль версий #terraform

Вопрос:

Terraform может создать несколько файлов в каталоге .terraform.

  1. Файл .tfstate, который представляет собой файл json, содержащий состояние. Я могу рассмотреть этот вопрос для этого.
  2. Резервные копии .tfstate, которые, я уверен, я могу .gitignore.
  3. Каталог модулей, который содержит ссылки на модули.

terraform 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
  

Все эти файлы находятся в одном репозитории. Когда коллега клонировал это репозиторий, он заметил, что запуск terraform get привел к появлению новых символических ссылок, хотя модули не изменились.

Должен ли я добавить каталог .terraform /modules в .gitignore и требовать, чтобы все разработчики запускали terraform get его в любое время git pull ?

Ответ №1:

Мы gitignore всю .terraform папку целиком.

Да, это означает, что вам нужно запускать a terraform get перед каждым действием, но обычно при работе в составе команды вы захотите обернуть свои действия Terraform во вспомогательные скрипты, которые могут делать это, а также управлять удаленным состоянием для вас.

На самом деле в приведенной выше документации для terraform get явно не рекомендуется передавать папку в систему управления версиями:

Модули загружаются в папку local .terraform . Эта папка не должна передаваться в систему управления версиями.