<p>tfenvは、terraformのインストール時に.terraform-versionファイルを上書きします</p>

作成日 2019年08月12日  ·  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の内容は、特に変更しない限り、同じままであると思います。

設定

  • OS:MacOS Mojave(10.14.6)
  • シェル:Bash 5.0.7
  • TFEnvバージョン:1.0.1
bug

最も参考になるコメント

@ e-nomemそれは確かに問題のようです。 私がtfenvをどのように使用するかを考えると、 tfenv-install最後にtfenv-useを呼び出さないようにすることができると思います。 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-install最後にtfenv-useを呼び出さないようにすることができると思います。 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を一般的に追跡したいのですが、誰かがCIの外部からtfenv installを実行すると、.terraform-versionは特定のバージョンで更新されます。例のように。 人々が実際に上書きを使用する場合、既存のtfenv install機能を壊さなくても問題ありませんが、TFENV_NOOVERWRITEのような設定で無効にできれば、それで満足です。

プロジェクト固有の.terraform-versionファイルを上書きすると、ファイルの使用がほとんど役に立たなくなり、誰かが意図せずにソース管理に変更をコミットするリスクもあります。 リポジトリ内のファイルをプロジェクトに使用されたバージョンを_修正_するために使用するため、 tfenvコマンドでファイルを上書きするのはかなり問題があります。

tfenvを使用して.terraform-versionファイルを変更しないことに同意します。
これを停止すると、tfenvを発行するユーザーが混乱し、バージョンファイルがあるために要求したバージョンを取得できない可能性があります。
そのユーザーエクスペリエンスを改善することについての考えを歓迎しますが、上書きを停止することは確かに正しいことです。

あなたがどのような考えを探しているのかはわかりませんが、私の意見では、 tfenvは、たとえ存在していなくても、そのファイルに書き込む必要はありません。 そのファイルを_読み取り専用_として扱う必要があります。 必要に応じてそのファイルを作成し、プロジェクトに固定バージョンのTerraformを使用する場合は、ファイルを自分のリポジトリにコミットするのは、 tfenvの_users_次第です。

tfenv installおよびtfenv useコマンドは、コマンドラインでバージョンが明示的に指定されていない場合、 .terraform-versionファイルを検索する必要があります。 ファイルが存在する場合、コマンドはそれを使用してコマンドで使用するバージョンを決定する必要があります。ファイルが存在しない場合、コマンドは失敗し、ユーザーがコマンドラインまたは.terraform-version内でバージョンを指定する必要があることを示します。 .terraform-versionファイルは無視する必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価