RBENV에서 영감을 얻은 TerraForm 버전 관리자
현재 TFENV는 다음 OS를 지원합니다
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
또는 tfenv/bin/*
스크립트에 대한 Symlinks를 이미 $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
만들 수 있으며 다음 로그인에서는 세션 $PATH
또는 SESSION에 추가됩니다. 달리면 . ${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 문서를 참조하십시오. 또한 최소보고 및 최신 허용 섹션도 참조하십시오.
$ 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
도구를 호출하고 Theb-of-Trust 상태를 참조하십시오. 신뢰 경로 부족으로 인해 검증 실패가 발생하지 않을 것입니다.
.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)
가 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)
Hashicorp 서버 대신 Artifactory와 같은 사용자 정의 리모컨을 사용하는 경우 원격 디렉토리의 컬에 의해 리턴 된 Terraform 버전 목록이 반전 될 수 있습니다. 이 경우 latest
기능은 예상대로 작동하지 않습니다. 버전이 최신부터 가장 오래된 것부터 릴리스 날짜로 나열 될 것으로 예상되기 때문에 예상대로 작동하지 않습니다. 리모컨이 대신 Oldes-First 목록을 제공하는 경우 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-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
문자열 (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
문자열 (default : /tmp /$ (Basename $ {0}). log.json)
실행 스크립트에 관계없이 모든 JSON 유형 로깅의 대상으로 단일 파일을 지정합니다.
BASHLOG_SYSLOG
정수 (기본값 : 0)
logger
바이너리를 사용하여 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
(기본값)로 설정된 경우 원격 저장소의 최신 매칭 버전이 설치되어 사용됩니다.
Unin Insintall UniStall 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