Terraform
[ Terraform101 Study - 3w ] 조건문
su''@
2024. 6. 30. 04:38
Terrafrom T101 4기 실습 스터디 게시글입니다.
"테라폼으로 시작하는 IaC" 도서를 참고하여 정리했습니다.
[Conditional Expressions] 테라폼에서의 조건식은 3항 연산자 형태를 갖는다. 조건은 true 또는 false로 확인되는 모든 표현식을 사용할 수 있다 - 링크
- 실습을 위해서 3.10 디렉터리를 신규 생성 후 열기 → main.tf 파일 생성
mkdir 3.10 && cd 3.10 touch main.tf
- 일반적으로 비교, 논리 연산자를 사용해 조건을 확인한다.
- 조건식은 ? 기호를 기준으로 왼쪽은 조건이며, 오른쪽은 : 기호를 기준으로 왼쪽이 조건에 대해 true가 반환되는 경우이고 오른쪽이 false가 반환되는 경우다.
- 다음의 예에서 var.a가 빈 문자열이 아니라면 var.a를 나타내지만, 비어 있을 때는 “default-a”를 반환한다
# <조건 정의> ? <옳은 경우> : <틀린 경우> var.a != "" ? var.a : "default-a"
- 조건식의 각 조건은 비교 대상의 형태가 다르면 테라폼 실행 시 조건 비교를 위해 형태를 추론하여 자동으로 변환하는데, 명시적인 형태 작성을 권장
# 조건식 형태 권장 사항 var.example ? 12 : "hello" # 비권장 var.example ? "12" : "hello" # 권장 var.example ? tostring(12) : "hello" # 권장
- 조건식은 단순히 특정 속성에 대한 정의, 로컬 변수에 대한 재정의, 출력 값에 대한 조건 정의 뿐만 아니라 리소스 생성 여부에 응용할 수 있다. count에 조건식을 결합한 경우 다음과 같이 특정 조건에 따라 리소스 생성 여부를 선택할 수 있다.
- main.tf 파일 내용
variable "enable_file" { default = true } resource "local_file" "foo" { count = var.enable_file ? 1 : 0 content = "foo!" filename = "${path.module}/foo.bar" } output "content" { value = var.enable_file ? local_file.foo[0].content : "" }
- 실행
# 변수 우선순위3 : 환경 변수 (TF_VAR 변수 이름) export TF_VAR_enable_file=false export | grep TF_VAR_enable_file # terraform init && terraform plan && terraform apply -auto-approve terraform state list echo "var.enable_file ? 1 : 0" | terraform console # 환경 변수 삭제 unset TF_VAR_enable_file export | grep TF_VAR_enable_file # 재실행 terraform plan && terraform apply -auto-approve terraform state list # echo "local_file.foo[0]" | terraform console echo "local_file.foo[0].content" | terraform console echo "var.enable_file ? 1 : 0" | terraform console