
배경 상황
지금 회사에서는 사내 인프라를 테라폼으로 관리하고 있고, 계정별/리소스별로 디렉터리를 나눠서 사용하고 테라폼 버전이나 프로바이더 버전을 디렉터리별로 따로 관리하고 있다.
최근 테라폼 1.10 버전부터 DynamoDB를 별도로 가져가지 않고 S3만으로도 lockfile 관리가 가능하다는 소식이 들려서 테라폼 버전들을 디렉터리별로 순차적으로 업그레이드 하고있다. 그런데 tf 파일에 정의된 버전과 terraform cli의 버전이 다르면 에러가 떠서 어떻게 해야하나 찾아보니 tfenv라는 도구가 있었다.
tfenv 사용법
MacOS에서는 간단하게 brew로 설치할 수 있다.
brew install tfenv
tfenv로 설치할 수 있는 버전을 확인하려면 다음 명령어를 실행하면 된다.
tfenv list-remote
원하는 버전을 찾았으면 다음 명령어로 특정 테라폼 버전을 설치할 수 있다. 나는 현재 가장 최신 버전인 1.11.2를 설치했다.
tfenv install 1.11.2
설치된 테라폼 버전 목록을 확인하려면 다음 명령어를 실행하면 된다. 별표시가 붙은 버전이 현재 사용중인 버전이다. terraform version 명령어를 실행해 확인했을 때에도 버전이 1.11.2로 변경된 것을 확인할 수 있다. (+tfenv use 명령어를 실행할 때 .terraform-version 혹은 TFENV_TERRAFORM_VERSION으로 덮어쓰지 않는 한 이 버전을 사용한다라고 적혀있는데, 반대로 이 두 가지를 구성해주면 현재 사용버전을 변경하는 명령어를 실행하지 않고도 여러 버전을 활용할 수 있다)
$ tfenv list
* 1.11.2 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version)
1.8.1
$ tfenv use 1.11.2
Switching default version to v1.11.2
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.11.2
$ terraform version
Terraform v1.11.2
on darwin_arm64
+ provider registry.terraform.io/hashicorp/aws v5.91.0
이제 1.11.2 버전으로 테라폼 버전을 업그레이드 하려면 tf파일의 테라폼 블록에서 required_version을 1.11.2로 변경하고, terraform init -reconfigure로 초기화하고 원하는 리소스를 정의해서 사용하면 된다. 나는 아직까지 버전별 syntax 차이가 없는 모듈만 쓰고 있어서 괜찮은데 syntax가 변경된 모듈의 경우에는 코드를 수정해야할 수도 있으니 잘 검증하고 버전을 올리도록 하자.
terraform {
required_version = "= 1.11.2" # Terraform Version
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 5.83"
}
}
backend "s3" {
bucket = "xx-tfstate"
key = "xx.tfstate"
region = "ap-northeast-2"
use_lockfile = true
encrypt = true
}
}
다른 디렉토리에서 다른 버전을 사용할 때에는 다음 명령어를 사용해서 버전 전환을 한 뒤 사용하면 된다. 참고로 설치된 버전 중 가장 최신 버전을 선택하려면 특정 버전대신 latest를 넣어주면 된다.
$ tfenv use 1.8.1
'DevOps' 카테고리의 다른 글
[Kubernetes]kubectl 및 유용한 유틸리티 설치(krew, ctx, neat) (1) | 2025.03.30 |
---|---|
[RSS]SaaS 서비스 장애 상황 및 AWS 서비스 신규소식 Slack으로 받아보기 (0) | 2025.03.29 |
[MacOS]SSH config로 간편하게 EC2에 SSH 연결하기 (0) | 2025.03.20 |
[AWS]Bedrock Inference Profile(추론 프로필)로 비용 분리해서 집계하기 (0) | 2025.03.19 |
[AWS]Identity Center(SSO) SCIM 토큰 갱신 방법(Google Workspace) (0) | 2025.03.18 |