【问题标题】:Unable to get correct disk data during cloning from template using Terraform Vsphere provider使用 Terraform Vsphere 提供程序从模板克隆期间无法获取正确的磁盘数据
【发布时间】:2020-07-06 05:31:36
【问题描述】:

我在 vSphere 上有一个带有 8 个磁盘的模板,但是当我尝试通过 Terraform 从模板克隆时,它只能查看 2 个磁盘。

它适用于前 2 个磁盘 -

  disk {
    label            = "disk0"
    size             = data.vsphere_virtual_machine.template.disks[0].size
  }

  disk {
    label            = "disk1"
    size             = data.vsphere_virtual_machine.template.disks[1].size
    unit_number      = 1
  }

但是一进入第三盘,就这样-

  disk {
    label            = "disk2"
    size             = data.vsphere_virtual_machine.template.disks.[2].size
    unit_number      = 2
  }

,它给了我一个错误-

Error: Invalid index

  on main.tf line 82, in resource "vsphere_virtual_machine" "vm":
  82:     size             = data.vsphere_virtual_machine.template.disks.2.size
    |----------------
    | data.vsphere_virtual_machine.template.disks is list of object with 2 elements

The given key does not identify an element in this collection value.

如果我要移除第三个磁盘(标签 disk2)并更改前 2 个磁盘的磁盘大小(只增加,因为这是允许的),我会正确地看到更改。但是,一旦我进入具有预定义大小的第三个磁盘(标签 disk2)并运行构建,它就会创建一个新磁盘,这绝对不是我想要的。

我怀疑这是因为我的前 2 个磁盘在第一个 SCSI 控制器上,而我的其他磁盘在其他 SCSI 控制器上,而 Terraform 默认只考虑第一个。

编辑:

这就是模板数据的样子 -

variable "vsphere_source_template_name" {
  default = "dev-dummy-template"
}

data "vsphere_virtual_machine" "template" {
  name          = var.vsphere_source_template_name
  datacenter_id = data.vsphere_datacenter.dc.id
}

【问题讨论】:

    标签: terraform vmware vsphere


    【解决方案1】:

    您需要在您的 vm 模板数据源中增加您的 scsi_controller_scan_count。默认情况下,它只会扫描 1 个(第一个)scsi 控制器,但如果您在尝试从中克隆的 vm 中指定编号,则数据源中应该可以使用其他磁盘。

    https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs/data-sources/virtual_machine#scsi_controller_scan_count

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2018-08-03
      • 1970-01-01
      • 2021-07-07
      相关资源
      最近更新 更多