모듈 게시
모듈 게시 (Publishing Modules)
재사용 가능한 Terraform 모듈을 Terraform Registry에 게시하는 방법을 설명해 드릴게요. 명명 규칙과 버전 관리, 게시 절차를 다뤄요.
출처: 문서
본문
모듈을 Terraform Registry에 게시하면 조직 안팎에서 이를 재사용할 수 있어요. Registry는 모듈의 버전을 관리하고 문서를 자동 생성해 줘요.
준비 (Prerequisites)
- 모듈이 표준 모듈 구조(
main.tf,variables.tf,outputs.tf,README.md포함)를 따르는지 확인해요. - 모듈 저장소에
LICENSE파일을 포함해요. - 모듈 코드가 유효하고 테스트되었는지 확인해요.
명명 규칙 (Naming conventions)
저장소 이름은 <terraform-<PROVIDER>-<NAME> 형식의 세 부분으로 된 이름이어야 해요. 예:
terraform-aws-vpcterraform-google-networkterraform-aws-ec2-instance
여기서 <PROVIDER>는 모듈이 사용하는 주요 프로바이더(aws, google, azurerm 등)이고 <NAME>은 모듈의 기능을 나타내요.
저장소 구조 (Repository structure)
저장소 루트에 모듈 코드가 있어야 하며, .gitignore에 terraform.tfstate 등을 포함해요. Registry는 형성된 구조에 따라 문서를 자동으로 생성해요.
버전 관리 (Versioning)
모듈 버전은 Git 태그로 관리돼요. 태그는 vMAJOR.MINOR.PATCH(예: v1.0.0) 형식을 권장해요. 새 태그를 푸시하면 Registry가 새 버전의 모듈을 수집해요. 의미론적 버전 관리(SemVer)를 따라 호환성 원칙을 지켜요.
게시 절차 (Publishing to the registry)
- 모듈 저장소를 게시 가능한 Git 호스트(GitHub 등)에 호스팅해요.
- Registry에 모듈을 등록하려면 저장소를 Terraform Registry에 연결해요. 공개 Registry의 경우 GitHub 조직에 저장소를 만들고 Registry가 그 이름(명명 규칙에 맞는)을 감지하도록 해요.
- HCP Terraform 프라이빗 레지스트리를 사용한다면 워크스페이스/설정에서 모듈 저장소를 등록해요.
v1.0.0같은 태그를 푸시해 첫 버전을 게시해요.
게시 후 (After publishing)
게시된 모듈은 version 인자와 함께 호출할 수 있어요:
module "vpc" {
source = "myorg/vpc/aws"
version = "1.0.0"
}
Registry의 모듈 페이지는 README 문서와 예시, 입력·출력, 리소스를 보여줘요.