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
相关产品推荐
相关产品推荐

