Terraform Associate — Terraform Fundamentals 개념 정리

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


2a. Provider 설치 및 버전 관리 (Install and version Terraform providers)

Provider 설치

  • provider는 terraform init 실행 시 자동으로 다운로드·설치됨
  • 설치된 provider는 작업 디렉토리의 .terraform 폴더에 저장됨
  • 어떤 provider가 필요한지는 terraform 블록 안 required_providers에 선언
개념영어 표현
provider 다운로드·초기화terraform init
필요한 provider 선언 블록required_providers
provider 출처 경로source (예: hashicorp/aws)
provider 설치 위치.terraform directory

버전 제약 (Version Constraints)

  • version 인자로 provider 버전을 고정하거나 범위를 지정
  • 협업 시 팀원 모두 동일한 provider 버전을 쓰게 함
연산자의미
= 1.0.0정확히 해당 버전만
!= 1.0.0해당 버전 제외
>=, <=, >, <이상/이하/초과/미만
~> 1.2 (pessimistic)1.2 이상 ~ 2.0 미만 (마지막 자리만 올림 허용)

의존성 잠금 파일 (Dependency Lock File)

  • .terraform.lock.hcl 파일이 provider 버전을 고정(lock)
  • terraform init 시 자동 생성, 버전 관리(Git)에 커밋 권장
  • 버전을 올리려면 terraform init -upgrade
개념영어 표현
의존성 잠금 파일dependency lock file (.terraform.lock.hcl)
provider 버전 업그레이드terraform init -upgrade

2b. Provider 사용 방식 (How Terraform uses providers)

Provider의 역할

  • provider는 **플러그인(plugin)**으로, Terraform과 대상 플랫폼 API를 연결
  • 각 provider가 관리 가능한 리소스 타입(resource)과 데이터 소스(data source)를 정의
  • AWS, Azure, GCP, Kubernetes 등 플랫폼마다 전용 provider 존재
개념영어 표현
플러그인plugin
API 연결 담당communicates with the platform API
provider가 제공하는 자원resources & data sources

Provider 설정 (Configuration)

  • provider 블록으로 region, 인증 정보 등 설정
  • 리소스는 어떤 provider를 쓸지 자동으로 연결됨 (리소스 이름 접두사로 판단, 예: aws_instance)
개념영어 표현
provider 설정 블록provider block
지역/인증 등 설정configuration arguments (region, credentials)

2c. 다중 Provider 설정 작성 (Multiple providers)

여러 Provider 사용

  • 하나의 구성에서 여러 provider를 동시에 선언·사용 가능
  • required_providers에 필요한 provider들을 모두 나열

Alias (별칭)

  • 같은 provider를 서로 다른 설정으로 여러 번 쓰려면 alias 사용
  • 예: 같은 AWS provider를 여러 region에 대해 각각 설정
  • 리소스에서 provider = aws.west 형태로 어떤 provider 설정을 쓸지 지정
개념영어 표현
provider 별칭alias
기본 providerdefault provider (no alias)
리소스에서 provider 지정provider = .
여러 region/계정 관리multiple provider configurations

2d. State 사용 및 관리 방식 (How Terraform uses and manages state)

State란

  • Terraform이 관리하는 실제 인프라와 구성 파일(config)을 매핑한 기록
  • 기본 파일명: terraform.tfstate (JSON 형식)
  • state를 통해 현재 상태(current state)와 원하는 상태(desired state)를 비교
개념영어 표현
상태 파일state file (terraform.tfstate)
실제 인프라와 구성 매핑maps real-world resources to configuration
현재 상태 vs 원하는 상태current state vs desired state

State의 필요성

  • 리소스 메타데이터 추적 (매핑, 의존성)
  • plan/apply 시 실제 인프라와 비교해 변경 사항 계산
  • 성능 향상 (매번 전체 API 조회 대신 state 참조)
개념영어 표현
리소스 메타데이터 추적track metadata / resource mapping
변경 사항 계산determine changes to apply

로컬 vs 원격 State (Local vs Remote State)

  • 기본은 로컬에 terraform.tfstate 저장
  • 협업 시에는 remote backend(S3, Terraform Cloud 등)에 state 저장
  • 원격 state는 팀 공유 + 보안 + 잠금 기능 제공
개념영어 표현
원격 저장소 설정backend
원격 상태remote state
동시 수정 방지state locking
민감 정보 포함 주의state may contain sensitive data

요약

주제내용
Provider 설치terraform init으로 다운로드, .terraform에 설치
Provider 선언required_providers (source + version)
버전 고정.terraform.lock.hcl (lock file), ~>(pessimistic) 자주 씀
Provider 역할플랫폼 API와 통신하는 plugin
다중 Provideralias로 같은 provider 여러 설정, provider = aws.west로 지정
State 파일terraform.tfstate (JSON), 실제 인프라 ↔ 구성 매핑
State 역할current vs desired 비교, 메타데이터 추적, 성능
협업 Stateremote backend + state locking + 민감정보 주의