Azure云上的Terraform-虚拟机名称和数据磁盘名称未对齐

Azure云上的Terraform-虚拟机名称和数据磁盘名称未对齐,azure,terraform,azure-virtual-machine,Azure,Terraform,Azure Virtual Machine,我已经创建了VM并添加了数据磁盘,但是有一个问题。VM名称和数据磁盘名称不对齐。请参阅下面的屏幕截图 地形代码如下: resource "azurerm_managed_disk" "tf-mdsk-cluster" { count = 5 name = "${var.ax_base_hostname}-${count.index+1}-DATADISK-1" location = "${az

我已经创建了VM并添加了数据磁盘,但是有一个问题。VM名称和数据磁盘名称不对齐。请参阅下面的屏幕截图

地形代码如下:

resource "azurerm_managed_disk" "tf-mdsk-cluster" {
  count                = 5
  name                 = "${var.ax_base_hostname}-${count.index+1}-DATADISK-1"
  location             = "${azurerm_resource_group.tf-rg-cluster-aos.location}"
  resource_group_name  = "${azurerm_resource_group.tf-rg-cluster-aos.name}"
  storage_account_type = "Standard_LRS"
  create_option        = "Empty"
  disk_size_gb         = "1024"
}

resource "azurerm_managed_disk" "tf-mdsk-2-cluster" {
  count                = 5
  name                 = "${var.ax_base_hostname}-${count.index+1}-DATADISK-2"
  location             = "${azurerm_resource_group.tf-rg-cluster-aos.location}"
  resource_group_name  = "${azurerm_resource_group.tf-rg-cluster-aos.name}"
  storage_account_type = "Standard_LRS"
  create_option        = "Empty"
  disk_size_gb         = "1024"
}

resource "azurerm_virtual_machine" "tf-vm-cluster-aos" {
  count                 = 5
  name                  = "${var.ax_base_hostname}-${count.index+1}"
  location              = "${azurerm_resource_group.tf-rg-cluster-aos.location}"
  resource_group_name   = "${azurerm_resource_group.tf-rg-cluster-aos.name}"
  availability_set_id   = "${azurerm_availability_set.tf-as-cluster-aos.id}"
  network_interface_ids = ["${element(azurerm_network_interface.tf-ni-cluster-aos.*.id, count.index+1)}"]
  vm_size               = "${var.ax_vm_size}"

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.name, count.index+1)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index+1)}"
    create_option   = "Attach"
    lun             = 0
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.disk_size_gb, count.index+1)}"
  }

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.name, count.index+1)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.id, count.index+1)}"
    create_option   = "Attach"
    lun             = 1
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.disk_size_gb, count.index+1)}"
  }
}
我已更改了受管磁盘块

来自


但这并没有解开谜团,你知道怎么解决吗?

我想你误解了什么,把它变成了一个错误的设置。创建受管磁盘时,可以使用
count.index+1
设置索引。然后数据名将具有编号{1,2,3,4,5},索引为{0,1,2,3,4}。当您创建虚拟机并在其中添加托管磁盘时。您可以将
存储\u数据\u磁盘中的索引设置为
计数。索引+1
。因此,当索引为VM的1时,磁盘号将为2

您可以将
存储\u数据\u磁盘中的索引更改为
计数.index
。它会像你想的那样工作。
azurerm\u虚拟机将如下所示:

resource "azurerm_virtual_machine" "tf-vm-cluster-aos" {
  count                 = 5
  name                  = "${var.ax_base_hostname}-${count.index+1}"
  location              = "${azurerm_resource_group.tf-rg-cluster-aos.location}"
  resource_group_name   = "${azurerm_resource_group.tf-rg-cluster-aos.name}"
  availability_set_id   = "${azurerm_availability_set.tf-as-cluster-aos.id}"
  network_interface_ids = ["${element(azurerm_network_interface.tf-ni-cluster-aos.*.id, count.index+1)}"]
  vm_size               = "${var.ax_vm_size}"

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.name, count.index)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index)}"
    create_option   = "Attach"
    lun             = 0
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.disk_size_gb, count.index)}"
  }

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.name, count.index)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.id, count.index)}"
    create_option   = "Attach"
    lun             = 1
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.disk_size_gb, count.index)}"
  }
}

如果删除代码中的所有
+1
,请再次应用,您将得到什么名称?+1位于受管磁盘块或存储数据磁盘块中?索引从0开始,我希望它从1开始,因此我使用+1作为偏移量。我调整表达式。我的问题是,如果删除所有
+
,您会在同一堆栈中的操作系统磁盘和数据磁盘上获得相同的索引吗?非常感谢Charles的解释,现在一切都清楚了。实质是我们没有两次抵消。更重要的是,一旦我们在创建中进行了偏移,那么就不需要在VM中再次进行偏移。还帮我解决了其他问题。干杯
managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index)}"
resource "azurerm_virtual_machine" "tf-vm-cluster-aos" {
  count                 = 5
  name                  = "${var.ax_base_hostname}-${count.index+1}"
  location              = "${azurerm_resource_group.tf-rg-cluster-aos.location}"
  resource_group_name   = "${azurerm_resource_group.tf-rg-cluster-aos.name}"
  availability_set_id   = "${azurerm_availability_set.tf-as-cluster-aos.id}"
  network_interface_ids = ["${element(azurerm_network_interface.tf-ni-cluster-aos.*.id, count.index+1)}"]
  vm_size               = "${var.ax_vm_size}"

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.name, count.index)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index)}"
    create_option   = "Attach"
    lun             = 0
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.disk_size_gb, count.index)}"
  }

  storage_data_disk {
    name            = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.name, count.index)}"
    managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.id, count.index)}"
    create_option   = "Attach"
    lun             = 1
    disk_size_gb    = "${element(azurerm_managed_disk.tf-mdsk-2-cluster.*.disk_size_gb, count.index)}"
  }
}