在 Terraform for vSphere 中配置可选的 DHCP 使用

Configure optional DHCP usage in Terraform for vSphere

使用 Terraform 配置 vSphere 虚拟机,我希望能够在 tfvars 文件中提供 IP 地址(以及网关和网络掩码),但如果未提供值,则让虚拟机默认使用 DHCP。我知道如果 'vsphere_virtual_machine' 资源的 'customize' 块包含一个空的 'network_interface' 块,它将使用 DHCP。我希望为 variables.tf 文件中的设置提供默认值“”,如果存在,我可以设置值,如果不存在,则使用 DHCP,但我收到一条错误消息:

Error: module.vm.vsphere_virtual_machine.node: clone.0.customize.0.network_interface.0.ipv4_netmask: cannot parse '' as int: strconv.ParseInt: parsing "": invalid syntax

所以输入空白字符串将不会被解析,如果值为空,它不会只将整个 network_interface 留空。

我不能在子资源上使用 COUNT,所以到目前为止我唯一想到的就是将两个几乎完全相同的 'vsphere_virtual_machine' 资源放入我的模块,然后放入 COUNT 语句所以只有一个被创建,这取决于是否提供了网络设置,但是伙计,这看起来很难看吗...?

我觉得你很幸运。将近一年以来,我一直在等待解决这个完全相同的问题。

瞧瞧,Terraform v0.12.0-alpha1: They now support dynamic block definitions instead of just static ones

尽情享受吧,虽然我会像你提到的那样扔掉几百行有价值的 hack...