list 블록 참조
list 블록 참조 (list block reference)
list 블록은 기존 인프라를 읽고 Terraform 워크스페이스로 가져올 수 있는 리소스를 반환하는 쿼리를 정의해요. list 블록은 .tfquery.hcl 확장자를 가진 구성 파일에만 추가할 수 있어요. 이 주제는 .tfquery.hcl 파일에서 list 블록을 구성하는 방법에 대한 참조 정보를 제공해요. 리소스 쿼리 및 가져오기에 대한 자세한 내용은 기존 리소스 대량 가져오기를 참고하세요.
출처: 문서
본문
구성 모델 (Configuration model)
list 블록은 다음 구성을 지원해요:
list "<TYPE>" "<LABEL>"블록provider참조 | 필수count숫자 |for_each와 상호 배타적for_each문자열의 맵 또는 set |count와 상호 배타적include_resource불리언limit숫자 |100config블록- 프로바이더 특정 인자 | 프로바이더 문서 참고
완전한 구성 (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)
- 기존 리소스 대량 가져오기 (Import in bulk): 리소스 쿼리·가져오기
- import 블록: 리소스 가져오기
- 메타-인자 (Meta-arguments): count, for_each
- 데이터 소스 (Data sources): 데이터 쿼리