Terraform 환경 구성
Terraform은 Infrastructure as Code(IaC) 도구이다. 즉 서버, 네트워크, DB 같은 인프라를 코드로 관리한다.
그래서 일반 프로그램과 다르게 다음 3가지 과정이 반복되는 특징이 존재한다.
- 코드 작성
- 테스트
- 실행
따라서 실행 환경은 보통 개발자의 로컬 환경에서 구성한다. 물론 다음 서비스도 존재한다.
- Terraform Cloud
- Terraform Enterprise
하지만 대부분의 프로젝트에서는 테스트 및 디버깅의 용이성과 코드 관리의 편의성 때문에 로컬 환경에서 먼저 개발한다.
Terraform 설치
Terraform은 Go 언어로 작성된 오픈소스 프로그램이기에, 실행 방법이 여러 가지 존재한다.
1. 미리 빌드된 바이너리 다운로드
가장 일반적인 방식이다. 다음 공식 릴리즈 사이트에서 운영체제에 맞는 파일을 다운받는다.
https://developer.hashicorp.com/terraform/install

2. 소스코드 다운로드 후 빌드
git clone terraform
go build
3. 패키지 매니저 사용
MAC
brew install terraform
Ubuntu
apt install terraform
RHEL
yum install terraform
Windows
choco install terraform
Linux / MacOS Path 설정
사용하는 쉘에 따라 다음과 같이 설정해준다.
bash
~/.bashrc # 쉘 확인
export PATH=$PATH:/usr/local/bin # Path 추가
source ~/.bashrc # 적용
terraform # 확인
zsh
~/.zshrc
export PATH=$PATH:/usr/local/bin # Path 추가
source ~/.zshrc # 적용
terraform # 확인

Windows PATH 설정
1. 실행창 열기
Win + R
2. 입력
sysdm.cpl
3. 환경 변수 클릭
4. Path 편집
5. Terraform 폴더 추가
IDE 구성
VS Code를 설치한 뒤, 작업 디렉토리를 먼저 구성하고 [파일] -> [폴더 열기]를 통해 미리 준비한 작업 디렉토리를 연다.
좌측 [Extensions] 아이콘을 클릭해 하시코프에서 릴리즈한 'HashiCorp HCL'을 검색 후 설치한다.

VS Code 터미널 사용
VS Code에서는 별도 커맨드 창을 열지 않고 해당 IDE에서 커맨드를 실행할 수 있는 터미널 환경을 제공하고 있다.
VS Code 내부에서 다음 키를 통해 터미널 실행이 가능하다.
Ctrl + `

CLI 설정 파일
Terraform은 사용자 설정 파일을 지원한다. 해당 설정 파일은 Terraform이 실행될 때 자동으로 읽는 사용자 설정 파일이다.
프로젝트 폴더의 .tf 파일이 “인프라 코드”라면, 이 파일은 Terraform 클라이언트 자체의 동작 방식(환경/정책/캐시/인증)을 고정하는 설정이다. 해당 파일을 통해 다음을 설정할 수 있다.
- 인증
- 플러그인 캐시
- 다운로드 정책
- 네트워크 설정
자세한 설정 값은 다음과 같다.
credentials
credentials "app.terraform.io" {
token = "xxxx"
}
Terraform Cloud/Enterprise 같은 원격 백엔드나 기능을 쓸 때 인증 토큰을 저장하는 용도이다.
해당 설정을 통해 다음이 가능하다.
- terraform login 같은 인증을 매번 프로젝트마다/세션마다 하지 않아도 된다.
- 원격 작업 공간 연동 시 자동 인증된다.
하지만 다음을 주의해야한다.
- 개인 토큰이므로 권한 관리가 중요하다.
- 파일 권한(리눅스면 chmod 600 ~/.terraformrc)을 잠그는 게 안전하다.
credentials_helper
# 커스텀 helper 설정
credentials_helper "pass" {
args = []
}
토큰을 파일에 평문으로 두기 싫을 때 쓰는 방식이다. 운영체제의 키체인/보안 저장소 같은 곳에 자격증명을 맡기는 개념이다.
해당 설정을 통해 다음이 가능하다.
- .terraformrc에 민감정보를 덜 남긴다.
- 보안성이 올라간다.
plugin_cache_dir
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
Terraform은 init 시 provider 플러그인을 다운로드한다.
예를 들어 AWS provider를 받으면 매번 다음과 같은 다운로드 과정이 발생할 수 있다.
- 느림
- 네트워크 의존
- CI/여러 프로젝트에서 중복 다운로드
plugin_cache_dir은 provider를 캐시 디렉터리에 저장해두고 재사용할 수 있도록 한다.
해당 설정을 통해 다음이 가능하다.
- terraform init 속도 크게 개선된다.
- 네트워크 트래픽 감소한다.
- 동일 머신에서 여러 프로젝트가 빨라진다.
실무에서 체감이 제일 큰 옵션이다.
provider_installation
# registry에서 바로 다운로드
provider_installation {
direct {
}
}
# 폐쇄망 환경에서 내부 미러 사용
provider_installation {
filesystem_mirror {
path = "/opt/terraform/providers"
include = ["hashicorp/*"]
}
direct {
exclude = ["hashicorp/*"]
}
}
# 오프라인 환경
provider_installation {
filesystem_mirror {
path = "/terraform/provider-mirror"
}
}
provider를 “어디서/어떻게” 가져올지 정책을 정하는 것이다. 보통 다음과 같이 설정한다.
- 인터넷이 되는 환경: 기본적으로 registry에서 다운로드한다.
- 폐쇄망 환경: 내부 미러(파일 서버/아티팩트)에서만 가져오게 강제한다.
즉 provider_installation은 다운로드 경로/미러링 정책을 코드가 아니라 “클라이언트 정책”으로 강제하는 기능이다.
disable_checkpoint, disable_checkpoint_signature
# Terraform이 외부 서버 체크하는 기능 옵션이다.
disable_checkpoint = true
# 업데이트 메시지 관련 기능 옵션이다.
disable_checkpoint_signature = true
Terraform은 기본적으로 버전/업데이트 확인 같은 네트워크 요청(체크포인트)을 할 수 있다.
보안 정책이 세밀한 조직에서는 이런 외부 통신이 이슈가 될 수 있기 때문이다.
- disable_checkpoint = true
체크포인트 호출을 끄는 용도이다. - disable_checkpoint_signature
경고/식별 관련 메시지 성격을 다루는 설정이다.
정리하면 “불필요한 외부 통신 끄기” 기능이다.
설정 적용 과정
Terraform 실행 흐름에서 보면 위 설정들은 다음 과정에서 영향도가 존재한다.
- terraform init
→ provider 다운로드/캐시/설치 정책에 영향이 간다. - terraform plan/apply
→ Terraform Cloud 인증 등에 영향이 갈 수 있다.
결국 체크포인트/네트워크 동작에 영향이 간다.
Reference
- 김민수, ⌜테라폼으로 시작하는 IaC⌟, 한빛미디어, 2024, 429쪽