본문 바로가기
IaC/Terraform - Experience

[Terraform] Terraform 버전 관리 window tfenv 설정

by ymkim 2025. 4. 19.
 

Backend Type: s3 | Terraform | HashiCorp Developer

Terraform can store and lock state remotely in Amazon S3.

developer.hashicorp.com

사내 Terraform 환경에서는 S3 버킷을 사용해 Terraform 상태(state) 파일을 저장고 있으며, 상태 파일의 동시 수정 문제를 방지하기 위해 DynamoDB Table을 활용파일 잠금(Locking) 처리하고 있다. 하지만 최근 Terraform에서 DynamoDB 없이도 S3 자체만으로 상태 파일 잠금을 지원하는 기능이 도입된 것을 알게 되었다. 하여, 이를 활용하기 위해 기존 Terraform 1.9.5 버전에서 Terraform 1.11.4로 업그레이드를 진행했다. 또한, Windows 환경에서 Terraform 바이너리(.tar.gz)를 직접 다운로드하여 설치할 수 있지만, 다양한 Terraform 버전을 효율적으로 관리하기 위해 이번에는 tfenv를 기반으로 버전 관리를 수행하였다.

01. tfenv?

 

GitHub - tfutils/tfenv: Terraform version manager

Terraform version manager. Contribute to tfutils/tfenv development by creating an account on GitHub.

github.com

tfenv는 여러 버전의 Terraform을 손쉽게 설치하고 관리할 수 있도록 도와주는 버전 관리 도구다. GitHub에 오픈소스로 공개되어 있으며, 저장소를 클론하는 것만으로 간편하게 설치할 수 있다. 이제 Windows 환경을 기준으로 설치 방법을 알아보자.

01-1. Github Repository 클론

git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv

우선 tfenv Repository 프로젝트를 로컬의 ~/.tfenv 경로로 Clone한다.

01-2. 전역 환경 변수(PATH) 추가

# bash: PATH 설정
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile

# zsh: PATH 설정
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.zprofile

# wsl: PATH 설정
echo 'export PATH=$PATH:$HOME/.tfenv/bin' >> ~/.bashrc

필자의 경우 WSL 환경을 사용하기 때문에, 세 번째 명령어를 사용한다. 이 명령어는 tfenv를 전역 명령어처럼 사용하기 위해 PATH 환경 변수에 실행 경로를 추가하는 역할을 한다. 이후 ~/.bashrc 파일의 변경 내용을 적용하기 위해 source 명령어를 사용해 초기화한다.

source 명령어?
보통 .bashrc 같은 파일은 터미널을 껐다 켜야 적용이 되는데, source 명령어를 사용하면 꺼졌다 켜진 거처럼 즉시 적용된다. 즉, shell 설정 파일을 다시 불러와서, 바로 적용해야 하는 경우 사용한다.

01-3. tfenv 설치 확인

tfenv --version

위에서 설치를 진행하였기 때문에, 이제 tfenv 버전을 확인한다.

01-4. tfenv 기반 Terraform 설치

tfenv install 1.11.4

위 명령어를 통해 특정 Terraform 버전을 설치한다.

01-5. Terraform 버전 지정

tfenv use 1.11.4

사용하고자 하는 Terraform 버전을 지정한다. 위와 같이 지정하면 실제 사용하는 버전은 v1.114이 된다.

01-6. Terraform 버전 확인

terraform -v

마지막으로 설치된 테라폼 버전을 확인한다.

Mac 사용자의 경우에는 brew install tfenv 명령어만 사용하면 간편하게 사용 가능하기에 참고 하면 된다.

01-7. tfenv 명령어(Option)

$ tfenv

Commands:
   install       Install a specific version of Terraform
   use           Switch a version to use
   uninstall     Uninstall a specific version of Terraform
   list          List all installed versions
   list-remote   List all installable versions
   version-name  Print current version
   init          Update environment to use tfenv correctly.
   pin           Write the current active version to ./.terraform-version

추가적인 내용은 위 명령어를 사용하여 처리하면 된다. 이상으로 포스팅을 마무리한다.

99. 참고 자료

 

Backend Type: s3 | Terraform | HashiCorp Developer

Terraform can store and lock state remotely in Amazon S3.

developer.hashicorp.com

 

GitHub - tfutils/tfenv: Terraform version manager

Terraform version manager. Contribute to tfutils/tfenv development by creating an account on GitHub.

github.com