Terraform(테라폼) 여러 버전 동시에 사용하기

Terraform을 여러 프로젝트에서 사용하다보면 서로 다른 버전을 요구하는 경우가 있습니다. 버전에 따라서 다르게 동작할 가능성도 있어서 모든 프로젝트의 Terraform 버전을 최신버전으로 유지하는것도 어렵습니다.
Terraform에서 프로젝트마다 다른 버전을 사용하는 2가지 방법을 소개합니다.
첫번째 방법 : direnv 이용
direnv는 폴더마다 환경변수를 설정하는데 주로 사용하는 툴입니다. 이러한 특징을 이용하면 폴더마다 PATH를 다른곳을 바라보게 변경하여 폴더마다 다른버전의 Terraform을 사용할수 있습니다.
direnv 소개 및 기본 사용법은 direnv를 사용한 디렉토리(프로젝트) 별 개발환경 구축: 루비, 파이썬, 노드 개발 환경 구축 | 44bits.io를 참고하시기 바랍니다.
- Terraform 버전의 실행파일을 다운로드 받습니다.
- 현재 프로젝트 폴더 아래
.direnv/terraform/bin
폴더를 생성하고 1번에서 다운로드 받은 파일을 복사합니다. .envrc
파일에 다음 내용을 추가합니다.
load_prefix $(direnv_layout_dir)/terraform
direnv allow
명령어를 실행하여 환경변수를 새로 로딩합니다.
이제 which terraform
명령어를 실행하면 전역으로 설치된 Terraform 이 아닌 현재 폴더에 복사된 Terraform 버전의 실행파일을 바라보고 있음을 알수 있습니다.
두번째 방법 : brew switch 이용
이 방법은 Mac에서만 사용가능 합니다.
brew install terraform
명령어를 이용하면 항상 최신버전의 terraform이 설치됩니다.
현재 설치된 버전이 0.11.8 이고 구버전이 0.11.7 인경우 두 버전을 동시에 사용하는 방법입니다.
/usr/local/Cellar/terraform
폴더로 이동- 새로 추가하려는 버전의 이름으로 폴더 생성(ex 현재 최신버전은 0.11.8 이고 설치하고 싶은 구버전은 0.11.7인 경우
0.11.7
이름으로 폴더 생성) - 생성한 폴더 아래
bin
폴더를 생성하고 해당 버전의 Terraform 실행파일을 홈페이지에서 다운로드후 복사
이제 brew switch terraform 0.11.7
명령어를 실행하면 0.11.7 버전으로 변경되고 brew switch terraform 0.11.8
명령어를 실행하면 0.11.8 버전으로 변경됩니다.
정리
두가지 방법 각자의 장단점이 있는데요. 저는 현재 두번째 방법을 사용하고 있습니다.
첫번째 방법의 경우 .direnv
폴더 아래 Terraform 실행파일과 .envrc
파일 모두 버전관리에 포함시킨다면 다른 컴퓨터에서도 바로 사용할 수 있는 장점이 있습니다. 다만 프로젝트에서 이런방식으로 사용할것을 서로 약속해야하고 버전 업그레이드할때 마다 실행파일을 복사해야 합니다.
두번째 방법의 경우 일반적으로 많이 사용하는 brew 를 이용해서 편하지만 여러개의 Terraform 프로젝트가 있다면 그때마다 switch 를 수동으로 입력해야 하고 Mac 에서만 가능하다는것이 단점입니다.
각각 장단점이 있는데 각자 상황에 맞는 방법을 선택하면 되겠습니다.
게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^