используя count.index в terraform? - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь сгенерировать кучу файлов из шаблонов - мне нужно заменить жестко закодированный 1 на count.index, не уверен, какой формат terraform нам позволит использовать.

resource "local_file" "foo" {
  count = "${length(var.files)}"

  content  = "${data.template_file.tenant_repo_multi.1.rendered}"
  #TODO: Replace 1 with count index.
  filename = "${element(var.files, count.index)}"
}


data "template_file" "tenant_repo_multi" {

  count = "${length(var.files)}"
  template = "${file("templates/${element(var.files, count.index)}")}"

}

variable "files" {
  type    = "list"
  default = ["filebeat-config_filebeat.yml",...]
}

Яработает

Terraform v0.11.7
+ provider.gitlab v1.0.0
+ provider.local v1.1.0
+ provider.template v1.0.0

1 Ответ

0 голосов
/ 12 мая 2018

Вы можете перебрать источник данных tenant_repo_multi следующим образом -

resource "local_file" "foo" {
  count    = "${length(var.files)}"
  content  = "${element(data.template_file.tenant_repo_multi.*.rendered, count.index)}"
  filename = "${element(var.files, count.index)}"
}

Однако рассматривали ли вы возможность использования ресурса template_dir в поставщике шаблонов Terraform. Пример ниже -

resource "template_dir" "config" {
    source_dir      = "./unrendered"
    destination_dir = "./rendered"

    vars = {
        message = "world"
    }
}
...