【问题标题】:Unable to get memory or num_cpus from template in Terraform VSphere无法从 Terraform VSphere 中的模板获取内存或 num_cpus
【发布时间】:2020-04-15 14:35:22
【问题描述】:

在尝试为 VSphere 中的虚拟机分配内存和 num_cpus 时,我试图从模板中提取内存和 num_cpus。但是我在尝试这样做时遇到了错误。 这是我的资源:

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

resource "vsphere_virtual_machine" "vm" {
  count = var.vm-count
  name = "${var.vm-name}-${count.index + 1}"
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id = data.vsphere_datastore.datastore.id
  folder = var.vm-folder
  #####Problem Area############################################
  num_cpus = data.vsphere_virtual_machine.template.num_cpus
  memory = data.vsphere_virtual_machine.template.memory
  #############################################################
  guest_id = data.vsphere_virtual_machine.template.guest_id
  scsi_type = data.vsphere_virtual_machine.template.scsi_type
  firmware = data.vsphere_virtual_machine.template.firmware

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

  disk {
      label            = "disk0"
      size             = data.vsphere_virtual_machine.template.disks.0.size
      eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
      thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
    }

  clone {
    template_uuid = data.vsphere_virtual_machine.template.id

    customize {
        windows_options {
          auto_logon_count = 2
          computer_name = "HarshitDev"
          organization_name = "Philips"
        }
      }
  }
}

这是我在运行“terraform validate”时遇到的错误:

错误:不支持的属性

在 main.tf 第 39 行,在资源“vsphere_virtual_machine”“vm”中:
39:num_cpus = data.vsphere_virtual_machine.template.num_cpus

此对象没有名为的参数、嵌套块或导出属性 “num_cpus”。

错误:不支持的属性

在 main.tf 第 40 行,在资源“vsphere_virtual_machine”“vm”中:
40:内存=data.vsphere_virtual_machine.template.memory

此对象没有名为的参数、嵌套块或导出属性 “记忆”。

【问题讨论】:

标签: terraform vsphere


【解决方案1】:

num_cpus 没有暴露在vsphere_virtual_machine resource中。

有人已经开始处理它 (see here),但尚未合并。

【讨论】:

    【解决方案2】:

    您可以通过使用与您使用的相同的数据源来提取给定模板的内存和 CPU。但是,您似乎使用的是旧版本的 vSphere 提供程序插件。

    不要使用您当前的版本,而是切换到以下版本:

    terraform {
      required_providers {
      vsphere = {
        source = "hashicorp/vsphere"
        version = "2.1.1"
      }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-16
      • 2021-04-27
      • 2020-07-05
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      相关资源
      最近更新 更多