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

Terraform count条件异常:vsphere虚拟机资源创建逻辑问题

问题分析与修复

你的count参数逻辑写反了,导致不符合预期的创建行为。

当前逻辑问题

你写的表达式:

count = !var.is_ubuntu && var.extra_disk_create ? 0 : 1

只有当!var.is_ubuntu(即is_ubuntu为false)并且extra_disk_create为true时,count才会设为0,其余所有情况count都是1——这就导致只要extra_disk_create是false,不管is_ubuntu是true还是false,虚拟机都会被创建。

正确逻辑

你需要的是仅当var.is_ubuntu和var.extra_disk_create均为false时创建,也就是当这两个条件同时满足时count=1,否则count=0。对应的表达式应该是:

count = !var.is_ubuntu && !var.extra_disk_create ? 1 : 0

或者更直观的写法:

count = (var.is_ubuntu == false && var.extra_disk_create == false) ? 1 : 0

验证场景

  • 当var.is_ubuntu=false且var.extra_disk_create=false:表达式结果为true,count=1,创建虚拟机
  • 当var.is_ubuntu=true(不管extra_disk_create是什么):表达式结果为false,count=0,不创建
  • 当var.extra_disk_create=true(不管is_ubuntu是什么):表达式结果为false,count=0,不创建

修改后的完整代码示例

resource "vsphere_virtual_machine" "ubuntu" {
  count             = !var.is_ubuntu && !var.extra_disk_create ? 1 : 0
  name              = var.vm_name

  # additional configuration
  ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:20:28