Ssoon

[5주차] 05 테라폼의 팁과 요령 (1) 반복문 - for expressions 본문

Terraform 101 Study

[5주차] 05 테라폼의 팁과 요령 (1) 반복문 - for expressions

구구달스 2022. 11. 17. 22:15
CloudNet@ 팀의 가시다님이 진행하는 Terraform 101 Study 05주차 정리입니다.

 

 

GitHub - kschoi728/T101: Terraform 101 Study

Terraform 101 Study. Contribute to kschoi728/T101 development by creating an account on GitHub.

github.com

✅ 단일 값을 생성하기 위해 반복이 필요한 경우

[ for <ITEM> in <LIST> : <OUTPUT> ]

  • LIST : 반복할 list
  • ITEM : LIST 의 각 항목에 할당할 로컬 변수의 이름
  • OUTPUT : ITEM 을 어떤 식으로든 변환하는 expression(표현식)

 

✅ var.names 의 이름 목록을 대문자로 변환하는 테라폼 코드입니다.

for name in var.names : upper(name) 

live/global/for-expressions/main.tf 

variable "names" {
  description = "A list of names"
  type        = list(string)
  default     = ["apeach", "chun-sik", "ryan"]
}

output "upper_roles" {
  value = [ for name in var.names : upper(name) ]
}

📢 CLI 확인

 

✅ 조건을 지정하여 결과 list를 필터링할 수 있습니다.

for name in var.names : upper(name) if length(name) < 5

 live/global/for-expressions/main.tf 

output "short_upper_names" {
  value = [for name in var.names : upper(name) if length(name) < 5]
}

📢 CLI 확인

 

✅ 다음과 같은 구문으로 map 을 반복할 수 있습니다.

[ for <KEY>, <VALUE> in <MAP> : <OUTPUT> ]

  • MAP : 반복되는 map
  • KEY & VALUE : map 의 각 키-값의 쌍을 할당할 로컬 변수의 이름
  • OUTPUT : key 와 value 를 어떤 식으로든 변환하는 expression(표현식)

for namerole in var.Kakao_Friends : "${name} is the ${role}"

 live/global/for-expressions/main.tf 

variable "hero_thousand_faces" {
  description = "map"
  type        = map(string)

  default = {
    apeach   = "hero"
    chun-sik = "love interest"
    ryan     = "mentor"
  }
}

output "bios" {
  value = [for name, role in var.Kakao_Friends : "${name} is the ${role}"]
}

📢 CLI 확인

 

✅ for 표현식을 list 가 아닌 map 을 출력하는 데 사용할 수 있습니다.

 

  ✔ list 을 반복하고 map 을 출력

[ for <ITEM> in <LIST> : <OUTPUT_KEY> => <OUTPUT_VALUE> ]

  ✔ map 을 반복하고 list 를 출력

{ for <KEY>, <VALUE> in <MAP> : <OUTPUT_KEY> => <OUTPUT_VALUE> }

 

✅ map 을 변환하여 모든 key 와 value 을 대문자로 만드는 방법입니다.

   👉 식을 대괄호 개신 중괄호로

   👉 각 반복마다 단일 값을 출력하는 대신 key 와 vaule 을 화살표로 구분하여 출력

 

 live/global/for-expressions/main.tf 

output "upper_roles" {
  value = {for name, role in var.Kakao_Friends : upper(name) => upper(role)}
}

📢 CLI 확인

 
Comments