Ошибка инициализации Terraform: не удалось загрузить модуль (локальные изменения будут перезаписаны)

У меня есть совершенно новый локальный проект Terraform, который я только что клонировал из gitlab. Я не вносил никаких изменений в код, но когда я запускаю terraform init Я получаю следующую ошибку, повторяющуюся для каждого модуля в проекте:

Error: Failed to download module

Could not download module " <module name>"
(<filename>.tf:<line #>) source code from
"git::<gitlab address>":
error downloading
'<gitlab address>':
C:\Program Files\Git\cmd\git.exe exited with 1: error: Your local changes to
the following files would be overwritten by checkout:
        README.md
Please commit your changes or stash them before you switch branches.
Aborting

Каждая загрузка модуля завершается ошибкой в ​​одном и том же файле: README.md. Опять же, я не внес никаких изменений ни в какие файлы в проекте.

Моя первоначальная мысль заключалась в том, что это может быть связано с проблемой окончания строки: я использую Windows, а файлы модулей в удаленном репозитории были созданы на Mac. Чтобы решить эту проблему, я выполнил команду git config --global core.autocrlf true
(по рекомендациям здесь)

Затем я удалил папку .terraform и повторно запустил terraform initно получил тот же набор ошибок.

Что мне не хватает?

1 ответ
1

Похоже, у вас та же проблема, о которой упоминалось здесь, что больше похоже на поведение Git, чем на Terraform. Попробуйте добавить краткосрочный обходной путь, упомянутый в этой проблеме Github (путем добавления --depth в вашем модуле source.

Однако, если он запускает несколько команд git последовательно, что усугубляет эту проблему, то краткосрочным обходным решением (пока это не будет решено вверх по течению в Git) может быть установка аргумента запроса depth=1 в вашем исходном адресе, например github.com/ foo/bar?ref=v1.2.3&depth=1. В текущей реализации получается, что Terraform реализует режим мелкого клонирования, запустив git clone —depth=1 —branch=v1.2.3, что позволяет избежать необходимости отдельного шага проверки, хотя я не припоминаю сразу. примет ли Git то, что выглядит как имя тега, как действительное —branch= в этом контексте, или он специально требует ссылки refs/heads/… .

файзан

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *