Terraform Registry
Terraform Registry는 공식 Terraform의 모듈(module) 저장소로, 전 세계 사용자들이 만든 Terraform 모듈들을 모아둔 웹사이트/서비스이다
📦 "모듈(Module)"이란?
Terraform에서 자주 쓰는 인프라 구성(코드)을 재사용 가능하게 만든 코드 묶음
(똑같은 일반 terraform 코드를 하나의 모듈로써 저장)
📁 Terraform의 모듈 구조 예시
my-module/
├── main.tf # 리소스 정의
├── variables.tf # 변수 정의
├── outputs.tf # 출력 정의
├── README.md # 설명 파일
└── examples/
└── basic/
└── main.tf # 모듈 사용 예제
구성 요소 (파일) | 설명 |
main.tf | 리소스 정의 파일 (예: aws_instance, aws_s3_bucket 등) |
variables.tf | 모듈에서 사용할 입력 변수 정의 |
outputs.tf | 모듈이 반환할 출력값 정의 |
providers.tf | 사용하는 provider (예: AWS, Azure 등) 설정 (보통 루트 모듈에서만 정의) |
locals.tf | 로컬 변수 정의 |
기타 .tf 파일들 | 로직을 더 잘 나누기 위해 구성 파일을 분할할 수도 있음 |
README.md | 모듈 설명 및 사용법 문서 |
examples/ 디렉토리 | 모듈 사용 예제 |
modules/ 디렉토리 | 하위 모듈을 포함할 수 있음 |
1. Public Terraform Module Registry
공개 레지스트리
- 누구나 접근 가능,전 세계 모든 Terraform 사용자와 모듈을 공유할 수 있음
- 일반적으로 공개적인 오픈소스 모듈 배포용
2. Private Module Registry in Terraform Cloud / Enterprise
비공개 레지스트리
- 특정 조직의 사용자들만 접근 가능
- 보안, 접근 제어, 모듈 관리에 적합
- 기업용으로 적합한 기능 제공: 버전 제어, 팀 기반 권한, 승인된 모듈만 사용하도록 제한 등
Terraform Registry에서 가져온 모듈을 사용할 때, 예상치 못한 변화나 원하지 않는 변경을 피하기 위해 version을 명시적으로 설정하는것을 권장한다.
version을 지정안하면 default로 가장 최신 버전(latest version)을 가져온다.
module "consul" {
source = "hashicorp/consul/aws" # 공개 모듈 소스 위치
version = "0.0.5" # 버전 명시
}
🤔 문제 1
Public Terraform Module Registry는 게시된 모듈에 대해 자동으로 어떤 정보를 노출(공개)합니까?
- 필수 입력 변수들 (Required input variables)
- 선택적 입력 변수들과 기본값 (Optional inputs variables and default values)
- 출력 값들 (Outputs)
- 위의 모든 것 (All of the above)
- 아무것도 노출하지 않음 (None of the above)
정답
정답 4
🤔 문제 2
Public Terraform Module Registry에 저장된 모듈을 참조하기 위해 아래와 같은 module 블록을 사용할 때:
module "consul" {
source = "hashicorp/consul/aws"
}
버전 1.0.0을 지정하려면 어떻게 해야 하나요?
A. 공개 Terraform Module Registry에 저장된 모듈은 버전 지정을 지원하지 않습니다.
B. 소스 경로에 ?ref=v1.0.0 인수를 추가합니다.
C. module 블록에 version = "1.0.0" 속성을 추가합니다.
D. 아무것도 할 필요 없습니다 — 공개 Module Registry에 있는 모듈은 항상 기본적으로 1.0.0 버전을 사용합니다.
정답
정답. C
'Terraform' 카테고리의 다른 글
[Terraform] String Function란? 쉽게 정리 (문자열 처리 함수) (0) | 2025.06.19 |
---|---|
[Terraform] output 이란? 쉽게 정리 (terraform output 명령어) (0) | 2025.06.18 |
[Terraform] refresh 명령어란? 쉽게 정리 (수동으로 인프라 변경 했을 경우, terraform import 와 차이점) (0) | 2025.06.17 |
IaC(infrastructure as code) 핵심 원칙 쉽게 정리 (0) | 2025.06.16 |
[Terraform] terraform state 명령어란? 아주 쉽게 정리 (state list, show, rm) (0) | 2025.06.16 |