Canvas 1 Layer 1

tfenv로 테라폼 버전 관리하기

들어가며 : 버전관리가 필요한 이유

테라폼Terraform을 사용하다 보면 여러 버전을 동시에 사용하는 경우가 발생합니다. 최근에 만든 프로젝트는 최신 버전이지만 이전에 만든 리소스를 굳이 건드리고 싶지 않다거나 아직 기능을 지원하지 않는 등 이유는 다양합니다. 하지만 테라폼은 자체적으로 버전 관리 기능이 없어 여러 개의 버전을 동시에 사용하기 위해 direnv를 이용해 프로젝트별 테라폼의 경로를 다르게 잡거나 brew로 여러 개를 설치해두고 전환(Switch)하며 사용하기도 합니다.

이 글에서는 tfenv를 사용해 쉽게 테라폼 여러 버전을 사용하는 방법을 소개합니다. tfenv는 루비Ruby 언어의 버전관리 시스템인 rbenv에서 영감을 얻어서 만들었습니다.

tfenv 설치

macOS인 경우 brew 사용해 tfenv를 설치합니다.

$ brew install tfenv

리눅스Linux 계열에서는 Git 소스를 클론(Clone)후 PATH에 추가합니다.

$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv
$ echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile

tfenv 사용

tfenv 사용을 위해 먼저 테라폼 버전을 설치해야 합니다.

# 설치가능한 테라폼 버전 목록 보기
$ tfenv list-remote
0.12.9
0.12.8
0.12.7
0.12.6
...

# 특정 버전 설치
$ tfenv install 0.12.9

# 최신 버전 설치
$ tfenv install latest

# 테라폼 파일 분석후 최소 요구 버전 설치
$ tfenv install min-required

# .terraform-version에 지정된 버전 설치
$ terraform install

설치된 테라폼 버전 목록을 보기위해서는 list 명령어를 사용합니다.

$ tfenv list
* 0.12.9 (set by /usr/local/Cellar/tfenv/1.0.1/version)
  0.11.14
  0.11.13

설치가 완료 되었다면 버전 전환을 할때는 다음 명령어를 사용합니다.

# 특정 버전 사용
$ tfenv use 0.12.9

# 최신 버전 사용
$ tfenv use latest

매번 테라폼 버전을 변경하는것이 번거로운 경우 .terraform-version을 사용합니다. .terraform-version 파일에 버전을 명시하면 해당 폴더는 물론 하위폴더에서 해당 버전으로 사용됩니다.

$ echo 0.11.14 > .terraform-version
Terraform v0.11.14

$ echo latest > .terraform-version
$ terraform --version
Terraform v0.12.9