2017-10-19 151 views
0

是否有创建一个虚拟机实例时使用vSphere数据源设置NETWORK_INTERFACE标签的方法吗?使用terraform vSphere资源设置NETWORK_INTERFACE标签

的文档似乎说出你只能使用名称。数据源仅导出ID。

我已经把我在下面想什么,但不知道它会工作。我是新来的这个tbh。

data "vsphere_distributed_virtual_switch" "dvs" { 
    name   = "my_dvs" 
    datacenter_id = "${data.vsphere_datacenter.datacenter.id}" 
} 

data "vsphere_network" "dgp" { 
    name   = "my_dgp" 
    datacenter_id = "${data.vsphere_datacenter.datacenter.id}" 
} 

resource "vsphere_virtual_machine" "linux_box" { 
    ... 
    network_interface { 
    label = "${data.vsphere_network.dvs.id}/${data.vsphere_network.dgp.id}" 
    } 
} 

回答

0

运行一个测试用例来证明它。

保存下列代码进行data.tf

data "vsphere_datacenter" "datacenter" { 
    name = "dc1" 
} 

data "vsphere_distributed_virtual_switch" "dvs" { 
    name   = "my_dvs" 
    datacenter_id = "${data.vsphere_datacenter.datacenter.id}" 
} 

data "vsphere_network" "dgp" { 
    name   = "my_dgp" 
    datacenter_id = "${data.vsphere_datacenter.datacenter.id}" 
} 

运行terraform planterraform apply由于没有资源创建/销毁,因此运行它是安全的。

运行后terraform apply,它会生成一个文件terraform.tfstate,查看这个文件,如果id是你正在寻找的名称。

如果是,你写的代码是正确的。

+0

这比我在寻找不幸的是有点大不同。如果它将我的名称作为id并且我必须按名称查找id,那么我基本上无缘无故使用数据源。我将进行测试,看看是否可以在提供商中使用该id – vernak2539

+0

然后,您未知的是什么部分? – BMW

+1

我想我一直在寻找一种方式,在虚拟机资源使用的ID,因为他们多一点绝对的。我在github上提交了一个问题,似乎vm资源不接受它当前形式的ID,但正在为新版本进行工作。因此,此时,vSphere数据源与VM资源不兼容。感谢您抽出宝贵的时间! – vernak2539