Terraform Associate — Terraform State Management 개념 정리

개념(한글) + 시험용 영어 표현 매칭 대응 objective: Objective 6 (Terraform State Management)


State 기본 개념

  • State는 Terraform이 관리하는 실제 인프라와 구성 파일을 매핑한 기록
  • 기본 파일명 terraform.tfstate (JSON), 어디에 저장할지는 backend가 결정
  • state에는 민감 정보가 포함될 수 있어 보안·잠금 관리가 중요
개념영어 표현
상태 파일state file (terraform.tfstate)
state 저장 위치 결정backend
실제 인프라 ↔ 구성 매핑maps real resources to configuration

6a. 로컬 백엔드 (Describe the local backend)

Local Backend

  • 기본(default) 백엔드로, 별도 설정이 없으면 자동 사용
  • state를 작업 디렉토리 내 terraform.tfstate 파일로 로컬에 저장
  • 혼자 작업할 때는 편하지만, 팀 협업엔 부적합 (공유·잠금 어려움)
개념영어 표현
기본 백엔드local backend (default)
로컬 파일 저장stores state on local disk
협업 한계not suitable for team collaboration

6b. State 잠금 (Describe state locking)

State Locking

  • 여러 사람이 동시에 state를 수정하면 손상될 수 있음 → 이를 막는 장치
  • apply 등 state를 쓰는 작업 시 자동으로 잠금(lock), 끝나면 해제
  • 로컬 백엔드도 잠금을 지원, 원격 백엔드는 백엔드별로 잠금 메커니즘 제공 (예: S3 + DynamoDB)
  • 문제 상황에서 강제 해제: terraform force-unlock
개념영어 표현
상태 잠금state locking
동시 수정 방지prevents concurrent state operations
자동 잠금·해제automatically locks during operations
강제 해제terraform force-unlock
S3 백엔드 잠금DynamoDB (lock table)

6c. backend 블록으로 원격 state 구성 (Configure remote state)

Remote Backend

  • state를 원격 저장소에 두어 팀 공유·보안·잠금을 확보
  • terraform 블록 안 backend 블록으로 설정
  • 예: S3, Terraform Cloud/Enterprise, Azure Blob, GCS, Consul 등
  • 백엔드 설정을 바꾸면 terraform init 시 state 마이그레이션 여부를 물음
개념영어 표현
원격 백엔드remote backend
백엔드 설정 블록backend block
팀 공유·보안shared state, security, locking
초기화 시 마이그레이션state migration on terraform init

Remote State의 장점

  • 여러 팀원이 동일한 state 공유
  • state 잠금으로 충돌 방지
  • 민감한 state를 로컬에 두지 않아 보안 향상

6d. 리소스 드리프트 및 state 관리 (Manage resource drift and state)

Drift (드리프트)

  • Terraform 밖에서 인프라가 변경되어 state와 실제가 어긋난 상태
  • terraform plan / terraform apply -refresh-only로 실제 상태를 감지·반영
개념영어 표현
드리프트(configuration) drift
실제 상태 갱신refresh (terraform apply -refresh-only)
드리프트 감지detect drift via plan

State 조작 명령 (State manipulation)

명령역할
terraform state liststate 내 리소스 목록 조회
terraform state show특정 리소스 상세 조회
terraform state mvstate 내 리소스 이름/위치 이동
terraform state rmstate에서 리소스 제거 (실제 인프라는 유지)
terraform import기존 인프라를 state로 가져오기
terraform taint / -replace리소스를 재생성 대상으로 표시
개념영어 표현
state 목록terraform state list
state에서 제거(인프라 유지)terraform state rm
기존 자원 가져오기terraform import
강제 재생성terraform apply -replace=

요약

주제내용
local backend기본 백엔드, terraform.tfstate 로컬 저장, 협업 부적합
state locking동시 수정 방지, 자동 잠금/해제, 강제 해제 force-unlock
remote backendbackend 블록으로 S3·Terraform Cloud 등에 저장 → 공유·보안·잠금
S3 잠금DynamoDB lock table
drift외부 변경으로 어긋남 → plan / -refresh-only로 감지
state 명령list / show / mv / rm / import / -replace