Terraform CLI 환경 변수 레퍼런스
Terraform CLI 환경 변수 레퍼런스 (Terraform CLI environment variables reference)
이 주제는 Terraform CLI와 함께 사용할 수 있는 환경 변수에 대한 레퍼런스 정보를 담고 있어요.
출처: 문서
본문
소개 (Introduction)
Terraform은 다양한 동작을 사용자 지정하기 위해 여러 환경 변수를 참조해요. Terraform을 사용할 때 이 환경 변수들 중 어느 것도 필수는 아니지만, Terraform의 기본 동작 중 일부를 바꾸거나 디버깅을 위해 출력 상세도를 높이는 데 사용할 수 있어요.
TF_LOG
stderr에 상세 로그를 표시하도록 활성화하며, 디버깅에 유용해요. 예를 들어:
export TF_LOG=trace
비활성화하려면 설정을 해제하거나 off로 설정해요. 예를 들어:
export TF_LOG=off
Terraform 디버깅에 대한 자세한 내용은 디버깅 섹션을 참고하세요.
TF_LOG_PATH
로그가 출력을 저장할 위치를 지정해요. TF_LOG_PATH가 설정되어 있어도 로깅이 활성화되려면 TF_LOG도 설정되어야 해요. 예를 들어 로그를 항상 현재 Terraform 실행 디렉터리에 쓰려면:
export TF_LOG_PATH=./terraform.log
디버깅에 대한 자세한 내용은 디버깅 섹션을 참고하세요.
TF_INPUT
"false" 또는 "0"으로 설정하면 terraform 명령이 -input=false 플래그가 지정된 것처럼 동작해요. 값이 지정되지 않은 변수에 대한 프롬프트를 비활성화하려 할 때 사용해요. 예를 들어:
export TF_INPUT=0
TF_VAR_name
환경 변수로 변수를 설정할 수 있어요. 환경 변수는 TF_VAR_name 형식이어야 하며, 값은 마지막으로 확인돼요. 예를 들어:
export TF_VAR_region=us-west-1
export TF_VAR_ami=ami-049d8641
export TF_VAR_alist='[1,2,3]'
export TF_VAR_amap='{ foo = "bar", baz = "qux" }'
TF_VAR_name을 상황에 맞게 사용하는 방법은 환경 변수를 참고하세요.
TF_CLI_ARGS 및 TF_CLI_ARGS_name
TF_CLI_ARGS의 값은 명령줄에 추가 인자를 지정해요. 이는 CI 환경에서 자동화를 더 쉽게 해주고, 당신 시스템에서 Terraform의 기본 동작을 수정할 수 있게 해줘요.
이 인자들은 하위 명령(예: plan) 뒤에, 그리고 명령줄에 직접 지정된 어떤 플래그 앞에 삽입돼요. 이 동작은 명령줄의 플래그가 환경 변수보다 우선하도록 보장해요.
예를 들어 TF_CLI_ARGS="-input=false" terraform apply -force 명령은 terraform apply -input=false -force를 직접 입력한 것과 동일해요.
TF_CLI_ARGS 플래그는 모든 Terraform 명령에 영향을 줘요. TF_CLI_ARGS_name 형태로 명명된 명령을 지정하면 그 명령에만 영향을 줘요. 예를 들어 plan만 절대 refresh하지 않도록 하려면 TF_CLI_ARGS_plan="-refresh=false"로 설정할 수 있어요.
플래그의 값은 셸에 직접 입력한 것처럼 파싱돼요. 문자열을 담기 위해 큰따옴표와 작은따옴표가 허용되며, 그 외에는 인자가 공백으로 구분돼요.
TF_DATA_DIR
TF_DATA_DIR은 Terraform이 현재 백엔드 구성 같은 작업 디렉터리별 데이터를 보관하는 위치를 변경해요.
기본적으로 이 데이터는 현재 디렉터리의 .terraform 하위 디렉터리에 기록되지만, TF_DATA_DIR에 주어진 경로가 비어 있지 않으면 그 경로가 대신 사용돼요.
대부분의 경우 이 변수를 설정할 필요는 없지만, 예를 들어 작업 디렉터리를 쓸 수 없을 때 설정하는 것이 유용할 수 있어요.
데이터 디렉터리는 한 명령에서 다음 명령으로 유지해야 하는 데이터를 보관하는 데 사용되므로, (terraform init로 시작하는) 모든 Terraform 워크플로우 명령에서 이 변수가 일관되게 설정되는 것이 중요해요. 그렇지 않으면 Terraform이 프로바이더, 모듈, 기타 아티팩트를 찾지 못할 수 있어요.
TF_WORKSPACE
다중 환경 배포에서 워크스페이스를 선택하기 위해 terraform workspace select your_workspace를 실행하는 대신 이 환경 변수를 사용할 수 있어요. TF_WORKSPACE를 사용하면 워크스페이스 선택을 허용하고 덮어쓸 수 있어요.
예를 들어:
export TF_WORKSPACE=your_workspace
이 환경 변수는 비대화형 사용에만 권장해요. 로컬 셸 환경에서는 변수가 설정되어 있는 것을 잊고 잘못된 상태에 변경을 적용하기 쉽기 때문이에요.
워크스페이스에 대한 자세한 내용은 워크스페이스 사용 섹션을 참고하세요.
TF_IN_AUTOMATION
TF_IN_AUTOMATION이 비어 있지 않은 값으로 설정되면, Terraform은 다음에 실행할 특정 명령을 제안하지 않도록 출력을 조정해요. 이는 사용자가 Terraform 명령을 직접 실행하지 않는 워크플로우, 예를 들어 CI 시스템이나 기타 래핑 애플리케이션에서 출력을 더 일관되고 혼란스럽지 않게 만들 수 있어요.
이것은 Terraform의 사람이 읽을 수 있는 출력에 대한 순수하게 시각적인 변경이며, 정확한 출력 차이는 부(minor) Terraform 버전 사이에서 바뀔 수 있어요.
자세한 내용은 자동화에서 Terraform 실행을 참고하세요.
TF_REGISTRY_DISCOVERY_RETRY
TF_REGISTRY_DISCOVERY_RETRY를 설정하면 원격 레지스트리 클라이언트가 클라이언트 연결 오류 또는 재시도해도 안전한 500번대 응답에 대해 시도할 최대 요청 재시도 횟수를 구성해요.
TF_REGISTRY_CLIENT_TIMEOUT
원격 레지스트리에 대한 요청의 기본 클라이언트 타임아웃은 10초예요. TF_REGISTRY_CLIENT_TIMEOUT은 예외적인 상황에서 구성하고 늘릴 수 있어요.
export TF_REGISTRY_CLIENT_TIMEOUT=15
TF_STATE_PERSIST_INTERVAL
apply 작업 중 Terraform이 원격 백엔드에 상태를 유지(persist)하려고 시도하는 간격(초)이에요. 모든 원격 백엔드의 기본 최소 간격은 20초예요. 백엔드는 기본 최솟값을 덮어쓸 수 있어요. TF_STATE_PERSIST_INTERVAL의 값이 원격 백엔드가 지정한 기본 간격보다 낮으면 기본 간격이 사용돼요.
export TF_STATE_PERSIST_INTERVAL=100
TF_CLI_CONFIG_FILE
Terraform CLI 구성 파일의 위치예요.
export TF_CLI_CONFIG_FILE="$HOME/.terraformrc-custom"
TERRAFORM_CONFIG는 TF_CLI_CONFIG_FILE 변수의 deprecated 별칭이에요. deprecated된 TERRAFORM_CONFIG 변수 대신 TF_CLI_CONFIG_FILE을 사용할 것을 권장해요.
TF_PLUGIN_CACHE_DIR
TF_PLUGIN_CACHE_DIR 환경 변수는 CLI 구성의 plugin_cache_dir 설정을 설정하는 대체 방법이에요.
또한 TF_PLUGIN_CACHE_MAY_BREAK_DEPENDENCY_LOCK_FILE을 사용해 전환용 호환 설정 plugin_cache_may_break_dependency_lock_file을 활성화할 수 있어요.
HCP Terraform CLI 통합 (HCP Terraform CLI Integration)
HCP Terraform과의 CLI 통합을 사용하면 명령줄에서 HCP Terraform과 Terraform Enterprise를 사용할 수 있어요. 이 통합은 Terraform 구성에 cloud 블록을 포함해야 해요. 그 인자는 구성 파일에 직접 정의하거나 환경 변수로 제공할 수 있는데, 환경 변수는 지속적 통합(CI) 같은 비대화형 워크플로우에 유용할 수 있어요.
cloud 블록 환경 변수의 전체 목록은 HCP Terraform 설정을 참고하세요.
더 알아보기 (Learn more)
- Terraform CLI 구성 파일 — CLI 구성 전반
- 디버깅 — 로그 활용
- HCP Terraform 설정 —
cloud블록 환경 변수