如何使用Pulumi关闭vCenter上的现有虚拟机?
用Pulumi管理vSphere虚拟机关机的方案
可行实现方式
1. 利用forcePowerOff参数触发关机
Pulumi的vsphere.VirtualMachine资源没有直接的输入型powerState参数,但可以通过forcePowerOff参数触发强制关机:
- 在代码中将目标虚拟机的
forcePowerOff设为true - 执行
pulumi up,Pulumi会触发虚拟机强制关机 - 关机完成后建议将
forcePowerOff改回false,避免后续更新重复执行该操作
示例代码(TypeScript):
import * as vsphere from "@pulumi/vsphere"; const remoteDesktopVm = new vsphere.VirtualMachine("remote-desktop-vm", { // 虚拟机基础配置(略) forcePowerOff: true, // 开启强制关机 });
2. 直接调用vSphere API控制电源状态
如果需要软关机、重启等更灵活的操作,可绕过Pulumi资源更新流程,直接调用vSphere API:
- 通过
vsphere.getVirtualMachine获取虚拟机的标识信息 - 调用vSphere的
PowerOffVM_Task(软关机)或PowerOffVM(强制关机)API接口 - 这种方式适合频繁的电源状态变更,无需触发基础设施更新
关键参数说明
shutdownWaitTimeout:仅在销毁虚拟机时生效,用于等待操作系统正常关机的超时时间,超时后会强制关机poweronTimeout:虚拟机开机过程的超时设置,与关机操作无关powerState:仅作为输出参数,用于读取当前虚拟机的电源状态,无法通过修改它控制电源
内容的提问来源于stack exchange,提问作者bobby
相关产品推荐
相关产品推荐

