일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- docker
- 백준 온라인 저지
- Dynamic Programming
- docker image
- MySQL
- hackerrank
- 빅데이터를 지탱하는 기술
- Airflow
- dsf
- Python
- airflow architecture
- 그리디
- 2023년 목표
- delete join
- 알고리즘
- telegram
- 데이터 엔지니어
- datacamp
- data_engineer
- 프로그래머스
- Data Engineering
- terraform
- airflow webserver
- BOT
- leetcode
- Pseudo Lab
- SQL
- Spark
- 백준온라인저지
- docker container
Archives
- Today
- Total
Lim Seunghyun Space
[T102] Data Source 본문
Data source
테라폼으로 정의되지 않은 외부 리소스 또는 저장된 정보를 테라폼 내에서 참조할 때 사용한다.
Data Source 구성
- 'data'로 시작되며 이후에 '데이터 소스 유형'을 정의
data "<리소스 유형>" "<이름>" {
<인수> = <값>
}
# Data source 예시
data "local_file" "abc" {
filename = "${path.module}/test.txt"
}
- 데이터 소스 유형은 '_'(Under score)를 기준으로 앞은 provider name, 뒤는 resouce type을 나타낸다.
- 위의 예시에서는 provider name: local, resource type: file
- 데이터 소스 유형 뒤에는 고유한 이름이 오며, 다른 데이터 소스 유형과 중복이 될 수 없다.
- 데이터 소스 내용은 { } 안에 선언된다.
메타인수 목록
- 데이터 소스를 정의할 때 사용 가능한 메타인수
- depends_on: 종속성을 선언하며, 선언된 구성요소와의 생성 시점에 대해 정의
- count: 선언된 개수에 따라 여러 데이터 소스를 선언
- for_each: map 또는 set 타입의 데이터 배열의 값을 기준으로 여러 리소스를 생성
- provider: 동일한 프로바이더가 다수 정의되어 있는 경우 지정
- lifecycle: 데이터 소스의 수명주기 관리
데이터 소스 속성 참조
- 리소스처럼 데이터 소스를 참조할 수 있으며 구별되게 'data'가 붙는다.
data "<리소스 유형>" "<이름"> {
<인수> = <값>
}
# 데이터 소스 참조
data.<리소스 유형>.<이름>.<속성>
참조 예제
- main.tf
- aws_availability_zones, aws_vpc를 사용해서 default VPC내 subnet 생성하기
data "aws_availability_zones" "available" {
state = "available"
}
data "aws_vpc" "default" {
default = true
}
resource "aws_subnet" "primary" {
vpc_id = data.aws_vpc.default.id
availability_zone = data.aws_availability_zones.available.names[0]
cidr_block = "172.31.100.0/24" # Your CIDR Block
tags = {
Name = "primary"
}
}
resource "aws_subnet" "secondary" {
vpc_id = data.aws_vpc.default.id
availability_zone = data.aws_availability_zones.available.names[0]
cidr_block = "172.31.101.0/24" # Your CIDR Block
tags = {
Name = "secondary"
}
}
- terraform init && terraform plan && terraform apply -auto-approve
- terraform console에서 data source 확인하기
terraform console
> data.aws_availability_zones.available
'''
{
"all_availability_zones" = tobool(null)
"exclude_names" = toset(null) /* of string */
"exclude_zone_ids" = toset(null) /* of string */
"filter" = toset(null) /* of object */
"group_names" = toset([
"ap-northeast-2",
])
"id" = "ap-northeast-2"
"names" = tolist([
"ap-northeast-2a",
"ap-northeast-2b",
"ap-northeast-2c",
"ap-northeast-2d",
])
...
'''
> data.aws_vpc.default
'''
{
"arn" = ...
"cidr_block" = "172.31.0.0/16"
"cidr_block_associations" = tolist([
{
"association_id" = ...
"cidr_block" = "172.31.0.0/16"
"state" = "associated"
},
])
'''
- Terraform Graph
- Reference
- Subnet 생성 확인
728x90
'IaC > Terraform' 카테고리의 다른 글
[T102] 반복문 (0) | 2023.07.16 |
---|---|
[T102] Output (0) | 2023.07.16 |
[T102] Local (0) | 2023.07.16 |
[T102] Variable (0) | 2023.07.16 |
[T102] Terraform 설치 및 튜토리얼 (0) | 2023.07.09 |