ผู้จัดการเวอร์ชัน Terraform ได้รับแรงบันดาลใจจาก RBENV
ปัจจุบัน TFENV รองรับ OSE ต่อไปนี้
ติดตั้งผ่าน Homebrew
brew install tfenv
ติดตั้งผ่านที่เก็บผู้ใช้ Arch (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
หรือ ${HOME}/.local/bin
และในการเข้าสู่ระบบถัดไปมันจะเพิ่มลงใน Session $PATH
หรือ โดยการ . ${HOME}/.profile
มันจะได้รับการเพิ่มลงใน $PATH
ของเซสชันเชลล์ปัจจุบัน
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
ติดตั้ง Terraform เวอร์ชันเฉพาะ
หากไม่มีการส่งพารามิเตอร์เวอร์ชันที่ใช้จะได้รับการแก้ไขโดยอัตโนมัติผ่านตัวแปรสภาพแวดล้อม TFENV_Terraform_version หรือไฟล์. เทอร์ราฟอร์ม-เวอร์ชันตามลำดับของลำดับความสำคัญคือ tfenv_terraform_version จากนั้น ค่าเริ่มต้นคือ 'ล่าสุด' หากไม่พบ
หากผ่านพารามิเตอร์ตัวเลือกที่มีอยู่:
xyz
SEMVER 2.0.0 ระบุเวอร์ชันที่แน่นอนเพื่อติดตั้งlatest
คือไวยากรณ์ในการติดตั้งเวอร์ชันล่าสุดlatest:<regex>
เป็นไวยากรณ์ในการติดตั้งเวอร์ชันล่าสุดที่ตรงกัน regex (ใช้โดย Grep -E)latest-allowed
เป็นไวยากรณ์ในการสแกนไฟล์ Terraform ของคุณเพื่อตรวจสอบว่าเวอร์ชันใดที่ได้รับอนุญาตสูงสุดmin-required
เป็นไวยากรณ์ในการสแกนไฟล์ Terraform ของคุณเพื่อตรวจจับเวอร์ชันใดที่จำเป็นน้อยที่สุดดูเอกสารที่ต้องการ _version ดูส่วนที่ต้องการขั้นต่ำและอนุญาตล่าสุดด้านล่าง
$ 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 ที่เผยแพร่ของ Hashicorp หาก KeyBase มีอยู่ในเส้นทางมันจะตรวจสอบลายเซ็นสำหรับแฮชที่เผยแพร่โดยใช้คีย์สาธารณะที่เผยแพร่ของ Hashicorp
คุณสามารถเลือกใช้เครื่องมือ GNUPG สำหรับการตรวจสอบลายเซ็น PGP ได้หากไม่มี KeyBase:
โดยที่ 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
แบบเต็มและดูสถานะของเว็บที่น่าเชื่อถือ ระวังว่าการขาดเส้นทางความน่าเชื่อถือจะไม่ทำให้เกิดความล้มเหลวในการตรวจสอบ
หากคุณใช้ไฟล์. tterraform-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 Builds พร้อมใช้งานเมื่อ $(uname -m)
ตรงกับ aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
สตริง (ค่าเริ่มต้น: จริง)
ควรติดตั้ง terraform โดยอัตโนมัติหากรุ่นที่ระบุโดยค่าเริ่มต้นหรือไฟล์. เทอร์ราฟอร์ม-เวอร์ชันไม่ได้ติดตั้งในขณะนี้
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://releases.hashicorp.com)
ในการติดตั้งจากระยะไกลนอกเหนือจากค่าเริ่มต้น
TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
TFENV_REVERSE_REMOTE
จำนวนเต็ม (ค่าเริ่มต้น: 0)
เมื่อใช้รีโมทที่กำหนดเองเช่น Artifactory แทนที่จะเป็นเซิร์ฟเวอร์ Hashicorp รายการเวอร์ชัน Terraform ที่ส่งคืนโดย Curl ของไดเรกทอรีระยะไกลอาจกลับด้าน ในกรณีนี้ฟังก์ชั่น 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 ที่ระบุไว้ในไฟล์. tterraform-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
ไบนารีเพื่อสร้าง 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 /$ (basename $ 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 ของกระบวนการโทร
สลับเวอร์ชันที่จะใช้
หากไม่มีการส่งพารามิเตอร์เวอร์ชันที่ใช้จะได้รับการแก้ไขโดยอัตโนมัติผ่านไฟล์. tterraform-version หรือตัวแปรสภาพแวดล้อม TFENV_Terraform_version (ตัวแปรสภาพแวดล้อม (TFENV_Terraform_version มีความสำคัญกว่า) ค่าเริ่มต้นเป็น 'ล่าสุด' หากไม่พบ
latest
เป็นไวยากรณ์ในการใช้เวอร์ชันล่าสุดที่ติดตั้ง
latest:<regex>
เป็นไวยากรณ์ที่จะใช้ Regex ที่ตรงกันเวอร์ชันล่าสุดที่ติดตั้ง (ใช้โดย GREP -E)
min-required
จะเปลี่ยนเป็นเวอร์ชันที่ต้องการน้อยที่สุดโดยแหล่งที่มาของคุณ (ดูด้านบน 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_version สามารถใช้ในการแทนที่เวอร์ชันที่ระบุโดยไฟล์. .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