4P by ironlung 2023-11-06 | favorite | 댓글과 토론
  • 클라우드에서 인프라 구축할 때 비용 절감, 배포 속도 향상, 일관성, 안정성, 재사용성 고려해 웹 콘솔로 구축하기보다 IaC 도구 활용해 구축하면 좋음
  • 오픈소스이며 IaC 도구 중 가장 많이 사용하는 게 Terraform
  • Terraform 코드를 효율적이고 효과적으로 작성하려면 Terraform에서 제공되는 기능을 적절하게 사용하는 게 중요함
  • Terraform 반복문
    • 일반적인 선언적 언어는 반복문 없지만 Terraform에서는 다양한 함수 지원해 반복문 사용할 수 있음
    • 대표적으로 사용하는 반복문: count, for_each
      • count 매개 변수: 리소스와 모듈 반복
      • for_each 표현식: 리소스, 리소스 내 인라인 블록과 모듈 반복
    • 각 반복문 사용 방법
      • count: 생성하려는 리소스가 거의 동일하고 변경되지 않을 때 활용하면 빠르고 간결하게 생성
      • for_each: 고유한 이름, 데이터가 들어 있는 리소스, 재생성되지 말아야 할 리소스에 활용하면 안전하게 생성, 변경
  • Count
    • count 매개 변수는 정수를 허용, 전체 리소스, 모듈 반복해 만듦
    • count로 구성하면 count.index 활용해 count에서 생성한 인덱스에 접근할 수 있음
    • Count 제약사항
      • count는 전체 리소스 반복하지만 리소스 안에 있는 인라인 블록은 반복하지 않음
      • count로 생성한 리소스 중간 값 제거하면 뒤의 모든 값이 삭제 후 새로 생성. 최종 결과물은 동일하지만 재생성되지 말아야 할 리소스라면 문제 생길 수 있음
  • For_each
    • for_each 표현식은 list, set, map 반복해 전체 리소스, 리소스 내 인라인 블록, 모듈 반복해 만듦
    • for_each로 구성되면 each.key와 each.value 사용해 해당 키와 값에 접근할 수 있음
    • 리소스에 for_each 사용할 때는 리스트가 지원되지 않음
    • collection에는 반복할 set, map 정의하고 Config에 each.value 사용해 Collection에 정의된 키와 값 가져올 수 있음