Manajer Versi Terraform Terinspirasi oleh RBENV
Saat ini TFENV mendukung OS berikut
Instal melalui Homebrew
brew install tfenv
Instal via Arch User Repository (AUR)
yay --sync tfenv
Instal melalui boneka
Menggunakan modul boneka Sergk-tfenv
include ::tfenv
${HOME}/.tfenv
) git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
~/.tfenv/bin
ke $PATH
Anda dengan cara apa pun yang Anda sukapesta:
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
zsh:
$ echo ' export PATH="$HOME/.tfenv/bin:$PATH" ' >> ~ /.zprofile
Untuk pengguna WSL:
echo ' export PATH=$PATH:$HOME/.tfenv/bin ' >> ~ /.bashrc
Atau Anda dapat membuat Symlink untuk skrip tfenv/bin/*
menjadi jalur yang sudah ditambahkan ke $PATH
Anda (EG /usr/local/bin
) OSX/Linux Only!
ln -s ~/.tfenv/bin/* /usr/local/bin
Di Ubuntu/Debian Touching /usr/local/bin
mungkin memerlukan akses sudo, tetapi Anda dapat membuat ${HOME}/bin
atau ${HOME}/.local/bin
dan pada login berikutnya akan ditambahkan ke $PATH
atau dengan berlari . ${HOME}/.profile
akan ditambahkan ke $PATH
shell sesi saat ini.
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
Instal versi Terraform tertentu.
Jika tidak ada parameter yang dilewati, versi yang akan digunakan diselesaikan secara otomatis melalui variabel lingkungan TFENV_TERRAFORM_VERSION atau file .terraform-versi, dalam urutan prioritas, yaitu tfenv_terraform_version, maka .terraform-versi. Standarnya 'terbaru' jika tidak ada yang ditemukan.
Jika parameter dilewatkan, opsi yang tersedia:
xyz
SEMVER 2.0.0 String Menentukan versi yang tepat untuk menginstallatest
adalah sintaks untuk menginstal versi terbarulatest:<regex>
adalah sintaks untuk menginstal versi terbaru yang cocok dengan Regex (digunakan oleh grep -e)latest-allowed
adalah sintaks untuk memindai file Terraform Anda untuk mendeteksi versi mana yang diizinkan secara maksimal.min-required
adalah sintaks untuk memindai file Terraform Anda untuk mendeteksi versi mana yang diperlukan minimal.Lihat Dokumen yang Diperlukan_Version. Juga lihat bagian Min-Imquired & yang diizinkan terbaru di bawah ini.
$ tfenv install
$ tfenv install 0.7.0
$ tfenv install latest
$ tfenv install latest:^0.8
$ tfenv install latest-allowed
$ tfenv install min-required
Jika shasum
hadir di jalur, TFENV akan memverifikasi unduhan terhadap hash SHA256 Hashicorp yang diterbitkan. Jika KeyBase tersedia di jalur itu juga akan memverifikasi tanda tangan untuk mereka yang diterbitkan hash menggunakan kunci publik Hashicorp yang diterbitkan.
Anda dapat memilih untuk menggunakan alat GNUPG untuk verifikasi tanda tangan PGP jika keybase tidak tersedia:
Di mana TFENV_INSTALL_DIR
misalnya, ~/.tfenv
atau /usr/local/Cellar/tfenv/<version>
echo 'trust-tfenv: yes' > ${TFENV_INSTALL_DIR}/use-gpgv
tfenv install
Petunjuk trust-tfenv
berarti bahwa verifikasi menggunakan salinan kunci Hashicorp OpenPGP yang ditemukan dalam repositori TFENV. Melewati arahan itu berarti bahwa kunci hashicorp harus berada di kunci tepercaya default yang ada. Gunakan file ${TFENV_INSTALL_DIR}/use-gnupg
untuk malah memanggil alat gpg
lengkap dan lihat status web-of-trust; Berhati -hatilah bahwa kurangnya jalur kepercayaan tidak akan menyebabkan kegagalan validasi.
Jika Anda menggunakan file .terraform-Versi, tfenv install
(tidak ada argumen) yang akan menginstal versi yang ditulis di dalamnya.
Harap dicatat bahwa kami tidak melakukan parsing rentang versi semantik tetapi menggunakan versi pertama yang ditemukan sebagai kandidat untuk satu yang diperlukan minimal. Terserah pengguna untuk menjaga definisi tetap masuk akal. Yaitu
// 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
String (default: amd64
)
Tentukan arsitektur. Arsitektur selain AMD64 default dapat ditentukan dengan variabel lingkungan TFENV_ARCH
CATATAN: Perubahan default ke arm64
untuk versi yang memiliki build ARM64 tersedia saat $(uname -m)
cocok dengan aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
String (default: true)
Jika TFENV secara otomatis menginstal Terraform jika versi yang ditentukan secara default atau file .terraform-Versi saat ini tidak diinstal.
TFENV_AUTO_INSTALL=false terraform plan
terraform use <version that is not yet installed>
TFENV_CURL_OUTPUT
Integer (default: 2)
Atur mekanisme yang digunakan untuk menampilkan kemajuan unduhan saat mengunduh versi Terraform dari server jarak jauh.
-#
to Curl-s
ke keriting TFENV_DEBUG
Integer (default: 0)
Atur level debug untuk TFENV.
TFENV_REMOTE
String (default: https://releases.hashicorp.com)
Untuk menginstal dari remote selain default
TFENV_REMOTE=https://example.jfrog.io/artifactory/hashicorp
TFENV_REVERSE_REMOTE
Integer (default: 0)
Saat menggunakan remote khusus, seperti Artifactory, alih -alih server Hashicorp, daftar versi Terraform yang dikembalikan oleh ikal direktori jarak jauh dapat dibalik. Dalam hal ini fungsionalitas latest
tidak akan berfungsi seperti yang diharapkan karena mengharapkan versi akan terdaftar dalam urutan tanggal rilis dari yang terbaru hingga tertua. Jika remote Anda sebaliknya memberikan daftar yang sudah lama, atur TFENV_REVERSE_REMOTE=1
dan fungsionalitas akan dipulihkan.
TFENV_REVERSE_REMOTE=1 tfenv list-remote
TFENV_CONFIG_DIR
Path (default: $TFENV_ROOT
)
Jalur ke direktori di mana ada versi terraform dan file konfigurasi lokal.
TFENV_CONFIG_DIR="$XDG_CONFIG_HOME/tfenv"
TFENV_TERRAFORM_VERSION
String (default: "")
Jika bukan string kosong, variabel ini mengesampingkan versi Terraform, ditentukan dalam file .terraform-versi. Sintaks latest
dan latest:<regex>
juga didukung. tfenv install
dan tfenv use
perintah juga menghormati variabel ini.
misalnya
TFENV_TERRAFORM_VERSION=latest:^0.11. terraform --version
TFENV_NETRC_PATH
String (default: "")
Jika tidak mengosongkan string, variabel ini menentukan file kredensial yang digunakan untuk mengakses lokasi jarak jauh (berguna jika digunakan bersama dengan tfenv_remote).
misalnya
TFENV_NETRC_PATH="$PWD/.netrc.tfenv"
BASHLOG_COLOURS
Integer (default: 1)
Untuk menonaktifkan pewarnaan output konsol, diatur ke 0.
BASHLOG_DATE_FORMAT
String (default: + %f %t)
Format tampilan untuk tanggal sebagaimana diteruskan ke biner date
untuk menghasilkan datestamp yang digunakan sebagai awalan untuk:
FILE
Baris File Log.BASHLOG_EXTRA=1
BASHLOG_EXTRA
Integer (default: 0)
Secara default, output konsol dari TFENV tidak mencetak stempel tanggal atau keparahan log.
Untuk mengaktifkan fungsi ini, membuat output normal setara dengan file log output, diatur ke 1.
BASHLOG_FILE
Integer (default: 0)
Setel ke 1 untuk mengaktifkan logging teks biasa ke file (logging jenis file).
Jalur default untuk file log didefinisikan oleh /tmp /$ (Basename $ 0) .log setiap log yang dapat dieksekusi ke file sendiri.
misalnya
BASHLOG_FILE=1 tfenv use latest
akan masuk ke /tmp/tfenv-use.log
BASHLOG_FILE_PATH
String (default: /tmp /$ (Basename $ {0}). Log)
Untuk menentukan satu file sebagai target untuk semua logging jenis file terlepas dari skrip yang dieksekusi.
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX
String (default: "")
Hati -hati - penyalahgunaan akan menghancurkan semua yang Anda sukai
Variabel ini memungkinkan Anda untuk melewati string yang berisi perintah yang akan dieksekusi menggunakan eval
untuk menghasilkan awalan untuk setiap baris output konsol, dan setiap entri log jenis file.
misalnya
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX='echo "${$$} "'
akan mengawali setiap baris log dengan proses panggilan 'PID.
BASHLOG_JSON
Integer (default: 0)
Setel ke 1 untuk mengaktifkan logging JSON ke file (JSON Type Logging).
Jalur default untuk file log didefinisikan oleh /tmp /$ (Basename $ 0) .log.json Setiap log yang dapat dieksekusi ke file sendiri.
misalnya
BASHLOG_JSON=1 tfenv use latest
akan masuk format json ke /tmp/tfenv-use.log.json
Konten log JSON:
{"timestamp":"<date +%s>","level":"<log-level>","message":"<log-content>"}
BASHLOG_JSON_PATH
String (default: /tmp /$ (Basename $ {0}). Log.json)
Untuk menentukan satu file sebagai target untuk semua logging tipe JSON terlepas dari skrip yang dieksekusi.
BASHLOG_SYSLOG
Integer (default: 0)
Untuk masuk ke syslog menggunakan logger
Binary, atur ini ke 1.
Fungsi dasarnya adalah:
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
String (default: local0)
Fasilitas syslog untuk menentukan saat menggunakan logging tipe syslog.
BASHLOG_SYSLOG_TAG
String (default: $ (Basename $ 0))
Tag syslog untuk menentukan saat menggunakan logging tipe syslog.
Default ke PID proses panggilan.
Ganti versi untuk digunakan
Jika tidak ada parameter yang dilewati, versi yang akan digunakan diselesaikan secara otomatis melalui file .terraform-versi atau variabel lingkungan TFENV_TERRAFORM_VERSION (TFENV_TERRAFORM_Version lebih diutamakan), default ke 'terbaru' jika tidak ada yang ditemukan.
latest
adalah sintaks untuk menggunakan versi terpasang terbaru
latest:<regex>
adalah sintaks untuk menggunakan versi pencocokan versi terpasang terbaru (digunakan oleh grep -e)
min-required
akan beralih ke versi minimal yang diperlukan oleh sumber terraform Anda (lihat di atas tfenv install
)
$ tfenv use
$ tfenv use min-required
$ tfenv use 0.7.0
$ tfenv use latest
$ tfenv use latest:^0.8
CATATAN: tfenv use latest
atau tfenv use latest:<regex>
akan menemukan versi pencocokan terbaru yang sudah diinstal. Jika tidak ada versi pencocokan yang diinstal, dan TFENV_AUTO_INSTALL diatur ke true
(yang merupakan default) versi pencocokan terbaru dalam repositori jarak jauh akan diinstal dan digunakan.
Hapus instalasi versi tertentu dari Terraform latest
adalah sintaks untuk menghapus instalasi versi terbaru latest:<regex>
adalah sintaks untuk menghapus instalan versi pencocokan versi terbaru (digunakan oleh grep -e)
$ tfenv uninstall 0.7.0
$ tfenv uninstall latest
$ tfenv uninstall latest:^0.8
Daftar versi yang diinstal
$ 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
Daftar versi yang dapat diinstal
$ 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
...
Jika Anda meletakkan file .terraform-version
pada root proyek Anda, atau di direktori home Anda, TFENV mendeteksi dan menggunakan versi yang ditulis di dalamnya. Jika versi latest
atau latest:<regex>
, versi pencocokan terbaru yang saat ini diinstal akan dipilih.
Catatan, bahwa variabel lingkungan TFENV_TERRAFORM_Version dapat digunakan untuk mengganti versi, ditentukan oleh file .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