모듈 개발

모듈 개발 (Developing Modules)

재사용 가능한 Terraform 모듈을 개발하는 방법을 설명해 드릴게요. 모듈은 인프라 코드의 재사용 단위로, 잘 설계하면 여러 환경·팀에서 쉽게 활용할 수 있어요.

출처: 문서

본문

Terraform 모듈은 함께 배포되는 관련 리소스 집합을 캡슐화한 재사용 가능한 구성 조각이에요. 모듈을 개발할 때는 다음을 고려해요.

모듈 개발 시작 (Getting started)

기존 코드에서 모듈을 추출하거나 처음부터 만들 수 있어요. 모듈은 루트 모듈과 비슷하지만, 재사용을 위해 입력 변수와 출력으로 경계를 명확히 해요. 권장 자습서인 모듈 작성을 따라할 수 있어요.

모듈의 목적 (Module purpose)

모듈은 하나의 명확한 목적을 가져야 해요. 예를 들어 "VPC 네트워킹 모듈", "EC2 인스턴스 모듈"처럼 인프라의 한 조각을 담당하게 해요. 모듈이 너무 광범위하거나 너무 단순하면 재사용성이 떨어져요.

키 구성 요소 (Key components)

  • 입력 변수 — 모듈이 받는 구성 값. type, description, 필요시 default(과 validation)를 정의해요.
  • 출력 값 — 모듈이 외부에 노출하는 값. description을 포함해요.
  • 리소스/데이터 소스 — 모듈이 관리하는 인프라 객체와 조회.
  • 프로바이더 — 모듈이 사용하는 프로바이더와 별칭 구성.

모듈 설계 원칙 (Design principles)

  • 캡슐화: 모듈 내부의 리소스 세부 사항을 감추고 깔끔한 인터페이스(변수/출력)를 제공해요.
  • 재사용성: 환경별 파라미터를 변수로 노출해 다양한 상황에서 쓰일 수 있게 해요.
  • 문서화: README.md에 사용법과 예시를 포함해요.
  • 버전 관리: 모듈 저장소에 태그를 달아 버전을 관리해요.

모듈 구조 (Module structure)

표준 모듈 구조는 main.tf, variables.tf, outputs.tf, README.md 파일과 examples/ 디렉터리로 이루어져요. 자세한 내용은 표준 모듈 구조를 참고해요.

복잡한 모듈 (Complex modules)

여러 모듈을 조합해 더 큰 시스템을 만들 수 있어요. 모듈 구성을 참고해요. 모듈 안에서 프로바이더를 다룰 때는 모듈 안의 프로바이더를 참고해요.

게시 (Publishing)

검증된 모듈은 Terraform Registry에 게시해 조직 안팎에서 재사용할 수 있어요. 자세한 내용은 모듈 게시를 참고해요.

더 알아보기 (Learn more)