표현식 — HCL 안에서 값 만들고 계산하기

표현식 — HCL 안에서 값 만들고 계산하기

드디어 하나의 값을 다른 값으로 만들어내는 표현식(expression) 차례예요. 가장 단순한 표현식은 "hello"5 같은 리터럴 값이지만, Terraform 언어는 그보다 훨씬 복잡한 표현식도 지원해요. 리소스가 내보낸 데이터를 참조하거나, 산술 연산을 하거나, 조건에 따라 값을 고르거나, 내장 함수를 호출하는 것까지요.

출처: https://developer.hashicorp.com/terraform/language/expressions

본문

표현식이 쓰이는 곳

표현식은 Terraform 언어의 여러 곳에서 쓰여요. 다만 어떤 문맥은 사용할 수 있는 표현식을 제한하기도 해요. 예를 들어 특정 타입의 리터럴만 요구하거나, 리소스 속성 참조를 금지하기도 하죠. 각 언어 기능의 문서에는 그 기능이 표현식에 어떤 제한을 두는지 설명돼 있어요.

표현식의 동작을 직접 실험해 보고 싶다면 terraform console 명령으로 Terraform 표현식 콘솔을 실행하면 돼요.

표현식 문법의 구성 요소

이 섹션의 다른 페이지들이 표현식 문법의 기능을 하나씩 설명해요. 큰 그림을 먼저 잡고 각 페이지를 살펴보는 걸 추천해요.

표현식은 결국 '값'이라는 점

표현식을 처음 배울 때 헷갈리는 포인트가 하나 있어요. 표현식은 새 값을 만들고 계산하는 것이지, 그 자체로 상태를 바꾸는 동작이 아니라는 점이에요. 예를 들어 upper("hello") 함수 호출은 "HELLO"라는 새 문자열을 만들 뿐, 아무것도 수정하지 않아요. 그래서 표현식은 항상 '결과값'으로 평가되고, 그 결과를 변수에 넣거나 리소스 인자에 넘기는 식으로 쓰는 거예요.

많은 표현식을 의도적으로 조합하면 구성이 훨씬 간결해져요. 예를 들어 for 표현식으로 목록을 변환한 뒤 [ * ] 스플랫으로 ID만 뽑아내는 식으로, 복잡한 데이터 가공을 몇 줄로 끝낼 수 있어요. 다만 표현식이 너무 복잡해지면 오히려 읽기 어려워지니, for 표현식 페이지에서 소개하는 패턴처럼 목적이 분명한 조합을 사용하는 걸 권장해요.

더 알아보기