如何在terraform中迭代资源?

如何在terraform中迭代资源?,terraform,Terraform,如何为参数的不同值迭代资源 例如,在我下面的地形文件中,我有一个数据块和一个资源。如果我通过了valueDB_NAME=test,那么工作正常。但是,如果我有多个DB_NAME值,并且希望它运行多次DB_NAME=test,app,该怎么办呢。如何迭代数据和资源块 data "template_file" "search-index" { template = "${file("search-index/search-index.s

如何为参数的不同值迭代资源

例如,在我下面的地形文件中,我有一个数据块和一个资源。如果我通过了value
DB_NAME=test
,那么工作正常。但是,如果我有多个DB_NAME值,并且希望它运行多次
DB_NAME=test,app
,该怎么办呢。如何迭代数据和资源块

data "template_file" "search-index" {
  template = "${file("search-index/search-index.sh")}"

  vars {
    DB_NAME = "${var.DB_NAME}"

  }
}

resource "null_resource" "script" {

  triggers = {
    DB_NAME = "${var.DB_NAME}"
    script_sha = "${sha256(file("search-index/search-index.sh"))}"
  }

  provisioner "local-exec" {
    command   = "${data.template_file.search-index.rendered}"
    interpreter = ["/bin/bash", "-c"]
  }
}

我不确定我是否完全理解您试图实现的目标,但您可以通过定义
变量来创建多个DB。tf
如下:

variable "DB_NAME" {
  description = "A list of databases"
  type        = list(string)
  default     = ["db1", "db2", "db3"]
}
然后使用terraform文件中的for_每个功能:

data "template_file" "search-index" {
  for_each = toset(var.DB_NAME)
  template = "${file("search-index/search-index.sh")}"

  vars = {
    DB_NAME = each.value
  }
}
resource "null_resource" "script" {
  for_each = toset(var.DB_NAME)
  triggers = {
    DB_NAME = each.value
    script_sha = "${sha256(file("search-index/search-index.sh"))}"
  }

  provisioner "local-exec" {
    command   = "${data.template_file.search-index[each.value]}"
    interpreter = ["/bin/bash", "-c"]
  }
}