<p>يستبدل tfenv ملف .terraform-version عند تثبيت terraform</p>

تم إنشاؤها على ١٢ أغسطس ٢٠١٩  ·  7تعليقات  ·  مصدر: tfutils/tfenv

مشكلة

أستخدم الملف .terraform-version لتحديد أي إصدار (إصدارات) من Terraform يجب استخدامه لشجرة دليل معينة. أستخدم بانتظام طريقة regex لمحتويات .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
bug

التعليق الأكثر فائدة

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

أود بالتأكيد طريقة لإيقاف الكتابة فوق على الأقل ، حتى لو كان متغيرًا في shell. نحن نطرح مجموعة من الترقيات المعقدة من tf 0.11 إلى 0.12 ونريد تتبع أحدث 0.12 بشكل عام ، ولكن عندما يقوم شخص ما بتشغيل tfenv install من خارج CI ، يتم تحديث إصدار .terraform بالإصدار المحدد كما في المثال. أنا بخير لعدم كسر الوظيفة الحالية لـ tfenv install إذا كان الأشخاص يستخدمون بالفعل الكتابة الفوقية ، ولكن إذا تمكنا من إيقافها عن طريق تعيين شيء مثل TFENV_NOOVERWRITE ، فسأكون سعيدًا بذلك.

تؤدي الكتابة فوق الملف .terraform-version الخاص بالمشروع إلى جعل استخدام الملف عديم الفائدة تقريبًا ، كما أنه يعرضك لخطر قيام شخص ما عن غير قصد بإجراء التغيير في التحكم بالمصادر. نستخدم الملف في الريبو إلى _fix_ الإصدار المستخدم للمشروع ، لذا فإن الكتابة فوقه بأمر tfenv هي مشكلة إلى حد ما.

أوافق على ألا يؤدي استخدام tfenv إلى تعديل ملف الإصدار .terraform.
من المحتمل أن يؤدي إيقافه عن القيام بذلك إلى إرباك المستخدمين الذين يصدرون tfenv ، ثم لا يحصلون على الإصدار الذي طلبوه لأن لديهم ملف إصدار.
أرحب بالأفكار المتعلقة بتحسين تجربة المستخدم هذه ، لكن من المؤكد أن إيقاف الكتابة هو الشيء الصحيح.

لست متأكدًا من نوع الأفكار التي تبحث عنها ، ولكن في رأيي ، يجب ألا يكتب _ أبدًا _ على هذا الملف tfenv ، حتى لو لم يكن موجودًا. يجب أن يتعامل مع هذا الملف على أنه _ read only_. الأمر متروك لمستخدمي tfenv لإنشاء هذا الملف ، إذا رغبوا في ذلك ، ومن ثم إلزامه بمستودعاتهم الخاصة إذا كانوا يريدون استخدام إصدار ثابت من Terraform لمشاريعهم.

يجب أن يبحث الأمران tfenv install و tfenv use عن ملف .terraform-version عندما لا يتم تحديد إصدار صريحًا في سطر الأوامر. إذا كان الملف موجودًا ، يجب أن تستخدمه الأوامر لتحديد الإصدار الذي سيتم استخدامه مع الأمر ، وإذا لم يكن موجودًا ، فيجب أن تفشل الأوامر ، مما يشير إلى أنه يجب على المستخدم تحديد إصدار في سطر الأوامر ، أو داخل .terraform-version ملف. عند تحديد إصدار في سطر الأوامر ، يجب تجاهل الملف .terraform-version .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات