如何通过openstack中的terraform将多个卷动态附加到多个实例?

如何通过openstack中的terraform将多个卷动态附加到多个实例?,terraform,terraform0.12+,terraform-provider-openstack,terraform0.14.7,Terraform,Terraform0.12+,Terraform Provider Openstack,Terraform0.14.7,我已经编写了一个terraform模块(v0.14),可用于在openstack中提供具有正确可用性\u区域、网络端口、正确风格的多个实例,可基于布尔输入变量创建1个本地磁盘或1个块存储\u卷等。现在我得到了一个功能请求,可以在多个实例上动态添加多个blockstorage_卷(=网络/共享存储卷) 关于如何在多个实例上为1个blockstorage_卷动态工作的示例: #Dynamically create this resource ONLY if boolean "volume_

我已经编写了一个terraform模块(v0.14),可用于在openstack中提供具有正确可用性\u区域、网络端口、正确风格的多个实例,可基于布尔输入变量创建1个本地磁盘或1个块存储\u卷等。现在我得到了一个功能请求,可以在多个实例上动态添加多个blockstorage_卷(=网络/共享存储卷)

关于如何在多个实例上为1个blockstorage_卷动态工作的示例:

#Dynamically create this resource ONLY if boolean "volume_storage" = true
resource "openstack_blockstorage_volume_v3" "shared_storage" {
  for_each          = var.volume_storage ? var.nodes : {}
  name              = "${each.value}-${each.key}.${var.domain}"
  size              = var.volume_s
  availability_zone = each.key
  volume_type       = var.volume_type
  image_id          = var.os_image
}
现在让我们假设我有2个实例,其中我想向每个实例动态添加2个额外的blockstorage_卷,我的第一个想法是添加2个额外的动态资源作为尝试:

#Dynamically create this resource if boolean "multiple_volume_storage" = true
resource "openstack_blockstorage_volume_v3" "multiple_shared_storage" {
  for_each          = var.multiple_volume_storage ? var.multiple_volumes : {}
  name              = each.value
  size              = var.volume_s
  availability_zone = each.key
  volume_type       = var.volume_type
  image_id          = var.os_image
}
.tf文件中定义的2个额外blockstorage_卷示例:

variable "multiple_volumes" {
  type = map(any)
  default = {
    dc1 = "/volume/mysql"
    dc2 = "/volume/postgres"

  }
}
  nodes = {
    dc1 = "app-stage"
    dc2 = "app-stage"
  }
.tf文件中定义的2个实例示例:

variable "multiple_volumes" {
  type = map(any)
  default = {
    dc1 = "/volume/mysql"
    dc2 = "/volume/postgres"

  }
}
  nodes = {
    dc1 = "app-stage"
    dc2 = "app-stage"
  }
在这里,我尝试将2个额外的blockstorage_卷动态附加到每个实例:

resource "openstack_compute_volume_attach_v2" "attach_multiple_shared_storage" {
  for_each  = var.multiple_volume_storage ? var.multiple_volumes : {}
  instance_id = openstack_compute_instance_v2.instance[each.key].id
  volume_id   = openstack_blockstorage_volume_v3.multiple_shared_storage[each.key].id
}
openstack_compute_instance_v2.instance[each.key]显然不正确,因为它现在每个实例只创建一个额外的块存储卷。有没有干净/优雅的方法来解决这个问题?因此,基本上是将变量“multiple_volumes”中的所有给定卷附加到var.nodes中定义的每个实例

亲切问候,, 乔纳斯