728x90
반응형
1. 조건문 (3항 연산자)
Terraform은 3항 연산자 조건문을 지원하며, 인프라를 동적으로 구성하거나 간단한 조건문을 구현할 때 적합합니다.
1-1) 3항 연산자의 기본 문법
condition ? true_value : false_value
1-2) 사용 사례
- 환경별 설정 : 개발, 테스트, 프로덕션 환경에 따라 다른 설정 값을 사용할 경우나 가용영역을 다르게 사용해야 할 경우 유용합니다.
- 리소스 조건부 생성 : 특정 조건에 따라 리소스를 생성하거나 변경해야 할때 사용됩니다.
2. 조건문 (3항 연산자) 예시
1. 조건문(3항 연산자)을 활용하여 (각자 편리한) AWS 리소스를 배포하는 코드를 작성
resource "aws_vpc" "vpc" {
cidr_block = local.vpc_cidr
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "${local.project_name}-vpc-${local.env}-apne2"
}
}
resource "aws_subnet" "pub_subnet" {
count = length(local.pub_cidr)
vpc_id = aws_vpc.vpc.id
cidr_block = element(local.pub_cidr, count.index)
availability_zone = ((count.index) % 2) == 0 ? local.zone_id.names[0] : local.zone_id.names[2]
tags = {
Name = "${local.project_name}-snet-${local.env}-pub-${((count.index) % 2) == 0 ? "a" : "c"}-apne2"
}
}
resource "aws_subnet" "primary_pri_subnet" {
count = length(local.primary_pri_cidr)
vpc_id = aws_vpc.vpc.id
cidr_block = element(local.primary_pri_cidr, count.index)
availability_zone = ((count.index) % 2) == 0 ? local.zone_id.names[0] : local.zone_id.names[2]
tags = {
Name = "${local.project_name}-snet-${local.env}-pri-${((count.index) % 2) == 0 ? "a" : "c"}-apne2"
}
}
2. 코드 설명
- Public & Private Subnet을 설정하는 부분에서 3항 연산자를 사용하였습니다.
resource "aws_subnet" "primary_pri_subnet" {
count = length(local.primary_pri_cidr)
vpc_id = aws_vpc.vpc.id
cidr_block = element(local.primary_pri_cidr, count.index)
availability_zone = ((count.index) % 2) == 0 ? local.zone_id.names[0] : local.zone_id.names[2]
tags = {
Name = "${local.project_name}-snet-${local.env}-pri-${((count.index) % 2) == 0 ? "a" : "c"}-apne2"
}
}
availability_zone = ((count.index) % 2) == 0 ? local.zone_id.names[0] : local.zone_id.names[2]
- ((count.index) % 2) == 0: count.index가 짝수인지 확인하는 조건입니다.
- local.zone_id.names[0]: 조건이 참일 때 사용할 값입니다 (첫 번째 가용 영역).
- local.zone_id.names[2]: 조건이 거짓일 때 사용할 값입니다 (세 번째 가용 영역).
- 서브넷의 Tag를 설정할 때 또한 3항 연산자를 사용하였습니다.
Name = "${local.project_name}-snet-${local.env}-pub-${((count.index) % 2) == 0 ? "a" : "c"}-apne2"
- ((count.index) % 2) == 0 ? "a" : "c": count.index가 짝수이면 “a”, 홀수이면 “c”를 반환합니다.
728x90
반응형
'Terraform' 카테고리의 다른 글
[테라폼] ECS배포 및 revision관리 (1) | 2023.12.03 |
---|---|
[테라폼] EKS 배포 및 Add on 설치 (0) | 2023.10.20 |
[테라폼] Workflow & gitlab runner 프로비저닝 파이프라인 (0) | 2023.08.20 |
[테라폼] State & Module (1) | 2023.07.29 |
[Terraform] Resource Block 구문 문법(count, for_each) (0) | 2023.07.10 |