상세 컨텐츠

본문 제목

[001] Terraform child 모듈 and parent 모듈

HashiCorp Certified :Terraform Associate

by Taeyoon.Kim.DS 2024. 7. 29. 19:10

본문

By default, a child module will have access to all variables set in the calling (parent) module.
1) True
2) False

정답은 False. Child Module은 반드시 명확하게 parent module의 input variables를 선언해야 한다.

Terraform에서 module이란?

Terraform에서 모듈(module)은 재사용 가능한 구성 요소들의 집합입니다. 모듈은 인프라 구성 요소를 구성하고 관리하는 코드 블록으로, 복잡한 인프라를 효율적으로 관리하고 유지할 수 있게 해줍니다. 다음은 Terraform 모듈에 대한 주요 개념입니다:

  1. 모듈의 기본 구조:
    • 모듈은 일반적으로 여러 파일로 구성되며, 주요 파일은 main.tf, variables.tf, outputs.tf입니다.
    • main.tf: 모듈의 주요 리소스와 구성을 정의합니다.
    • variables.tf: 모듈에서 사용할 입력 변수들을 정의합니다.
    • outputs.tf: 모듈이 생성하는 출력 값을 정의합니다.
  2. 재사용성:
    • 모듈을 사용하면 동일한 인프라 구성을 여러 번 반복해서 사용할 수 있습니다.
    • 예를 들어, 여러 환경(개발, 테스트, 프로덕션)에서 동일한 네트워크 구성을 사용하고자 할 때 모듈을 사용하면 코드의 중복을 줄일 수 있습니다.
  3. 추상화:
    • 모듈은 복잡한 인프라를 추상화하여 간단한 인터페이스를 제공합니다.
    • 이를 통해 사용자는 모듈 내부의 세부 사항을 알 필요 없이 인프라를 구성할 수 있습니다.
  4. 모듈 사용법:
    • 모듈은 module 블록을 사용하여 호출합니다. 예를 들어
module "vpc" {
  source = "./modules/vpc"
  cidr_block = var.vpc_cidr_block
  azs        = var.azs
  public_subnets = var.public_subnets
}

 

  • source 속성은 모듈의 위치를 지정하며, 로컬 디렉토리, Git 리포지토리, Terraform Registry 등에서 모듈을 가져올 수 있습니다.
  • 입력 변수들은 모듈 내부의 variables.tf 파일에 정의된 변수들에 값을 전달합니다.

출력 값 사용:

  • 모듈은 출력 값을 통해 다른 모듈이나 리소스와 데이터를 주고받을 수 있습니다.
  • 예를 들어, VPC 모듈이 생성한 서브넷 ID를 다른 모듈에서 사용할 수 있습니다:
     
output "public_subnet_ids" {
  value = aws_subnet.public.*.id
}

 

Terraform 모듈을 사용하면 인프라를 모듈화하고 재사용할 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다. 모듈을 적절히 사용하여 인프라 구성을 표준화하고 효율적으로 관리할 수 있습니다.