fileset 함수
fileset 함수
fileset 함수는 경로와 패턴이 주어지면 일치하는 일반 파일 이름들의 집합을 열거해요. 결과에서 경로는 자동으로 제거되고, 경로 구분자를 포함하는 결과는 크로스 시스템 호환성을 위해 항상 슬래시(/)를 구분자로 사용해요. 함수는 구성 파싱 시점에 평가되므로 Terraform이 어떤 작업을 하기 전에 이미 디스크에 있는 파일에만 사용할 수 있어요.
출처: 문서
본문
fileset은 경로와 패턴이 주어지면 일반 파일 이름들의 집합을 열거해요. 결과 파일 이름 집합에서 경로는 자동으로 제거되고, 경로 구분자를 여전히 포함하는 결과는 크로스 시스템 호환성을 위해 항상 슬래시(/)를 구분자로 돌려줘요.
fileset(path, pattern)
지원되는 패턴 매칭:
*- 구분자가 아닌 문자의 모든 시퀀스를 매치해요**- 구분자 문자를 포함한 모든 문자의 시퀀스를 매치해요?- 하나의 구분자 문자가 아닌 문자를 매치해요{alternative1,...}- 콤마로 구분된 대안 중 하나가 일치하면 문자 시퀀스를 매치해요[CLASS]- 문자 클래스 안의 단일 구분자 문자가 아닌 문자를 매치해요 (아래 참고)[^CLASS]- 문자 클래스 밖의 단일 구분자 문자가 아닌 문자를 매치해요 (아래 참고)
이중 별표(**)는 그 자체가 하나의 경로 구성 요소로 나타나야 해요. /path** 같은 패턴은 유효하지 않으며 /path*와 동일하게 취급되지만, /path*/**는 원하는 결과를 얻을 수 있어요.
문자 클래스는 다음을 지원해요:
함수는 적용 시점이 아니라 구성 파싱 중에 평가되므로, 이 함수는 Terraform이 어떤 작업을 하기 전에 이미 디스크에 존재하는 파일에만 사용할 수 있어요.
예시
> fileset(path.module, "files/*.txt")
[
"files/hello.txt",
"files/world.txt",
]
> fileset(path.module, "files/{hello,world}.txt")
[
"files/hello.txt",
"files/world.txt",
]
> fileset("${path.module}/files", "*")
[
"hello.txt",
"world.txt",
]
> fileset("${path.module}/files", "**")
[
"hello.txt",
"world.txt",
"subdirectory/anotherfile.txt",
]
fileset의 일반적인 용도는 the for_each meta-argument를 사용해 매치된 파일마다 리소스 인스턴스를 하나씩 만드는 거예요:
resource "example_thing" "example" {
for_each = fileset(path.module, "files/*")
# other configuration using each.value
}
더 알아보기 (Learn more)
- for_each 메타 인자 - 매치된 파일마다 리소스를 생성해요.
- 파일 관련 함수 - 파일 내용을 읽는
file함수를 확인해 보세요. - Terraform 함수 목록 - 모든 함수를 확인해 보세요.