.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
の内容は、特に変更しない限り、同じままであると思います。
これは心配です。 できるだけ早く調査します
これは、 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
ファイルは無視する必要があります。
最も参考になるコメント
@ e-nomemそれは確かに問題のようです。 私がtfenvをどのように使用するかを考えると、
tfenv-install
最後にtfenv-use
を呼び出さないようにすることができると思います。 Terraformのバージョンをインストールしたからといって、今すぐ使用したり、グローバルなデフォルトバージョンとして使用したりする必要はありません。ただし、この動作を構成できれば便利です。 例えば: