조건식과 스플랫 표현식
삼항 연산자를 사용해 구성에 조건부 논리를 구현하고, 객체 목록을 변환하는 스플랫 표현식을 이해합니다.
조건식과 스플랫 표현식은(는) CoddyKit의 무료 Terraform Infrastructure as Code 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Terraform Infrastructure as Code 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
테라폼의 동적 논리
테라폼은 정적인 선언만을 위한 도구가 아닙니다! 인프라 구성을 더 지능적이고 유연하게 만들려면 동적 논리를 사용합니다.
이 단원에서는 두 가지 강력한 도구인 조건식과 스플랫 표현식을 소개합니다. 이 도구를 사용하면 인프라가 다양한 상황에 맞게 조정되고 데이터를 효율적으로 변환할 수 있습니다.
조건식: 기본
조건식은 흔히 삼항 연산자라고도 하며, 조건이 참인지 거짓인지에 따라 두 값 중 하나를 선택할 수 있게 합니다. 값을 위한 간단한 'if-else' 문과 비슷합니다.
- 구문:
condition ? value_if_true : value_if_false - 다양한 환경이나 설정에 맞게 구성을 유연하고 재사용 가능하게 만드는 데 유용합니다.
조건식: 단순한 값 예제
조건식을 사용하여 입력 변수에 따라 지역 변수의 값을 동적으로 설정하는 방법을 살펴보겠습니다. default = "dev"를 default = "prod"로 변경한 다음 다시 실행해 보세요.
variable "env" {
description = "Deployment environment (dev or prod)"
type = string
default = "dev"
}
locals {
instance_type = var.env == "prod" ? "t3.medium" : "t3.micro"
}
output "chosen_instance_type" {
value = local.instance_type
description = "The instance type selected based on environment."
}조건식: 리소스 속성 예제
조건식을 사용하여 리소스 속성을 제어할 수도 있으며, 리소스를 생성할지 여부까지 제어할 수 있습니다! 여기서는 count 메타 인수를 사용하여 조건부로 S3 버킷을 생성합니다.
variable "create_bucket" {
description = "Whether to create an S3 bucket"
type = bool
default = true
}
resource "aws_s3_bucket" "my_bucket" {
# If create_bucket is true, count is 1 (create one bucket).
# If create_bucket is false, count is 0 (create no buckets).
count = var.create_bucket ? 1 : 0
bucket = "coddykit-unique-bucket-12345" # IMPORTANT: Replace with a globally unique name!
acl = "private"
}
output "bucket_id" {
value = var.create_bucket ? aws_s3_bucket.my_bucket[0].id : "No bucket created"
description = "The ID of the created S3 bucket, or a message if not created."
}스플랫 표현식 이해하기
스플랫 표현식([*])은 객체 목록을 해당 객체에서 특정 속성만 추출한 목록으로 변환하는 데 사용됩니다. 여러 항목에서 한 번에 데이터를 추출할 수 있는 강력한 단축 표현입니다.
- 구문:
LIST_OF_OBJECTS[*].ATTRIBUTE count로 생성한 여러 리소스나 복잡한 목록 변수와 같은 컬렉션을 쉽게 다룰 수 있습니다.
스플랫: 리소스 출력 예제
EC2 인스턴스를 여러 개 생성한다고 가정해 보겠습니다. 모든 인스턴스의 퍼블릭 IP 목록을 쉽게 가져오려면 어떻게 해야 할까요? 스플랫 표현식이 이에 적합합니다! 참고: AWS 리전에 맞는 유효한 AMI가 필요합니다.
resource "aws_instance" "web" {
count = 2 # Creates two instances
ami = "ami-0abcdef1234567890" # Replace with a valid AMI ID for your region
instance_type = "t2.micro"
tags = {
Name = "web-instance-${count.index}"
}
}
output "web_instance_public_ips" {
value = aws_instance.web[*].public_ip
description = "A list of public IP addresses for all web instances."
}스플랫: 변수 목록 예제
스플랫 표현식은 리소스에만 사용하는 것이 아닙니다. 복잡한 변수와 함께 사용할 때도 매우 유용합니다. 여기에는 사용자 객체 목록이 있으며, 이 목록에서 이메일 주소만 추출하려고 합니다.
variable "users" {
description = "List of user objects, each with name, email, and role."
type = list(object({
name = string
email = string
role = string
}))
default = [
{ name = "Alice", email = "alice@example.com", role = "admin" },
{ name = "Bob", email = "bob@example.com", role = "viewer" },
{ name = "Charlie", email = "charlie@example.com", role = "editor" }
]
}
output "user_emails" {
value = var.users[*].email
description = "A list containing only the email addresses of the users."
}조건식과 스플랫 결합하기
조건식과 스플랫 표현식을 결합하면 더욱 고급스럽고 간결한 논리를 구현할 수 있습니다. 예를 들어 리소스 목록을 조건부로 선택한 다음, 선택한 목록에 스플랫 표현식을 사용할 수 있습니다.
- 이를 통해 복잡한 상황에 대응하는 매우 유연한 구성을 만들 수 있습니다.
- 예를 들어
(var.env == "prod" ? aws_instance.prod : aws_instance.dev)[*].id는 환경에 따라 서로 다른 인스턴스 집합에서 ID를 가져올 수 있습니다.
동적 논리의 권장 방법
동적 논리는 강력하지만 신중하게 사용하지 않으면 구성을 이해하기 어렵게 만들 수 있습니다. 다음 팁을 참고하세요.
- 읽기 쉽게 작성하기: 복잡한 표현식을 더 작고 관리하기 쉬운 부분으로 나누세요.
- 지역 값 사용하기: 복잡한 조건식이나 스플랫 표현식을
locals블록에 저장하면 가독성이 향상되고 반복을 줄일 수 있습니다. - 철저히 테스트하기: 동적 논리는 예상하지 못한 동작을 일으킬 수 있습니다. 항상
terraform plan을 실행하고 제안된 변경 사항을 주의 깊게 검토하세요. - 문서화하기: 특히 조건식과 스플랫을 결합할 때는 복잡한 논리를 설명하는 주석을 추가하세요.
빠른 확인
다음 테라폼 구성을 살펴보세요.
variable "server_names" {
type = list(string)
default = ["web-01", "db-01", "cache-01"]
}
output "filtered_names" {
value = var.server_names[*]
}복습 및 다음 단계
잘하셨습니다! 이제 테라폼 구성을 훨씬 더 동적이고 유연하게 만드는 방법을 배웠습니다.
- 특정 조건에 따라 값을 동적으로 만들기 위해 조건식(삼항 연산자)을 살펴보았습니다.
- 객체 또는 리소스 컬렉션에서 속성 목록을 효율적으로 추출하기 위해 스플랫 표현식(
[*])을 익혔습니다.
이러한 도구는 확장 가능하고 재사용 가능하며 유연한 코드형 인프라를 구축하는 데 기본이 됩니다. 일상적인 테라폼 작업에 활용할 수 있도록 계속 연습해 보세요!
자주 묻는 질문
“조건식과 스플랫 표현식” 강의는 무료인가요?
네 — “조건식과 스플랫 표현식” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Terraform Infrastructure as Code 강의 전체를 잠금 해제할 수 있습니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
“조건식과 스플랫 표현식”에서 뭘 배우나요?
삼항 연산자를 사용해 구성에 조건부 논리를 구현하고, 객체 목록을 변환하는 스플랫 표현식을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Terraform Infrastructure as Code을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Terraform Infrastructure as Code을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Terraform Infrastructure as Code은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“조건식과 스플랫 표현식” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Terraform Infrastructure as Code 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Terraform Infrastructure as Code 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.