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 / Git | Git 저장소 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= |