已连接的独立 ESXi 主机上的 Terraform vsphere_resource_pool - 获取资源池时出错

Terraform vsphere_resource_pool on connected standalone ESXi host - error fetching resource pool

我几乎是 terraform 和 vsphere 提供者的菜鸟,我遇到了所有菜鸟问题。

我们希望在连接到 vsphere 的托管独立(非集群)ESXi 65 主机上部署 VM,但我无法获得正确的 resource_pool 资源声明,如图所示,我得到了有点绝望并尝试了我能想到的所有排列:

provider "vsphere" {
  vsphere_server = "vcs1.fq.dn"
  alias = "prod"
  allow_unverified_ssl = true
}

data "vsphere_datacenter" "prod" {
  provider = vsphere.prod
  name = "PROD Datacenter"
}

data "vsphere_resource_pool" "vmhost23" {
  provider = vsphere.prod
  datacenter_id = data.vsphere_datacenter.prod.id

#  name          = "vmhost23/Resources"
#  name          = "vmhost23/resources"
#  name          = "vmhost23/"
#  name          = "/"
  name          = "/Resources"
#  name          = "/resources"

#  name          = "vmhost23/Resources/"
#  name          = "vmhost23/resources/"
#  name          = "vmhost23/"
#  name          = "/"
#  name          = "/Resources/"
#  name          = "/resources/"

#  name          = "vmhost23.fq.dn"
#  name          = "vmhost23.fq.dn/"
#  name          = "vmhost23.fq.dn/Resources/"
#  name          = "vmhost23.fq.dn/Resources"
#  name          = "vmhost23.fq.dn/resources/"
#  name          = "vmhost23.fq.dn/resources"

}

不幸的是,没有快乐:

data.vsphere_datacenter.prod: Refreshing state...
data.vsphere_datastore.vmhost23: Refreshing state...
data.vsphere_resource_pool.vmhost23: Refreshing state...
data.vsphere_network.DMZ-prod: Refreshing state...
data.vsphere_datacenter.dc: Refreshing state...
data.vsphere_datastore.datastore: Refreshing state...
data.vsphere_compute_cluster.cluster: Refreshing state...
data.vsphere_datastore_cluster.datastore_cluster: Refreshing state...
data.vsphere_network.TEST-APP: Refreshing state...
data.vsphere_virtual_machine.template: Refreshing state...
:
vsphere_virtual_machine.prdsat: Refreshing state... [id=42190b77-a6a7-8693-e05f-c11528d1afa4]

Error: error fetching resource pool: resource pool '/Resources' not found

  on vm-prdsplidx01x.tf line 4, in data "vsphere_resource_pool" "vmhost23":
   4: data "vsphere_resource_pool" "vmhost23" {

我找到了解决方案。

就我而言,主机位于文件夹中这一事实 - 是的,真的 - 让一切变得不同。这么小的一个数据点,我就忽略了。

所以,就我而言,有效的方法是

data "vsphere_resource_pool" "vmhost23" {
  provider = vsphere.prod
  name          = "FolderName/vmhost23.fq.dn"
  datacenter_id = data.vsphere_datacenter.prod.id
}

大小写很重要,似乎需要ESXi主机名上的FQDN;但如果您找到了一种方法使其可以使用短主机名或小写文件夹名称,请务必纠正我。

所以,又过了一个障碍,只剩下 31 个了!感谢你为我玩 Duck。

我在我的 vCenter7 上启用了 DRS/HA,这有助于获得 resource_pool。同样使用 govc 将获取资源池 ID 的路径。

关于政府 govc 查找 / -type p

terraform 导入 vsphere_resource_pool.resource_pool /dc1/host/compute-cluster1/Resources/ 以上为您提供了 tfstate。