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