如何使用Terraform代码在azure vm中连接磁盘

如何使用Terraform代码在azure vm中连接磁盘,terraform,Terraform,我正在尝试创建多个虚拟机和托管磁盘,以便在创建后进行关联。我可以看到磁盘已创建,并且仅与列表中的第一个VM关联。我不知道如何在下面的代码中分配正确的索引号 我相信虚拟机id造成了这个问题,有没有人遇到过类似的问题,请指教 resource “azurerm_managed_disk” “app_managed_disk” { count = “${length(var.data_disk_names)}” name = “ var.apphostname−{var.data_disk

我正在尝试创建多个虚拟机和托管磁盘,以便在创建后进行关联。我可以看到磁盘已创建,并且仅与列表中的第一个VM关联。我不知道如何在下面的代码中分配正确的索引号

我相信虚拟机id造成了这个问题,有没有人遇到过类似的问题,请指教

resource “azurerm_managed_disk” “app_managed_disk” {

  count = “${length(var.data_disk_names)}”

  name = “ var.apphostname−{var.data_disk_names[count.index %length(var.data_disk_names)]}”

  location = azurerm_resource_group.poc_rg.location

  resource_group_name = azurerm_resource_group.poc_rg.name

  storage_account_type = var.app_disk_type

  create_option = “Empty”

  disk_size_gb = “${var.data_disk_sizes[count.index % length(var.data_disk_sizes)]}”

}

resource “azurerm_virtual_machine_data_disk_attachment” “app_disk_attach” {

  count = “${length(var.data_disk_names)}”

  vm_count = length(var.vm_app_name)

  managed_disk_id = “${azurerm_managed_disk.app_managed_disk[count.index % length(azurerm_managed_disk.app_managed_disk)].id}”

  virtual_machine_id = azurerm_linux_virtual_machine.app-vm-pas[0].id

  lun = “${count.index + 1}”

  caching = “ReadWrite”

}

```

您可以在所有虚拟机和相应的虚拟磁盘之间循环,这里的假设是您希望为一组类似的虚拟机创建多个类似连接的磁盘

从上面的代码可以看出,您走的是正确的道路,但在装载时似乎只引用了第一个VM,这可能会更好地为您服务:

variable "cnt" {
  default     = 1
  description = "instances to be created"
}
variable "managed_disks" {
  type = list(map(string))
  default = []
}
#cnt=2
#managed_disks = [{
#    storage_account_type : "Premium_LRS"
#    disk_size_gb : "256"
#  }]
resource "azurerm_managed_disk" "default" {
  count = length(var.managed_disks)>0?(length(var.managed_disks)*var.cnt):0
  name                 = "${var.name}-md-${count.index%var.cnt}-${count.index%length(var.managed_disks)}"
  location             = var.location
  resource_group_name  = var.resource_group
  storage_account_type = coalesce(var.managed_disks[count.index%length(var.managed_disks)].storage_account_type,"StandardSSD_LRS")
  create_option        = "Empty"
  disk_size_gb         = coalesce(var.managed_disks[count.index%length(var.managed_disks)].disk_size_gb,"64")

  tags = merge(
    var.tags,
    {
    }
  )
}
resource "azurerm_virtual_machine_data_disk_attachment" "default" {
  count = length(var.managed_disks)>0?(length(var.managed_disks)*var.cnt):0
  managed_disk_id    = azurerm_managed_disk.default[count.index].id
  virtual_machine_id = azurerm_linux_virtual_machine.default[count.index%var.cnt].id
  lun                = 1+count.index
  caching            = "ReadWrite"

}

这样,您应该能够为每个虚拟机创建一组具有相应的类似定义的受管磁盘的虚拟机。

您可以在所有虚拟机和相应的虚拟磁盘之间循环,假设您希望为一组类似的虚拟机创建多个类似连接的磁盘

从上面的代码可以看出,您走的是正确的道路,但在装载时似乎只引用了第一个VM,这可能会更好地为您服务:

variable "cnt" {
  default     = 1
  description = "instances to be created"
}
variable "managed_disks" {
  type = list(map(string))
  default = []
}
#cnt=2
#managed_disks = [{
#    storage_account_type : "Premium_LRS"
#    disk_size_gb : "256"
#  }]
resource "azurerm_managed_disk" "default" {
  count = length(var.managed_disks)>0?(length(var.managed_disks)*var.cnt):0
  name                 = "${var.name}-md-${count.index%var.cnt}-${count.index%length(var.managed_disks)}"
  location             = var.location
  resource_group_name  = var.resource_group
  storage_account_type = coalesce(var.managed_disks[count.index%length(var.managed_disks)].storage_account_type,"StandardSSD_LRS")
  create_option        = "Empty"
  disk_size_gb         = coalesce(var.managed_disks[count.index%length(var.managed_disks)].disk_size_gb,"64")

  tags = merge(
    var.tags,
    {
    }
  )
}
resource "azurerm_virtual_machine_data_disk_attachment" "default" {
  count = length(var.managed_disks)>0?(length(var.managed_disks)*var.cnt):0
  managed_disk_id    = azurerm_managed_disk.default[count.index].id
  virtual_machine_id = azurerm_linux_virtual_machine.default[count.index%var.cnt].id
  lun                = 1+count.index
  caching            = "ReadWrite"

}
这样,您就应该能够为每个虚拟机启动一组具有相应的类似定义的托管磁盘的虚拟机