【问题标题】:Terraform on Azure cloud - VM name and Data disk name are not alignedAzure 云上的 Terraform - VM 名称和数据磁盘名称未对齐
【发布时间】:2019-07-13 14:29:29
【问题描述】:

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

terraform 代码如下:

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)}"
  }
}

我已更改 托管磁盘块

来自

managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index+1)}"

managed_disk_id = "${element(azurerm_managed_disk.tf-mdsk-cluster.*.id, count.index)}"

但这并没有解开这个谜团,你知道如何解开它吗?

【问题讨论】:

  • 如果你把代码中的+1全部去掉,重新申请,你会得到什么名字?
  • 托管磁盘块或 storage_data_disk 块中的 +1?索引从 0 开始,我希望它从 1 开始,因此我使用 +1 作为偏移量。
  • 我调整了表情。我的问题是,如果删除所有+,你会在同一堆栈中的操作系统磁盘和数据磁盘上获得相同的索引吗?

标签: azure terraform azure-virtual-machine


【解决方案1】:

我认为您误解了某些内容并使其设置错误。创建托管磁盘时,使用count.index+1 设置索引。然后数据名称将具有编号 {1,2,3,4,5} 和索引 {0,1,2,3,4}。当您创建 VM 并在其中添加托管磁盘时。您将storage_data_disk 中的索引也设置为count.index+1。所以当虚拟机的索引为1时,磁盘号为2。

您可以将storage_data_disk 中的索引更改为count.index。它会按你的意愿工作。 azurerm_virtual_machine 会这样:

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)}"
  }
}

【讨论】:

  • 非常感谢 Charles 的解释,现在一切都清楚了。本质是我们没有两次偏移。更重要的是,一旦我们在创建中抵消了,那么就没有必要在 VM 中再次抵消它。也帮助我解决了其他问题。干杯
猜你喜欢
  • 2019-07-12
  • 1970-01-01
  • 2016-05-29
  • 2021-05-30
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2021-12-27
相关资源
最近更新 更多