Я использую Terraform archive_file провайдера для упаковки нескольких файлов в zip-файл.Он отлично работает, когда я определяю архив следующим образом:
data "archive_file" "archive" {
type = "zip"
output_path = "./${var.name}.zip"
source_dir = "${var.source_dir}"
}
Однако я не хочу, чтобы архив содержал все файлы в var.source_dir
, я хочу только их подмножество.Я заметил, что у провайдера archive_file есть атрибут source_file
, поэтому я надеялся, что смогу предоставить список этих файлов и упаковать их в архив следующим образом:
locals {
source_files = ["${var.source_dir}/foo.txt", "${var.source_dir}/bar.txt"]
}
data "archive_file" "archive" {
type = "zip"
output_path = "./${var.name}.zip"
count = "2"
source_file = "${local.source_files[count.index]}"
}
, но это не работает, архивсоздается для каждого файла, определенного в local.source-files
, следовательно, у меня есть сценарий «последних побед», когда создаваемый архивный файл содержит только bar.txt.
Я пробовал это:
locals {
source_files = ["${var.source_dir}/main.py", "${var.source_dir}/requirements.txt"]
}
data "archive_file" "archive" {
type = "zip"
output_path = "./${var.name}.zip"
source_file = "${local.source_files}"
}
но неудивительно, что произошел сбой:
data.archive_file.archive: source_file должен быть одним значением, а не списком
Есть ли способ достичь того, что япосле того, как здесь, т.е. передать список файлов провайдеру archive_file и сделать так, чтобы он упаковал их все в файл архива?