You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform在vCenter中可识别的cluster定义及查询方法

问题原因说明

你在vCenter目录中看到的Dev、QA、Production属于数据中心(Datacenter)对象,不是Terraformvsphere_compute_cluster数据源对应的计算集群对象。
vSphere的资源层级标准结构为:

  • vCenter实例
    • 数据中心(Datacenter,也就是你看到的Dev/QA/Production层级)
      • 文件夹(可选,用于资源分类)
        • 计算集群(Compute Cluster,即Terraform要匹配的对象,是多个ESXi主机的聚合资源组)
          • ESXi主机节点
            你把数据中心名称传入集群参数,自然无法匹配到对应资源。

集群名称查询方法

你可以通过两种方式获取当前vCenter下的计算集群列表:

方法1:通过报错回显直接获取(仅用Terraform即可)

你可以临时给vsphere_compute_cluster的name参数填一个任意不存在的名称,执行terraform plan,Terraform的报错信息会直接列出当前数据中心下所有可用的计算集群名称,示例报错如下:

error fetching compute cluster: no compute cluster with name "test-fake-name" found in datacenter, available clusters are: dev-cluster-01, qa-cluster-01, prod-cluster-01
你直接从报错中取到实际集群名称回填即可。

方法2:通过vSphere官方CLI工具查询

你可以安装vSphere官方命令行工具govc,执行以下命令直接拉取全量集群列表:
govc find / -type ClusterComputeResource
命令输出的结果为所有计算集群的完整路径,你可以直接取路径最后一段作为name参数值,如果集群存放在子文件夹下,直接填写完整路径即可。


正确配置示例

# 先指定要操作的数据中心,即你目录中的Dev/QA/Production其中一个
data "vsphere_datacenter" "dc" {
  name = "Dev"
}

# 再匹配对应数据中心下的计算集群
data "vsphere_compute_cluster" "cluster" {
  name          = "dev-cluster-01" # 替换为你查询到的实际集群名称
  datacenter_id = data.vsphere_datacenter.dc.id
}

resource "vsphere_virtual_machine" "vm" {
  name             = var.vm_name
  resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
  datastore_id     = data.vsphere_datastore.datastore.id

  clone {
     template_uuid  = data.vsphere_virtual_machine.template.id
  }
  # 其余配置保持不变
}

内容的提问来源于stack exchange,提问作者Chris F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 14:21:02