Rbenvに触発されたTerraformバージョンマネージャー
現在、TFENVは次のOSをサポートしています
HomeBrew経由でインストールします
brew install tfenv
Archユーザーリポジトリ(AUR)経由でインストール
yay --sync tfenv
人形経由でインストールします
Puppetモジュール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
または、 tfenv/bin/*
スクリプトのシンリンクを$PATH
(EG /usr/local/bin
) OSX/Linux Only!
ln -s ~/.tfenv/bin/* /usr/local/bin
ubuntu/debian touching /usr/local/bin
でsudoアクセスが必要になる場合がありますが、 $PATH
${HOME}/bin
または${HOME}/.local/bin
を作成できます。実行することによって. ${HOME}/.profile
現在のシェルセッションの$PATH
に追加されます。
mkdir -p ~/.local/bin/
. ~/.profile
ln -s ~/.tfenv/bin/* ~/.local/bin
which tfenv
Terraformの特定のバージョンをインストールします。
パラメーターが渡されない場合、使用するバージョンはtfenv_terraform_version環境変数または.terraform-versionファイルを介して自動的に解決されます。デフォルトは「最新」でない場合は「最新」です。
パラメーターが渡された場合、利用可能なオプション:
xyz
semver 2.0.0文字列インストールする正確なバージョンを指定するlatest
、最新バージョンをインストールする構文ですlatest:<regex>
最新バージョンのマッチングRegex(GREP -Eが使用)をインストールする構文です。latest-allowed
Terraformファイルをスキャンして最大限に許可されているバージョンを検出するための構文です。min-required
Terraformファイルをスキャンして最小限のバージョンを検出する構文です。必要_ version 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 Hashに対するダウンロードを検証します。 Keybaseがパスで利用可能な場合、Hashicorpの公開された公開キーを使用して、公開されたハッシュの署名も検証します。
Keybaseが利用できない場合は、PGP署名検証にGNUPGツールを使用することをオプトインできます。
たとえば、 TFENV_INSTALL_DIR
は~/.tfenv
または/usr/local/Cellar/tfenv/<version>
です
echo 'trust-tfenv: yes' > ${TFENV_INSTALL_DIR}/use-gpgv
tfenv install
trust-tfenv
指令は、検証がTFENVリポジトリにあるHashicorp OpenPGPキーのコピーを使用することを意味します。その指令をスキップすると、ハシコルプキーが既存のデフォルトの信頼できるキーにある必要があることを意味します。ファイル${TFENV_INSTALL_DIR}/use-gnupg
使用して、代わりに完全なgpg
ツールを呼び出し、Web-of-strustステータスを確認します。信頼パスの欠如が検証の失敗を引き起こさないことに注意してください。
.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
環境変数で指定できます
注: $(uname -m)
aarch64* | arm64*
に一致するときにARM64ビルドを使用できるバージョンのデフォルトはarm64
に変更されます。 aarch64* | arm64*
TFENV_ARCH=arm64 tfenv install 0.7.9
TFENV_AUTO_INSTALL
文字列(デフォルト:true)
デフォルトで指定されたバージョンまたは.terraform-versionファイルが現在インストールされていない場合、tfenvが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)
ハシコープサーバーの代わりにアーティファクトなどのカスタムリモートを使用する場合、リモートディレクトリのカールによって返されるテラフォームバージョンのリストが反転する場合があります。この場合、 latest
機能は、最新から最古のリリース日の順にバージョンがリストされると予想されるため、期待どおりに機能しません。代わりに、リモコンが昔からのリストを提供している場合、 TFENV_REVERSE_REMOTE=1
を設定し、機能が復元されます。
TFENV_REVERSE_REMOTE=1 tfenv list-remote
TFENV_CONFIG_DIR
パス(デフォルト: $TFENV_ROOT
)
ローカルテラフォームバージョンと構成ファイルが存在するディレクトリへのパス。
TFENV_CONFIG_DIR="$XDG_CONFIG_HOME/tfenv"
TFENV_TERRAFORM_VERSION
文字列(デフォルト: "")
空の文字列ではない場合、この変数は、.terraform-versionファイルで指定されたTerraformバージョンをオーバーライドします。 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
バイナリに渡された日付の表示形式は、次のプレフィックスとして使用されるデータスタンプを生成します。
FILE
タイプログファイル行。BASHLOG_EXTRA=1
の場合、各コンソール出力ラインBASHLOG_EXTRA
整数(デフォルト:0)
デフォルトでは、TFENVからのコンソール出力は、日付スタンプまたはログの重大度を印刷しません。
この機能を有効にするために、通常の出力をファイルログ出力に相当し、1に設定します。
BASHLOG_FILE
整数(デフォルト:0)
1に設定して、平易なテキストロギングをファイル(ファイルタイプロギング)にすることができます。
ログファイルのデフォルトパスは、 /tmp /$(Basename $ 0)で定義されます。各実行可能可能性ログを独自のファイルにログします。
例えば
BASHLOG_FILE=1 tfenv use latest
/tmp/tfenv-use.log
にログに記録します
BASHLOG_FILE_PATH
string(default: /tmp /$(basename $ {0})。log)
実行するスクリプトに関係なく、すべてのファイルタイプログのターゲットとして単一のファイルを指定します。
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX
文字列(デフォルト: "")
注意してください - 誤用はあなたが今までに愛したすべてを破壊します
この変数を使用すると、各コンソール出力ラインのプレフィックスと各ファイルタイプのログエントリのプレフィックスを生成するために、 eval
使用して実行されるコマンドを含む文字列を渡すことができます。
例えば
BASHLOG_I_PROMISE_TO_BE_CAREFUL_CUSTOM_EVAL_PREFIX='echo "${$$} "'
呼び出しプロセスのPIDを使用して、すべてのログ行をプレフィックスします。
BASHLOG_JSON
整数(デフォルト:0)
JSONロギングがファイル(JSONタイプロギング)を有効にするには、1に設定されています。
ログファイルのデフォルトパスは、 /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
string(default: /tmp /$(basename $ {0})。log.json)
実行するスクリプトに関係なく、すべてのJSONタイプロギングのターゲットとして単一のファイルを指定します。
BASHLOG_SYSLOG
整数(デフォルト:0)
logger
Binaryを使用してSyslogにログにログにログを付けるには、これを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_version環境変数(tfenv_terraform_versionが優先される)を介して自動的に解決されます。
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>
$ 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