<p>tfenv menimpa file versi .terraform saat menginstal terraform</p>

Dibuat pada 12 Agu 2019  ·  7Komentar  ·  Sumber: tfutils/tfenv

Masalah

Saya menggunakan file .terraform-version untuk memilih versi Terraform mana yang harus digunakan untuk pohon direktori tertentu. Saya secara teratur menggunakan metode regex untuk konten .terraform-version . Bila perlu, saya akan menjalankan tfenv install untuk mendapatkan versi Terraform yang sesuai di sistem saya jika tidak ada. Namun, dalam melakukannya, tfenv menimpa file .terraform-version dengan nomor versi persis yang diinstal.

Langkah-langkah untuk mereproduksi

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

Perilaku yang diharapkan

Saya berharap konten .terraform-version tetap sama kecuali saya mengubahnya secara khusus.

Mempersiapkan

  • OS: MacOS Mojave (10.14.6)
  • Cangkang: Bash 5.0.7
  • Versi TFEnv: 1.0.1
bug

Komentar yang paling membantu

@e-nomem yang tampaknya memang menjadi masalah. Mengingat bagaimana saya menggunakan tfenv, saya pikir sebuah kasus dapat dibuat untuk tidak pernah memanggil tfenv-use di akhir tfenv-install . Hanya karena saya menginstal versi Terraform, tidak berarti saya ingin menggunakannya sekarang, atau menjadikannya sebagai versi default global saya.

Namun, alangkah baiknya jika Anda dapat mengonfigurasi perilaku ini. Contohnya:

## 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)

Semua 7 komentar

Ini memprihatinkan. Akan menyelidiki secepatnya

Ini sepertinya berasal dari panggilan ke tfenv-use di akhir tfenv-install , karena tfenv-use menimpa file versi .
Sepertinya saya bahwa panggilan ke tfenv-use tidak diperlukan untuk menginstal, karena hanya file versi global yang harus diperbarui, dan hanya jika file versi global belum ada.

@e-nomem yang tampaknya memang menjadi masalah. Mengingat bagaimana saya menggunakan tfenv, saya pikir sebuah kasus dapat dibuat untuk tidak pernah memanggil tfenv-use di akhir tfenv-install . Hanya karena saya menginstal versi Terraform, tidak berarti saya ingin menggunakannya sekarang, atau menjadikannya sebagai versi default global saya.

Namun, alangkah baiknya jika Anda dapat mengonfigurasi perilaku ini. Contohnya:

## 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)

Saya pasti ingin cara untuk mematikan penimpaan setidaknya, bahkan jika itu adalah variabel Shell. Kami meluncurkan banyak peningkatan yang rumit dari tf 0.11 ke 0.12 dan kami ingin melacak 0.12 terbaru secara umum, tetapi setiap kali seseorang menjalankan tfenv install dari luar CI, versi .terraform akan diperbarui dengan versi tertentu seperti pada contoh. Saya baik-baik saja dengan tidak merusak fungsi tfenv install jika orang benar-benar menggunakan penimpaan, tetapi jika kami dapat mematikannya dengan menyetel sesuatu seperti TFENV_NOOVERWRITE, saya akan senang dengan itu.

Menimpa file .terraform-version khusus proyek hampir membuat penggunaan file tidak berguna, dan juga menimbulkan risiko seseorang secara tidak sengaja melakukan perubahan ke kontrol sumber. Kami menggunakan file dalam repo untuk _memperbaiki_ versi yang digunakan untuk proyek, jadi menimpanya dengan perintah tfenv agak bermasalah.

Saya setuju bahwa penggunaan tfenv tidak boleh mengubah file versi .terraform.
Menghentikannya melakukan hal ini kemungkinan akan membingungkan pengguna yang mengeluarkan tfenv, dan kemudian tidak mendapatkan versi yang mereka minta karena mereka memiliki file versi.
Saya menyambut baik pemikiran untuk meningkatkan pengalaman pengguna itu, tetapi itu pasti hal yang benar untuk menghentikan penimpaan.

Saya tidak yakin pemikiran seperti apa yang Anda cari, tetapi menurut saya, tfenv harus _never_ menulis ke file itu, meskipun file itu tidak ada. Itu harus memperlakukan file itu sebagai _read only_. Terserah _pengguna_ dari tfenv untuk membuat file itu, jika mereka menginginkannya, dan kemudian mengkomitnya ke repo mereka sendiri jika mereka ingin menggunakan versi tetap Terraform untuk proyek mereka.

Perintah tfenv install dan tfenv use akan mencari file .terraform-version ketika tidak ada versi yang secara eksplisit ditentukan pada baris perintah. Jika file ada, perintah harus menggunakannya untuk menentukan versi mana yang akan digunakan dengan perintah, dan jika tidak ada, perintah akan gagal, menunjukkan bahwa pengguna harus menentukan versi pada baris perintah, atau dalam .terraform-version berkas. Ketika versi ditentukan pada baris perintah, file .terraform-version harus diabaikan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat