如何通过openstack中的terraform将多个卷动态附加到多个实例?
我已经编写了一个terraform模块(v0.14),可用于在openstack中提供具有正确可用性\u区域、网络端口、正确风格的多个实例,可基于布尔输入变量创建1个本地磁盘或1个块存储\u卷等。现在我得到了一个功能请求,可以在多个实例上动态添加多个blockstorage_卷(=网络/共享存储卷) 关于如何在多个实例上为1个blockstorage_卷动态工作的示例:如何通过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_
#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中定义的每个实例
亲切问候,,
乔纳斯