list 블록 참조

list 블록 참조 (list block reference)

list 블록은 기존 인프라를 읽고 Terraform 워크스페이스로 가져올 수 있는 리소스를 반환하는 쿼리를 정의해요. list 블록은 .tfquery.hcl 확장자를 가진 구성 파일에만 추가할 수 있어요. 이 주제는 .tfquery.hcl 파일에서 list 블록을 구성하는 방법에 대한 참조 정보를 제공해요. 리소스 쿼리 및 가져오기에 대한 자세한 내용은 기존 리소스 대량 가져오기를 참고하세요.

출처: 문서

본문

구성 모델 (Configuration model)

list 블록은 다음 구성을 지원해요:

완전한 구성 (Complete configuration)

다음 list 블록은 모든 지원 내장 인자를 포함해요:

list "<TYPE>" "<LABEL>" {
  provider = <provider>.<alias>
  count = <number> # `count` and `for_each` are mutually exclusive
  for_each [ # `for_each` and `count` are mutually exclusive
    <KEY> = <VALUE>
  ]
  include_resource = <false>
  limit = 100
  config {
    <provider-specific arguments> # refer to your provider documentation
  }
}

명세 (Specification)

list 블록은 다음 구성을 지원해요.

list "<TYPE>" "<LABEL>"

모든 list 블록에 대해 다음 인자를 설정해야 해요:

  • TYPE: 쿼리할 리소스 타입을 지정해요. 사용 가능한 리소스 타입은 프로바이더 문서를 참고하세요.
  • LABEL: 특정 list 블록의 이름을 지정해요. 라벨은 현재 디렉터리에서 유일해야 해요. list 블록을 참조하려면 list.<label>.<attribute> 문법을 사용하세요. 표현식 문법과 라벨 권장 사항은 이름 있는 값 참조리소스 명명을 참고하세요.

provider

provider 인자는 필수예요. 인프라를 쿼리하는 데 Terraform이 사용하는 프로바이더 구성을 지정해요.

list "<TYPE>" "<LABEL>" {
  provider = <provider>
}

provider메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 생성하는 방법을 제어해요. 자세한 내용은 provider 참조를 참고하세요.

count

count 메타-인자는 Terraform이 같은 구성을 사용해 여러 쿼리를 수행하도록 지시해요.

list "<TYPE>" "<LABEL>" {
  count = <number>
}

count메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 생성하는 방법을 제어해요. 자세한 내용은 count 참조를 참고하세요.

for_each

for_each 메타-인자는 각 목록에 대해 별도의 구성 블록을 요구하지 않고 유사한 쿼리 결과 목록을 만들도록 Terraform에 지시해요.

값 리스트키-값 쌍의 맵

list "<TYPE>" "<LABEL>" {
  for_each = [ "<VALUE>" ]
  # . . .
}
list "<TYPE>" "<LABEL>" {
  for_each = {
    "<KEY>" = "<VALUE>"
  }
}

for_each메타-인자예요. 메타-인자는 Terraform 언어에 내장되어 있으며 Terraform이 리소스를 생성하는 방법을 제어해요. 자세한 내용은 for_each 참조를 참고하세요.

include_resource

include_resource 인자는 Terraform이 응답에 리소스에 대한 모든 정보를 포함하도록 지시해요.

list "<TYPE>" "<LABEL>" {
  include_resource  = <boolean>
}

기본적으로 Terraform은 응답에서 리소스 ID를 반환하지만, include_resource 인자를 true로 설정하면 프로바이더가 전체 리소스 객체를 반환하도록 할 수 있어요.

요약

데이터 타입: 불리언 기본값: 없음

limit

limit 인자는 쿼리가 반환하는 최대 결과 수를 지정해요.

list "<TYPE>" "<LABEL>" {
  limit  = <number>
}

숫자로 해석되는 참조 값을 지정할 수 있어요. 기본값은 100이에요.

결과 수가 지정된 제한에 도달하면 Terraform은 프로바이더에 대한 연결을 끊고 결과 보고를 중지해요.

요약
  • 데이터 타입: 숫자
  • 기본값: 100

config

config 블록은 쿼리 매개변수를 정의하는 필터, 태그 또는 기타 프로바이더 특정 속성 같은 구성을 정의해요.

list "<TYPE>" "<LABEL>" {
  config {
    <provider-specific configuration>
  }
}

지원되는 인자와 값은 프로바이더 문서를 참고하세요.

요약
  • 데이터 타입: 블록
  • 기본값: 없음

예제 (Examples)

다음 예제는 일반적인 사용 사례에 대한 구성을 작성하는 방법을 보여줘요.

대체 프로바이더 구성 선택

다음 예제에서 Terraform은 europe 별칭을 가진 프로바이더 구성을 사용해 google_compute_instance 리소스를 쿼리해요.

provider "google" {
  region = "us-central1"
}

provider "google" {
  alias  = "europe"
  region = "europe-west1"
}

list "google_compute_instance" "example" {
  provider = google.europe
  # ...
}

여러 쿼리 결과 목록 생성

count 또는 for_each 블록을 사용해 여러 쿼리 결과 목록을 만들 수 있어요. count 인자는 동일하거나 거의 동일한 여러 목록을 만드는 데 가장 적합해요. for_each 인자는 맵이나 set에 정의된 속성을 기반으로 여러 목록을 만드는 데 가장 적합해요.

countfor_each

다음 예제는 입력 변수에 제공된 각 서브넷에 대해 쿼리 결과 목록 하나를 생성해요:

variable "subnet_ids" {
  type = list(string)
}

list "aws_instance" "server" {
   provider = aws
   count = length(var.subnet_ids)
}

다음 예제는 tomap() 함수를 사용해 만든 맵을 참조하는 두 개의 목록을 생성해요:

list "azurerm_resource_group" "rg" {
   provider = aws
   for_each = tomap({
      a_group       = "eastus"
      another_group = "westus2"
   })
}

다음 예제는 toset() 함수로 만든 set을 사용해 네 개의 목록을 생성해요:

list "aws_iam_user" "the-accounts" {
   provider = aws
   for_each = toset(["Todd", "James", "Alice", "Dottie"])
}

list 블록 참조

다음 예제에서 list.aws_instance.web 블록에서 include_resource 인자가 true로 설정돼요. 결과적으로 쿼리는 web에 대한 결과 목록에 완전한 리소스 state 정보를 반환해요. 이를 통해 list.aws_instance.web-bu 블록이 count 인자 값으로 web에서 length 속성을 참조할 수 있어요.

list "aws_instance" "web" {
  provider = aws
  include_resource = true
}

list "aws_instance" "web-bu" {
  provider = concept

  config {
    count = list.aws_instance.web.data[0].state.length
  }
}

더 알아보기 (Learn more)