Terraform Associate — Terraform Modules 개념 정리

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


모듈 기본 개념

  • **모듈(module)**은 여러 .tf 파일을 묶어 재사용 가능한 구성 단위로 만든 것
  • 최상위에서 실행되는 구성이 root module, 그 안에서 호출되는 모듈이 child module
  • Terraform Registry에 공개된 모듈은 published module
개념영어 표현
모듈module
최상위 모듈root module
호출되는 모듈child module
모듈 호출module call (module block)

5a. 모듈 소스 방식 (Explain how Terraform sources modules)

Source 인자

  • module 블록의 source 인자로 모듈 위치를 지정
  • terraform init 시 소스에서 모듈을 다운로드·설치

소스 종류 (Source types)

소스설명
Local path같은 프로젝트 내 로컬 경로 (./modules/vpc)
Terraform Registry공개/사설 레지스트리 (hashicorp/vpc/aws)
GitHub / GitGit 저장소 URL
HTTP URLs압축 파일(archive) 형태
S3 / GCS buckets클라우드 스토리지 버킷
개념영어 표현
모듈 위치 지정source argument
로컬 경로local path
레지스트리 소스Terraform Registry source
모듈 다운로드 시점downloaded on terraform init

5b. 모듈 내 변수 스코프 (Describe variable scope within modules)

변수 스코프 (Scope)

  • 변수와 값은 선언된 모듈 내부에서만 유효 → 모듈은 캡슐화(encapsulation)됨
  • 부모 → 자식: module 블록에서 input variable로 값 전달
  • 자식 → 부모: output value로 값을 밖으로 내보냄
개념영어 표현
값 전달(부모→자식)pass input variables to the module
값 반환(자식→부모)module output values
캡슐화encapsulation
자식 output 참조module..

주의

  • 자식 모듈의 변수·리소스에 부모가 직접 접근할 수 없음 (반드시 output 경유)

5c. 설정에서 모듈 사용 (Use modules in configuration)

모듈 호출

  • module 블록으로 자식 모듈을 호출하고 필요한 변수를 전달
  • 모듈이 내보낸 값은 module.<NAME>.<OUTPUT>으로 참조
  • count / for_each로 모듈을 여러 번 인스턴스화 가능
개념영어 표현
모듈 호출 블록module block
모듈에 값 전달passing arguments (input variables)
모듈 출력 참조module..
모듈 반복count / for_each on modules

5d. 모듈 버전 관리 (Manage module versions)

version 인자

  • 레지스트리 모듈은 version 인자로 버전을 고정·제한 가능
  • 협업 시 모두 동일한 모듈 버전을 사용하도록 보장
  • 버전 제약 연산자는 provider와 동일 (=, >=, ~> 등)
개념영어 표현
모듈 버전 지정version argument
pessimistic 제약~> (allows rightmost increment)
버전 고정 이유consistent / predictable results
로컬 모듈version 지정 불가 (Git/Registry만 가능)

주의

  • version은 Terraform Registry 소스에만 사용 가능
  • Git 소스는 ?ref= (태그/브랜치/커밋)로 버전 지정

요약

주제내용
모듈 구조root module ↔ child module
소스 방식source 인자 (local, Registry, Git, HTTP, S3 등)
다운로드 시점terraform init
변수 스코프캡슐화됨. 부모→자식은 input, 자식→부모는 output
자식 출력 참조module..
모듈 사용module block + 인자 전달, count/for_each 반복
버전 관리version 인자 (Registry만), Git은 ?ref=