본문 바로가기
DevOps

[T1014-이론] 3장 기본 사용법 (2)

by 서어켜엉 2024. 6. 19.
해당 내용은 cloudNet@ 팀의 가시다 님이 진행하는 테라폼 스터디 T101 4기에서 다룬 내용과 "테라폼으로 시작하는 IaC" (한빛미디어) 저서 내용을 정리한 것입니다.

 

5. 데이터 소스

데이터 소스는 테라폼으로 정의되지 않은 외부 리소스 또는 저장된 정보를 테라폼 내에서 참조할 때 사용한다.

 

데이터 소스 구성
데이터 소스 블록은 data로 시작

데이터 소스 유형은 <provider>_<provider 리소스 유형>

데이터 소스 유형 뒤에는 고유한 이름을 붙인다. 동일한 유형에 대한 식별자 역할을 하므로 중복 불가능.

이름 뒤에는 {} 안에 데이터 소스 유형에 대한 구성인수들을 선언한다.

data "local_file" "abc" {
    filename = "${path.module}/abc.txt"
}
  • 사용가능한 메타인수
    • depends_on : 종속성을 선언하며, 선언된 구성요소와의 생성 시점에 대해 정의
    • count : 선언된 개수에 따라 여러 데이터 소스를 선언
    • for_each : map 또는 set 타입의 데이터 배열의 값을 기준으로 여러 리소스를 생성
    • provider : 동일한 프로바이더가 다수 정의되어 있는 경우 지정
    • lifecycle : 데이터 소스의 수명주기 관리

데이터 소스 속성 참조

# Terraform Code
data "<리소스 유형>" "<이름>" {
    <인수> = <값>
}

data.<리소스 유형>.<이름>.<속성>
  • 코드 예시
# Declare the date source
data "aws_availability_zones" "seoul" {
  state = "available"
}

resource "aws_subnet" "primary" {
  availability_zone = data.aws_availability_zones.seoul.names[0]
  # e.g. ap-northeast-2a
}

resource "aws_subnet" "primary" {
  availability_zone = data.aws_availability_zones.seoul.names[1]
  # e.g. ap-northeast-2b
}

※ data 소스로 선언될 수 있는 리소스 유형, 그리고 그 유형에서 필요한 인수들은 아래 링크에 설명되어 있다.

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones

 

Terraform Registry

 

registry.terraform.io

  • 콘솔에서 확인하기
terraform init -upgrade && terraform plan && terraform apply -auto-approve

terraform state show data.aws_availability_zones.seoul