首页 > 解决方案 > Terraform:如何在创建 VM 时使用目录名称

问题描述

我正在尝试使用 terraform VCD 提供程序在 VmWare Vcloud 数据中心创建 VM。这是完整的代码

我做了什么

provider "vcd" {
  user                 = "abc"
  password             = "xyz"
  org                  = "I1250-Se"
  vdc                  = "I1250-Se"
  url                  = "https://nlu02.abc.com/api"
  max_retry_timeout    = "30"
  allow_unverified_ssl = "true"
}

resource "vcd_vapp" "web" {
  name = "web"
  power_on = "true"
}

data "vcd_vapp" "web" {
  name             = "web"
  org              = "I1250-Se"
}

data "vcd_catalog_item" "my-cat-item" {
  org  = "I1250-Se"
  name = data.vcd_catalog.my-cat.name
  catalog = data.vcd_catalog.my-cat.name
}

data "vcd_catalog" "my-cat" {
  org  = ""
  name = "ID120_ISO"
}


resource "vcd_vapp_vm" "web1" {
  vapp_name     = data.vcd_vapp.web.name
  name          = var.vmname
  catalog_name  = "ID120_ISO"
  template_name = ""
  memory        = 2048
  cpus          = 2
  cpu_cores     = 1
}

错误是什么

vcd_vapp_vm.web1:正在创建...

错误:查找目录时出错:未找到 [ENF] 实体

在 main.tf 第 33 行,在资源“vcd_vapp_vm”“web1”中:33:资源“vcd_vapp_vm”“web1”{

环境

Terraform v0.12.18

操作系统:

Linux jenvm 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

期望什么

该脚本应接受目录名称(已存在)并创建 VM。需要注意的另一点是,我所指的目录名称不包含任何 VApp 模板,因此不确定它的行为方式。我期望的是,它应该接受目录名称并使用媒体(ISO 映像)通过 terraform 在新创建的 VM 上安装操作系统。

请建议。

标签: terraform

解决方案


目前正在审查在没有 Vapp 模板的情况下创建 VM 的此类功能。目录名称应包含 VApp 模板,不能将 ISO 映像视为目录名称。

因此,为了解决此问题,请将有效的 OVA 文件作为 VApp 模板上传并在代码中使用。谢谢


推荐阅读