مدير إصدار Terraform مستوحى من RBENV
يدعم TFENV حاليًا أنظمة التشغيل التالية
التثبيت عبر homebrew
brew install tfenv
تثبيت عبر مستخدم مستخدم القوس (AUR)
yay --sync tfenv
تثبيت عبر العرائس
باستخدام وحدة دمية Sergk-tfenv
include ::tfenv
${HOME}/.tfenv
) git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
~/.tfenv/bin
إلى $PATH
الخاص بك بأي طريقة تريدسحق:
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
Zsh:
$ echo ' export PATH="$HOME/.tfenv/bin:$PATH" ' >> ~ /.zprofile
لمستخدمي WSL:
echo ' export PATH=$PATH:$HOME/.tfenv/bin ' >> ~ /.bashrc
أو يمكنك عمل Symlinks لـ tfenv/bin/*
البرامج النصية في مسار تمت إضافته بالفعل إلى $PATH
(على سبيل المثال /usr/local/bin
) OSX/Linux Only!
ln -s ~/.tfenv/bin/* /usr/local/bin
على Ubuntu/Debian Touching /usr/local/bin
قد تتطلب الوصول إلى sudo ، ولكن يمكنك إنشاء ${HOME}/bin
أو $PATH
${HOME}/.local/bin
عن طريق الجري . ${HOME}/.profile
سيتم إضافته إلى $PATH
shell الحالي.
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
تثبيت نسخة محددة من terraform.
إذا لم يتم تمرير أي معلمة ، يتم حل الإصدار المراد استخدامه تلقائيًا عبر متغير بيئة TFENV_TERRAFORM_VERVERT أو. الافتراضي هو "الأحدث" إذا لم يتم العثور على أي منها.
إذا تم تمرير المعلمة ، فإن الخيارات المتاحة:
xyz
Semver 2.0.0 تحدد الإصدار الدقيق للتثبيتlatest
هو بناء جملة لتثبيت أحدث إصدارlatest:<regex>
هو بناء جملة لتثبيت أحدث إصدار مطابق Regex (يستخدمه Grep -e)latest-allowed
هو بناء جملة لمسح ملفات terraform لاكتشاف الإصدار المسموح به بشكل أقصى.min-required
هو بناء جملة لمسح ملفات terraform لاكتشاف الإصدار المطلوب الحد الأدنى.انظر Docs المطلوبة. انظر أيضًا القسم المطلوب وأحدث السماح أدناه.
$ tfenv install
$ tfenv install 0.7.0
$ tfenv install latest
$ tfenv install latest:^0.8
$ tfenv install latest-allowed
$ tfenv install min-required
إذا كان shasum
موجودًا في المسار ، فسيتحقق TFENV من التنزيل ضد Hashicorp المنشور SHA256. إذا كانت Keybase متوفرة في المسار ، فسيتحقق أيضًا من توقيع التجزئة المنشورة باستخدام المفتاح العام المنشور لـ Hashicorp.
يمكنك الاشتراك في استخدام أدوات GNUPG للتحقق من توقيع PGP إذا كانت قاعدة المفاتيح غير متوفرة:
حيث TFENV_INSTALL_DIR
على سبيل المثال ، ~/.tfenv
أو /usr/local/Cellar/tfenv/<version>
echo 'trust-tfenv: yes' > ${TFENV_INSTALL_DIR}/use-gpgv
tfenv install
يعني توجيه trust-tfenv
أن التحقق يستخدم نسخة من مفتاح Hashicorp OpenPGP الموجود في مستودع TFENV. إن تخطي هذا التوجيه يعني أن مفتاح Hashicorp يجب أن يكون في المفاتيح الموثوقة الافتراضية الحالية. استخدم الملف ${TFENV_INSTALL_DIR}/use-gnupg
لاستدعاء أداة gpg
الكاملة ومشاهدة حالة الويب ؛ احذر من أن عدم وجود مسار ثقة لن يتسبب في فشل التحقق من الصحة.
إذا كنت تستخدم ملف .terraform-version ، فسيقوم tfenv install
(بدون وسيطة) بتثبيت الإصدار المكتوب فيه.
يرجى ملاحظة أننا لا نقوم بتحليل نطاق الإصدار الدلالي ولكن نستخدم الإصدار الأول الذي تم العثور عليه على الإطلاق كمرشح للمرشح المطلوب الحد الأدنى. الأمر متروك للمستخدم للحفاظ على التعريف معقول. أي
// this will detect 0.12.3
terraform {
required_version = " <0.12.3, >= 0.10.0 "
}
// this will detect 0.10.8 (the latest 0.10.x release)
terraform {
required_version = " ~> 0.10.0, <0.12.3 "
}
TFENV_ARCH
سلسلة (افتراضي: amd64
)
تحديد العمارة. يمكن تحديد بنية غير AMD64 الافتراضية مع متغير بيئة TFENV_ARCH
ملاحظة: التغييرات الافتراضية إلى arm64
للإصدارات التي تحتوي على ARM64 تتوفر عندما يتطابق $(uname -m)
aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
سلسلة (افتراضي: صحيح)
إذا كان TFENV تثبيت Terraform تلقائيًا إذا لم يتم تثبيت الإصدار المحدد بشكل افتراضي أو ملف .terraform-version حاليًا.
TFENV_AUTO_INSTALL=false terraform plan
terraform use <version that is not yet installed>
TFENV_CURL_OUTPUT
عدد صحيح (افتراضي: 2)
قم بتعيين الآلية المستخدمة لعرض تقدم التنزيل عند تنزيل إصدارات Terraform من الخادم البعيد.
-#
إلى حليقة-s
إلى حليقة TFENV_DEBUG
عدد صحيح (افتراضي: 0)
تعيين مستوى التصحيح ل TFENV.
TFENV_REMOTE
سلسلة (افتراضي: https://release.hashicorp.com)
للتثبيت من جهاز تحكم عن بعد غير الافتراضي
TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
TFENV_REVERSE_REMOTE
عدد صحيح (افتراضي: 0)
عند استخدام جهاز تحكم عن بُعد مخصص ، مثل القطع الأثرية ، بدلاً من خوادم Hashicorp ، قد يتم قلب قائمة الإصدارات terraform التي يتم إرجاعها بواسطة حليقة الدليل عن بُعد. في هذه الحالة ، لن تعمل الوظائف latest
كما هو متوقع لأنها تتوقع إدراج الإصدارات حسب ترتيب تاريخ الإصدار من الأحدث إلى الأقدم. إذا كان جهاز التحكم عن بُعد الخاص بك بدلاً من ذلك يوفر قائمة قديمة أولاً ، فقم بتعيين TFENV_REVERSE_REMOTE=1
وسيتم استعادة الوظائف.
TFENV_REVERSE_REMOTE=1 tfenv list-remote
TFENV_CONFIG_DIR
المسار (الافتراضي: $TFENV_ROOT
)
المسار إلى دليل حيث توجد إصدارات Terraform المحلية وملفات التكوين.
TFENV_CONFIG_DIR="$XDG_CONFIG_HOME/tfenv"
TFENV_TERRAFORM_VERSION
سلسلة (افتراضي: "")
إذا لم تكن سلسلة فارغة ، فإن هذا المتغير يتجاوز إصدار terraform ، المحدد في ملفات .terraform-version. latest
latest:<regex>
بناء جملة مدعوم أيضًا. يحترم الأمر tfenv install
و tfenv use
هذا المتغير أيضًا.
على سبيل المثال
TFENV_TERRAFORM_VERSION=latest:^0.11. terraform --version
TFENV_NETRC_PATH
سلسلة (افتراضي: "")
إذا لم تكن سلسلة فارغة ، فإن هذا المتغير يحدد ملف بيانات الاعتماد المستخدم للوصول إلى الموقع البعيد (مفيد إذا تم استخدامه بالتزامن مع TFENV_REMOTE).
على سبيل المثال
TFENV_NETRC_PATH="$PWD/.netrc.tfenv"
BASHLOG_COLOURS
عدد صحيح (افتراضي: 1)
لتعطيل تلوين إخراج وحدة التحكم ، اضبط على 0.
BASHLOG_DATE_FORMAT
سلسلة (افتراضي: +٪ f ٪ t)
تنسيق العرض للتاريخ كما تم تمريره إلى date
Binary لإنشاء datestamp المستخدم كبادئة لـ:
FILE
.BASHLOG_EXTRA=1
BASHLOG_EXTRA
عدد صحيح (افتراضي: 0)
افتراضيًا ، لا يقوم إخراج وحدة التحكم من TFENV بطباعة ختم التاريخ أو شدة السجل.
لتمكين هذه الوظيفة ، مما يجعل الإخراج العادي مكافئًا لإخراج السجل ، ضبطه على 1.
BASHLOG_FILE
عدد صحيح (افتراضي: 0)
قم بتعيين 1 لتمكين تسجيل النص العادي للملف (تسجيل نوع الملف).
يتم تعريف المسار الافتراضي لملفات السجل بواسطة /tmp /$ (basename $ 0) .Log كل سجلات قابلة للتنفيذ إلى ملفها الخاص.
على سبيل المثال
BASHLOG_FILE=1 tfenv use latest
سيتم تسجيل الدخول إلى /tmp/tfenv-use.log
BASHLOG_FILE_PATH
سلسلة (افتراضي: /tmp /$ (basename $ {0}). سجل)
لتحديد ملف واحد كهدف لجميع تسجيل نوع الملف بغض النظر عن البرنامج النصي التنفيذ.
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX
سلسلة (افتراضي: "")
كن حذرًا - سيؤدي إساءة الاستخدام إلى تدمير كل ما أحببته على الإطلاق
يتيح لك هذا المتغير تمرير سلسلة تحتوي على أمر سيتم تنفيذه باستخدام eval
من أجل إنتاج بادئة لكل سطر إخراج وحدة تحكم ، وكل إدخال سجل نوع الملف.
على سبيل المثال
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX='echo "${$$} "'
سوف بادئة كل خط سجل مع عملية الاتصال 'pid.
BASHLOG_JSON
عدد صحيح (افتراضي: 0)
قم بتعيين 1 لتمكين تسجيل JSON للملف (تسجيل نوع JSON).
يتم تعريف المسار الافتراضي لملفات السجل بواسطة /tmp /$ (الاسم الأساسي $ 0) .log.json كل سجلات قابلة للتنفيذ إلى ملفها الخاص.
على سبيل المثال
BASHLOG_JSON=1 tfenv use latest
سيتم تسجيل الدخول إلى تنسيق JSON إلى /tmp/tfenv-use.log.json
محتوى سجل JSON:
{"timestamp":"<date +%s>","level":"<log-level>","message":"<log-content>"}
BASHLOG_JSON_PATH
سلسلة (افتراضي: /tmp /$ (basename $ {0}). log.json)
لتحديد ملف واحد كهدف لجميع تسجيلات نوع JSON بغض النظر عن البرنامج النصي المنفذ.
BASHLOG_SYSLOG
عدد صحيح (افتراضي: 0)
لتسجيل الدخول إلى syslog باستخدام logger
binary ، اضبط هذا على 1.
الوظيفة الأساسية هي:
local tag="${BASHLOG_SYSLOG_TAG:-$(basename "${0}")}";
local facility="${BASHLOG_SYSLOG_FACILITY:-local0}";
local pid="${$}";
logger --id="${pid}" -t "${tag}" -p "${facility}.${severity}" "${syslog_line}"
BASHLOG_SYSLOG_FACILITY
سلسلة (افتراضي: local0)
منشأة Syslog لتحديدها عند استخدام تسجيل نوع syslog.
BASHLOG_SYSLOG_TAG
سلسلة (افتراضي: $ (basename $ 0))
علامة syslog لتحديدها عند استخدام تسجيل نوع syslog.
الإعدادات الافتراضية إلى PID من عملية الاتصال.
تبديل نسخة للاستخدام
إذا لم يتم تمرير أي معلمة ، يتم حل الإصدار المراد استخدامه تلقائيًا عبر ملفات .terraform-version أو متغير البيئة TFENV_TERRAFORM_VERVERT (TFENV_TERRAFORM_VERVER) ، يتخلف عن "الأحدث" إذا لم يتم العثور على أي منها.
latest
هو بناء جملة لاستخدام أحدث إصدار مثبت
latest:<regex>
هو بناء جملة لاستخدام أحدث إصدار مثبت مطابقة Regex (المستخدمة بواسطة Grep -e)
سيتم تبديل min-required
إلى الإصدار المطلوب الحد الأدنى من مصادر Terraform (انظر tfenv install
أعلاه)
$ tfenv use
$ tfenv use min-required
$ tfenv use 0.7.0
$ tfenv use latest
$ tfenv use latest:^0.8
ملاحظة: tfenv use latest
أو tfenv use latest:<regex>
ستجد أحدث إصدار مطابق مثبت بالفعل. إذا لم يتم تثبيت أي إصدارات مطابقة ، وتم تعيين TFENV_AUTO_INSTALL على true
(وهو الافتراضي) سيتم تثبيت أحدث إصدار مطابق في المستودع البعيد واستخدامه.
قم بإلغاء تثبيت إصدار محدد من Terraform latest
هو بناء جملة لإلغاء تثبيت أحدث إصدار latest:<regex>
هو بناء جملة لإلغاء تثبيت أحدث إصدار مطابق لـ REGEX (يستخدم بواسطة GREP -E)
$ tfenv uninstall 0.7.0
$ tfenv uninstall latest
$ tfenv uninstall latest:^0.8
قائمة الإصدارات المثبتة
$ tfenv list
* 0.10.7 (set by /opt/tfenv/version)
0.9.0-beta2
0.8.8
0.8.4
0.7.0
0.7.0-rc4
0.6.16
0.6.2
0.6.1
قائمة الإصدارات القابلة للتثبيت
$ tfenv list-remote
0.9.0-beta2
0.9.0-beta1
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.8.0-rc3
0.8.0-rc2
0.8.0-rc1
0.8.0-beta2
0.8.0-beta1
0.7.13
0.7.12
...
إذا وضعت ملف .terraform-version
على جذر مشروعك ، أو في الدليل الرئيسي ، يكتشف TFENV ويستخدم الإصدار المكتوب فيه. إذا كان الإصدار هو latest
أو latest:<regex>
، فسيتم تحديد أحدث إصدار مطابقة مثبت حاليًا.
ملاحظة ، يمكن استخدام متغير البيئة TFENV_TERRAFORM_VERVER لتجاوز الإصدار ، المحدد بواسطة ملف .terraform-version
.
$ cat .terraform-version
0.6.16
$ terraform version
Terraform v0.6.16
Your version of Terraform is out of date! The latest version
is 0.7.3. You can update by downloading from www.terraform.io
$ echo 0.7.3 > .terraform-version
$ terraform version
Terraform v0.7.3
$ echo latest:^0.8 > .terraform-version
$ terraform version
Terraform v0.8.8
$ TFENV_TERRAFORM_VERSION=0.7.3 terraform --version
Terraform v0.7.3
git --git-dir=~/.tfenv/.git pull
rm -rf /some/path/to/tfenv