<p>tfenv перезаписывает файл .terraform-version при установке terraform</p>

Созданный на 12 авг. 2019  ·  7Комментарии  ·  Источник: tfutils/tfenv

Проблема

Я использую файл .terraform-version чтобы выбрать, какие версии Terraform следует использовать для определенного дерева каталогов. Я регулярно использую метод регулярных выражений для содержимого .terraform-version . При необходимости я запускаю tfenv install чтобы получить соответствующую версию Terraform в моей системе, если ее нет. Однако при этом tfenv перезаписывает мой файл .terraform-version с точным номером версии, которая была установлена.

Действия по воспроизведению

$ echo "latest:^0.12" > .terraform-version
$ tfenv install
....
$ terraform version
Terraform v0.12.6
$ cat .terraform-version
0.12.6

Ожидаемое поведение

Я ожидаю, что содержимое .terraform-version останется прежним, если я специально не изменю его.

Настраивать

  • ОС: MacOS Mojave (10.14.6)
  • Оболочка: Bash 5.0.7
  • Версия TFEnv: 1.0.1

Самый полезный комментарий

@ e-nomem, что действительно является проблемой. Учитывая, как я использую tfenv, я думаю, что можно сделать случай, чтобы никогда не вызывать tfenv-use в конце tfenv-install . Тот факт, что я устанавливаю версию Terraform, не означает, что я хочу использовать ее прямо сейчас или сделать ее своей глобальной версией по умолчанию.

Однако было бы неплохо, если бы вы могли настроить такое поведение. Например:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

Все 7 Комментарий

Это беспокоит. Проведем расследование как можно скорее

Похоже, это происходит из-за вызова tfenv-use в конце tfenv-install , потому что tfenv-use перезаписывает файл версии .
Мне кажется, что вызов tfenv-use для установки не нужен, потому что должен обновляться только файл глобальной версии, и только если файл глобальной версии еще не существует.

@ e-nomem, что действительно является проблемой. Учитывая, как я использую tfenv, я думаю, что можно сделать случай, чтобы никогда не вызывать tfenv-use в конце tfenv-install . Тот факт, что я устанавливаю версию Terraform, не означает, что я хочу использовать ее прямо сейчас или сделать ее своей глобальной версией по умолчанию.

Однако было бы неплохо, если бы вы могли настроить такое поведение. Например:

## Default, use version file
$ tfenv install
(just installs version from file, no tfenv-use required)

$ tfenv install 0.12.6
(just installs, but when detecting an interactive shell, it asks what you want)
Do you want to set Terraform 0.12.6 as your global default (y/n)? y
Updating global version in /Users/benny/.terraform-version... done

$ tfenv install 0.12.6 --global
(installs and sets the default)

Мне определенно нужен способ хотя бы отключить перезапись, даже если это переменная оболочки. Мы выпускаем кучу сложных обновлений с tf 0.11 до 0.12, и мы хотим отслеживать последнюю версию 0.12 в целом, но всякий раз, когда кто-то запускает tfenv install из-за пределов CI, версия .terraform обновляется до конкретной версии. как в примере. Я согласен с тем, чтобы не нарушить существующую функциональность tfenv install если люди действительно используют перезапись, но если бы мы могли отключить ее, установив что-то вроде TFENV_NOOVERWRITE, я был бы счастлив.

Перезапись файла .terraform-version для конкретного проекта практически делает использование файла бесполезным, а также создает риск того, что кто-то непреднамеренно внесет изменения в систему управления версиями. Мы используем файл в репозитории, чтобы _фиксировать_ версию, используемую для проекта, поэтому перезапись его с помощью команды tfenv довольно проблематична.

Я согласен с тем, что использование tfenv не должно изменять файл .terraform-version.
Если вы не сделаете это, скорее всего, пользователи, которые выдают tfenv, не получат запрашиваемую версию, потому что у них есть файл версии.
Я приветствую мысли об улучшении этого взаимодействия с пользователем, но, безусловно, правильное решение - остановить перезапись.

Я не уверен, какие мысли вы ищете, но, на мой взгляд, tfenv должно _ никогда_ записывать в этот файл, даже если он не существует. Он должен рассматривать этот файл как _ только чтение_. _Пользователи_ tfenv должны создать этот файл, если они того пожелают, а затем зафиксировать его в своих собственных репозиториях, если они хотят использовать фиксированную версию Terraform для своих проектов.

Команды tfenv install и tfenv use должны искать файл .terraform-version если в командной строке явно не указана версия. Если файл существует, команды должны использовать его, чтобы определить, какую версию использовать с командой, а если он не существует, команды должны завершиться ошибкой, указывая, что пользователь должен либо указать версию в командной строке, либо в .terraform-version файл. Если в командной строке указана версия, файл .terraform-version следует игнорировать.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

larsLarski picture larsLarski  ·  3Комментарии

itsSaad picture itsSaad  ·  6Комментарии

gudlyf picture gudlyf  ·  10Комментарии

sthristov picture sthristov  ·  5Комментарии

ibakayoko picture ibakayoko  ·  6Комментарии