728x90
안녕하세요,
오늘은 조건식을 활용하여 태깅을 적용해 보도록 하겠습니다.
‘테라폼으로 시작하는 IaC’를 기준으로 내용 정리하였으며, CloudNet@의 테라폼 스터디 내용을 기반으로 하고 있습니다
코드
다음 코드를 보겠습니다.
variable, locals, resource 블록과 output을 다음과 같이 설정했습니다.
variable "environment" {
description = "Environment name (DEV, UIT, PROD)"
type = string
default = "DEV"
}
locals {
region = var.environment == "DEV" ? "ap-northeast-2" : ""
}
resource "aws_instance" "example" {
count = local.region != "" ? 1 : 0
ami = "ami-0edc5427d49d09d2a"
instance_type = "t2.micro"
tags = {
"Name" = "${var.environment}-${local.region == "ap-northeast-2" ? "prod" : ""}"
"owner" = local.region == "ap-northeast-2" ? "jflip" : ""
}
}
output "server_tags" {
value = aws_instance.example[*].tags
}
조건식 설명
- var.environment == "PROD" ? "ap-northeast-2" : "":
- var.environment 변수 값이 "PROD"와 같으면 "ap-northeast-2"를 반환합니다.
- 그렇지 않으면 빈 문자열("")을 반환합니다.
- 따라서, 환경 변수가 "PROD"인 경우 local.region에 "ap-northeast-2"가 할당됩니다.
- local.region != "" ? 1 : 0:
- local.region 변수가 빈 문자열이 아닌 경우에는 인스턴스를 1개 생성합니다.
- 그렇지 않으면 인스턴스를 생성하지 않습니다.
- ${var.environment}-${local.region == "ap-northeast-2" ? "Seoul" : ""}-inst:
- "Name" 태그는 환경 변수와 local.region 값에 따라 다르게 설정됩니다.
- local.region == "ap-northeast-2"가 참인 경우 "Seoul"을 추가하여 인스턴스 이름을 설정합니다.
- 그렇지 않으면 빈 문자열을 추가하여 설정합니다.
- local.region == "ap-northeast-2" ? "jflip" : "":
- "owner" 태그는 local.region 값이 "ap-northeast-2"와 같으면 "jflip"을 설정합니다.
- 그렇지 않으면 빈 문자열을 설정합니다.
적용 화면
728x90
반응형
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 프로바이더를 활용한 리전별, 멀티 클라우드 리소스 생성 (0) | 2024.07.07 |
---|---|
[Terraform] 테라폼 내장함수 사용하기 (0) | 2024.06.29 |
[Terraform] for_each, for, dynamic의 사용법 (0) | 2024.06.29 |
[Terraform] cidrsubnet, cidrsubnets 함수 (0) | 2024.06.23 |
[Terraform] count 사용하기 (0) | 2024.06.23 |