# Terraform Loop 효과적으로 사용하기

> Clean Markdown view of GeekNews topic #11713. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=11713](https://news.hada.io/topic?id=11713)
- GeekNews Markdown: [https://news.hada.io/topic/11713.md](https://news.hada.io/topic/11713.md)
- Type: news
- Author: [ironlung](https://news.hada.io/@ironlung)
- Published: 2023-11-06T11:53:02+09:00
- Updated: 2023-11-06T11:53:02+09:00
- Original source: [insight.infograb.net](https://insight.infograb.net/blog/2022/10/21/terraform-loop)
- Points: 4
- Comments: 0

## Topic Body

- 클라우드에서 인프라 구축할 때 비용 절감, 배포 속도 향상, 일관성, 안정성, 재사용성 고려해 웹 콘솔로 구축하기보다 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에 정의된 키와 값 가져올 수 있음

## Comments



_No public comments on this page._
