terraform动态块以创建vmware磁盘

terraform动态块以创建vmware磁盘,terraform,vmware,Terraform,Vmware,我有以下资源代码摘录: resource "vsphere_virtual_machine" "standalone" { resource_pool_id = data.vsphere_resource_pool.pool.id datastore_id = data.vsphere_datastore.datastore.id for_each = var.virtual_machines name = each.

我有以下资源代码摘录:

resource "vsphere_virtual_machine" "standalone" {
  resource_pool_id = data.vsphere_resource_pool.pool.id
  datastore_id     = data.vsphere_datastore.datastore.id

  for_each = var.virtual_machines
  name       = each.value.name
  memory     = each.value.ram
  num_cpus   = each.value.logical_cpu
  guest_id   = "ubuntu64Guest"

  network_interface {
    network_id   = data.vsphere_network.network.id
    adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
  }

  disk {
    unit_number      = 0
    label            = "OS"
    size             = each.value.disk0_size
    eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
    thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
  }

  dynamic "disk" {
    for_each each.value.worker_node ? [1] : []
    content {
      unit_number      = 1
      label            = "PX"
      size             = each.value.disk1_size
      eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
      thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
    }
  }
如果each.value.worker_节点为true,我想为VM创建第二个磁盘,但是当我运行terraform plan时,我得到:

Error: Invalid block definition

  on main.tf line 68, in resource "vsphere_virtual_machine" "standalone":
  68:     for_each each.value.worker_node ? [1] : []

Either a quoted string block label or an opening brace ("{") is expected here.

很明显,我的代码中有错误,因为我无法理解它是什么。

浏览互联网发现,我在for_后面缺少一个“=”,这是修复方法:

resource "vsphere_virtual_machine" "standalone" {
  resource_pool_id = data.vsphere_resource_pool.pool.id
  datastore_id     = data.vsphere_datastore.datastore.id

  for_each = var.virtual_machines
  name       = each.value.name
  memory     = each.value.ram
  num_cpus   = each.value.logical_cpu
  guest_id   = "ubuntu64Guest"

  network_interface {
    network_id   = data.vsphere_network.network.id
    adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
  }

  disk {
    unit_number      = 0
    label            = "OS"
    size             = each.value.disk0_size
    eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
    thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
  }

  dynamic "disk" {
    for_each = each.value.worker_node ? [1] : []
    content {
      unit_number      = 1
      label            = "PX"
      size             = each.value.disk1_size
      eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
      thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
    }
  }