关于 vmware-aiops
vmware-aiops 是用于管理 VMware 虚拟机生命周期、部署、集群、网络和告警的技能,面向 VMware 管理员及 Agent。它提供运营工具,并为写入操作加入防护、调查流程和审计记录。
主要功能
- 01虚拟机生命周期与快照
- 02OVA 和模板部署
- 03来宾命令与文件操作
- 04集群和网络管理
- 05告警处理与分诊
- 06写入预览和审计日志
适用场景
- 01克隆或迁移虚拟机
- 02部署带到期时间的实验虚拟机
- 03调查集群或虚拟机健康状况
- 04规划带回滚的多步骤变更
MCP 相关
它为 VMware 操作提供 61 个 MCP 工具。破坏性写入需要预览和确认,调用记录在本地审计数据库中。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ vmware-skills/ vmware-aiops --skill vmware-aiops安装后在 Claude Code 中输入/vmware-aiops确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/agent-guardrails.mdcapabilities.mdcli-reference.mdinvestigation-protocol.mdsetup-guide.md详细介绍
VMware AIops
免责声明:这是一个由社区维护的开源项目,与 VMware, Inc. 或 Broadcom Inc. 无关联、未获其认可,也未获其赞助。“VMware”和“vSphere”是 Broadcom 的商标。源代码根据 MIT 许可证公开,任何人都可审查,地址:github.com/vmware-skills/VMware-AIops。
VMware 系列入口——通过 AI 实现 VM 生命周期、部署和告警管理——提供 61 个 MCP 工具。
从这里开始:先安装 vmware-aiops,然后按需添加模块。 运行
vmware-aiops hub status,查看已安装的系列成员。 系列:vmware-monitor(清单/运行状况)、vmware-storage(iSCSI/vSAN)、vmware-vks(Tanzu Kubernetes)、vmware-nsx(NSX 网络)、vmware-nsx-security(DFW/防火墙)、vmware-aria(指标/告警/容量)、vmware-avi(AVI/ALB/AKO)、vmware-harden(合规基线)。 | vmware-pilot(工作流编排) | vmware-policy(审计/策略)
此技能的功能
| 类别 | 工具 | 数量 |
|---|---|---|
| VM 生命周期 | 开机/关机、创建、重新配置、克隆、迁移、删除、快照 CRUD、TTL 自动删除、清理 | 16 |
| 部署 | OVA、模板、链接克隆、批量克隆/部署 | 8 |
| Guest 操作 | 执行命令、上传/下载文件、预配 | 5 |
| 计划/应用 | 支持回滚的多步骤规划 | 4 |
| 集群 | 创建、删除、HA/DRS 配置、添加/移除主机、DRS VM-VM 规则(列出/创建/删除/启用-禁用) | 10 |
| 数据存储 | 浏览文件、扫描镜像 | 2 |
| 网络 | dvSwitch 端口组列表/创建、主机 VMkernel 列表/添加/移除/标记服务、DF-bit MTU 路径 ping | 7 |
| 告警管理 | 列出告警、确认、重置 | 3 |
| 分诊与调查(只读,委托给 vmware-monitor) | 一目了然的集群运行状况摘要、以对象为中心的 VM/主机/数据存储深入分析套件、跨 vCenter 的“当前需要关注什么?” | 5 |
| 访问权限 | 当前使用的账户,以及该账户是否拥有每项工具所需的权限 | 1 |
审计与安全
连接 Agent 前请先阅读。各工具清单:references/capabilities.md。
- MCP 默认将写入操作限制为预览。 23 个写入工具——包括所有破坏性工具——除非设置
confirm=True,否则只会返回影响范围;遇到阻止条件或无法读取的测量值时,会拒绝确认。delete_vm还要求提供与预览内容一致的acknowledge_blast_radius。其余 20 个工具(创建、克隆、部署、开机、重新配置)会在首次调用时执行操作。 - 强制执行边界由 vCenter/ESXi RBAC 决定:Agent 可以执行配置账户所能执行的任何操作。请使用专用的最小权限服务账户,并将权限范围限制在 Agent 可修改的对象内(只读角色会使此技能变为只读)。将密码存储在
~/.vmware-aiops/.env(权限设为 0600)或密钥管理器中(VMWARE_<TARGET>_PASSWORD)。 - 仅适用于 CLI:破坏性命令需要二次确认;大多数 CLI 写入操作支持
--dry-run。这两项均不适用于 MCP。 - 策略:每次 MCP 和远程 CLI 调用前,都会检查
~/.vmware/rules.yaml中的拒绝规则和维护时段(例如,拒绝对environment: production目标执行写入操作)。随附的基线策略不会拒绝任何操作。这是进程内防护措施,不能替代 RBAC。 - 审计:每次 MCP 调用都会记录在
~/.vmware/audit.db中,并对凭据进行脱敏(vmware-audit log --last 20)。审计尽力而为:审计写入失败时会发出警告,但不会阻止操作。 - Guest 操作可运行任意命令或写入任意文件,只要 Guest 账户有相应权限——只读 vCenter 角色对此没有限制。必须指定
username(没有默认账户);通过 MCP 操作时,Agent 会看到作为工具参数传入的密码,因此请使用权限最小化的 Guest 账户。upload_vm_guest_file会读取服务器有权读取的任何本地文件。
快速安装
uv tool install vmware-aiops==2.4.2
vmware-aiops doctor
vmware-aiops hub status # see which family members are installed
VMware 系列——按需安装
vmware-aiops 是入口。添加模块以扩展功能:
| 模块 | 安装 | 新增功能 |
|---|---|---|
| vmware-monitor | uv tool install vmware-monitor | 只读清单、告警、事件 |
| vmware-storage | uv tool install vmware-storage | iSCSI、vSAN、数据存储管理 |
| vmware-vks | uv tool install vmware-vks | Tanzu Kubernetes(vSphere 8.x+) |
| vmware-nsx | uv tool install vmware-nsx-mgmt | NSX 网络:网段、网关、NAT |
| vmware-nsx-security | uv tool install vmware-nsx-security | DFW 微分段、安全组 |
| vmware-aria | uv tool install vmware-aria | Aria Ops 指标、警报、容量 |
| vmware-avi | uv tool install vmware-avi | AVI 负载均衡器、ALB、AKO、Ingress |
每个模块彼此独立——工具数量少有助于本地模型(Ollama、Qwen)准确运行。
何时使用此技能
- 启动/关闭、创建、删除、创建快照、克隆或迁移 VM
- 从 OVA、模板、链接克隆或批量规范部署 VM
- 在 VM 内运行命令或传输文件(Guest Operations)
- 创建/配置集群(HA/DRS)
- 浏览数据存储中的可部署映像
- 规划并执行带回滚的多步骤操作
- 列出、确认和清除 vCenter 触发的告警(清除时按实体类型和状态匹配——请参阅 MCP Tools 部分)
以下场景请使用配套技能:
- 清单、运行状况、告警、VM 信息 →
vmware-monitor - iSCSI、vSAN、数据存储管理 →
vmware-storage - Tanzu Kubernetes(Supervisor、Namespace、TKC)→
vmware-vks - 负载均衡、AVI/ALB、AKO、Ingress →
vmware-avi
相关技能 — 技能路由
| 用户意图 | 推荐技能 |
|---|---|
| 只读监控,零风险 | vmware-monitor(uv tool install vmware-monitor) |
| 存储:iSCSI、vSAN、数据存储 | vmware-storage(uv tool install vmware-storage) |
| VM 生命周期、部署、来宾操作 | vmware-aiops ← 此技能 |
| Tanzu Kubernetes(vSphere 8.x+) | vmware-vks(uv tool install vmware-vks) |
| NSX 网络:网段、网关、NAT | vmware-nsx(uv tool install vmware-nsx-mgmt) |
| NSX 安全:DFW 规则、安全组 | vmware-nsx-security(uv tool install vmware-nsx-security) |
| Aria Ops:指标、告警、容量 | vmware-aria(uv tool install vmware-aria) |
| 需要审批的多步骤工作流 | vmware-pilot |
| 合规基线(CIS / 等保 / PCI-DSS)、偏移检测、LLM 修复建议 | vmware-harden(uv tool install vmware-harden) |
| 负载均衡器、AVI、ALB、AKO、Ingress | vmware-avi(uv tool install vmware-avi) |
| 审计日志查询 | vmware-policy(vmware-audit CLI) |
常见工作流
诊断调查:在修复任何“为什么 X 变慢 / 失败 / 宕机”的问题之前,请遵循
references/investigation-protocol.md。该协议要求满足四项根因完整性标准,并进行深入调查循环。只有在满足这四项标准且用户已批准修复计划后,才能调用 L3+ 写入工具。
集群健康排查(“当前出了什么问题?”)
当用户询问“现在有没有紧急故障?”时,从这里开始,然后再深入调查具体 VM。这是委托给 vmware-monitor 的只读汇总结果;此处将其开放出来,以便在一次对话中完成排查后采取行动。
- 一目了然 -->
get_cluster_health_summary(MCP)或vmware-aiops summary(CLI)。先查看top_issues——按优先级排列的异常(主机断开连接、红色 / 黄色告警、容量压力),每项都附有深入排查提示;集群明细表用于提供背景信息 - 根据结果采取行动 -->
host_down行表示调查该主机;告警表示调用acknowledge_vcenter_alarm/reset_vcenter_alarm;若某个繁忙 VM 是问题原因,则调用migrate_vm或reconfigure_vm(遵循调查协议后) - 保存 / 分享快照 -->
vmware-aiops summary --html会写入一个可离线查看、带时间戳的 HTML 文件(使用与 vmware-monitor 相同的渲染器) - 如果未安装 vmware-monitor --> 此命令 / 工具不可用(AIops 将操作委托给它);请安装
vmware-monitor,或使用该技能中针对更深入对象读取的工具
以对象为中心的调查 → 操作(先深入排查,再做任何更改)
判断:分诊定位到问题对象后,先进行一次关联读取,再执行操作——该信息包会将对象与其周边基础设施和近期历史汇总在一起,让你(和操作员)看到全貌,而非凭猜测行事。AIops 是对话式入口,因此分诊 → 调查 → 操作始终在同一段对话中进行。
- 全局范围 -->
get_cross_vcenter_attention(查询所有 vCenter 中“现在有哪些事项需要关注?”)。只配置了一个 vCenter → 跳转到get_cluster_health_summary - 深入检查标记出的对象(提供层级选项;如果对象明确,则跳过提问):
- VM -->
investigate_vm→ 状态、运行所在的主机、集群上下文、后备数据存储、快照、警报与近期更改、性能信号、关联的事件时间线 - 主机 -->
investigate_host;数据存储 -->investigate_datastore
- VM -->
- 然后根据证据采取操作 --> 例如,信息包显示一台卡住的 VM 位于负载过高的主机上 →
migrate_vm;数据存储已满 → 对信息包发现的大量冗余快照执行delete_vm_snapshot。执行任何破坏性操作前,遵循调查协议 - 使用
hours=72扩大时间范围;使用--html渲染离线快照(深入排查部分会原生折叠,不会上传任何内容) - 如果对象名称未知 --> 信息包会返回一条说明如何列出对象的教学式错误;获取准确名称后重试。如果未安装 vmware-monitor --> 这些委派工具不可用
部署实验室环境
预检(基于判断,而非盲目按序执行):
- 可用空间:目标数据存储的剩余空间必须 ≥ OVA 大小 × 2(用于差异文件和精简置备开销)。
- 命名规范:使用日期或所有者作为前缀(
lab-2026-04-30-alice),以便 TTL 清理审计记录清晰明了。 - TTL:始终设置。单次测试会话设为 480 分钟,为期一周的沙盒设为 7200 分钟。绝不要部署未设置 TTL 的“实验室”VM——这会导致数据存储在凌晨 3 点被占满。
- 快照时机:在配置成功后创建基线快照,而不是之前——预配置快照只是一个空检查点。
步骤:
vmware-aiops datastore browse <ds> --pattern "*.ova"→ 确认映像存在及其大小vmware-aiops deploy ova <path> --name <date>-<owner>-<purpose> --datastore <ds>vmware-aiops vm guest-exec <name> --cmd /usr/bin/python3 --args "setup.py" --user admin→ 如果退出码 ≠ 0,停止,不要对尚未完成配置的 VM 创建快照vmware-aiops vm snapshot-create <name> --name baseline(仅在进行多轮迭代测试时执行;一次性测试则跳过)vmware-aiops vm set-ttl <name> --minutes 480
批量克隆用于测试
预检:
- 源 VM 状态:关机最安全。如果 VM 已开机,必须运行 VMware Tools 且支持静默操作,否则克隆可能会有不一致的磁盘状态。
- 容量计算:
free_space ≥ source.size × count × 1.2(完整克隆),或≥ count × 2 GB(链接克隆,仅存储差异数据)。 - 决策规则:数量 > 10 → 使用链接克隆(
deploy linked-clone);每个克隆耗时从数分钟降至数秒,存储空间约减少 100 倍。权衡:链接克隆依赖源快照——删除该快照会导致所有子克隆失效。 - 网络:批量克隆数 > 200 时,可能耗尽 vSphere MAC 地址池。
- TTL:每个克隆都必须设置 TTL。使用计划中的元数据跟踪所有权。
- 权限:
get_access_info(tool="clone_vm")(CLI:vmware-aiops access-info --tool clone_vm)——仅限根文件夹;undetermined不代表已授权。
步骤:
- 使用
create_vm_plan,按 VM 分别将克隆、重新配置和设置 TTL 的步骤分组(每个克隆单独作为原子操作) - 与用户一起审查计划——说明数量、数据存储和不可逆操作警告
- 执行
apply_vm_plan——首次失败时即停止(这是有意设计的,不要自动恢复执行) - 失败时:执行
rollback_vm_plan→ 撤销已完成的克隆;重试前手动确认回滚成功
将 VM 迁移到另一台主机
迁移前检查(执行迁移前必须全部通过):
- CPU 兼容性:目标主机的 CPU 系列必须与源主机相同,或者集群必须处于 EVC 模式。跨不匹配的 CPU 进行实时迁移会在迁移过程中失败,并可能导致 VM 陷入停滞状态。
- 网络一致性:VM 使用的每个端口组都必须存在于目标主机的 vSwitch 上,且 VLAN 相同。缺少端口组 → 迁移后 vNIC 将断开连接。
- 存储可见性:目标主机必须能够访问 VM 的所有数据存储;否则,这属于 Storage vMotion,而非主机迁移——这是另一种操作(速度更慢)。
- 关联性规则:如果 DRS 主机关联性规则将 VM 固定在源主机上,迁移会悄然违背预期。先检查
cluster info。 - 硬件直通:带有 PCI 直通(GPU、USB)的 VM 无法实时迁移——请安排冷迁移时段。
步骤:
- 通过
vmware-monitor vm info <name>验证 VM 状态和当前主机 - 验证目标主机:位于同一集群、EVC 兼容,并具有所需网络和数据存储
- 执行
vmware-aiops vm migrate <name> --to-host <target>——等待任务完成;命令返回并不代表操作成功 - 迁移后检查:
vm info确认主机已更换、开机状态未改变且 vNIC 已连接
使用模式
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 本地/小型模型(Ollama、Qwen) | CLI | 约 2K 个 token,而 MCP 约需 8K 个 |
| 云端模型(Claude、GPT-4o) | 两者皆可 | MCP 可提供结构化 JSON 输入/输出 |
| 自动化流水线 | MCP | 类型安全的参数、结构化输出 |
MCP 工具(61 个——18 个读取,43 个写入)
| 类别 | 工具 | 读/写 |
|---|---|---|
| VM 生命周期(16 个) | list_vm_ttls、list_vm_snapshots、get_vm_task_status | 读取 |
power_on_vm、power_off_vm、create_vm、reconfigure_vm、clone_vm、migrate_vm、delete_vm、create_vm_snapshot、revert_vm_snapshot、delete_vm_snapshot、set_vm_ttl、cancel_vm_ttl、restore_vm_clean_slate | 写入 | |
| 部署(8 个) | deploy_vm_from_ova、deploy_vm_from_template、deploy_linked_clone、attach_iso_to_vm、convert_vm_to_template、batch_clone_vms、batch_linked_clone_vms、batch_deploy_from_spec | 写入 |
| 客户机操作(5 个) | run_vm_guest_command、run_vm_guest_command_with_output、upload_vm_guest_file、download_vm_guest_file、provision_vm_guest | 写入 |
| 计划/应用(4 个) | list_vm_plans | 读取 |
create_vm_plan、apply_vm_plan、rollback_vm_plan | 写入 | |
| 数据存储(2 个) | browse_datastore、scan_all_datastore_images | 读取 |
| 网络(7 个) | list_dvs_portgroups、list_host_vmks、ping_from_vmk | 读取 |
create_dvs_portgroup、add_host_vmk、remove_host_vmk、set_vmk_service | 写入 | |
| 集群(10 个) | get_cluster_info、list_drs_rules | 读取 |
create_cluster、delete_cluster、add_cluster_host、remove_cluster_host、configure_cluster、set_drs_rule_enabled、create_drs_rule、delete_drs_rule | 写入 | |
| 告警管理(3 个) | list_vcenter_alarms | 读取 |
acknowledge_vcenter_alarm、reset_vcenter_alarm | 写入 | |
| 集群诊断(1 个) | get_cluster_health_summary(委托给 vmware-monitor) | 读取 |
| 对象调查(4 个) | investigate_vm、investigate_host、investigate_datastore、get_cross_vcenter_attention(均委托给 vmware-monitor) | 读取 |
| 访问(1 个) | get_access_info | 读取 |
列表封装:读取类列表工具——browse_datastore、list_vcenter_alarms、list_vm_plans、list_vm_snapshots、list_vm_ttls——返回 {items, returned, limit, total, truncated, hint},而非裸数组。从 items 读取行,并在认定列表完整前检查 truncated;items 为空且 truncated: false 表示已检查且无结果,并非失败。写入类 batch_* 工具仍返回裸列表(其结果天然完整)。有关原因、total 的语义和错误格式,请参阅 references/capabilities.md。
读写分离:18 个工具为只读工具(由 [READ] 文档字符串标记),43 个工具会修改状态 — 在 审计与安全 中进行限制。set_vm_ttl 会安排无人值守的自动删除。
网络写入限制:所有四种网络写入操作都需要预览/确认 — confirm=False(默认值)会返回确切的规格,但不会写入。remove_host_vmk 采用故障关闭策略:如果某个 vmk 被选用于主机服务(管理/vMotion/vSAN)、位于非默认网络栈(NSX TEP、专用 vMotion 网络栈)、携带默认网关路由,或无法验证其中任一情况,操作都会被拒绝 — 传入 force_unprotected=True 可覆盖非绝对保护。主机唯一启用了管理功能的 vmk 永远不可移除(无覆盖选项)。set_vmk_service 也采用故障关闭策略:如果无法读取主机的服务映射,则会拒绝两个方向的操作;如果要从主机唯一启用了管理功能的 vmk 上取消标记 management,也会拒绝操作(无覆盖选项)— 此调用依赖于它要取消标记的接口。
DRS 规则限制:set_drs_rule_enabled、create_drs_rule、delete_drs_rule 需要预览/确认,并且具备幂等性(状态匹配时会返回不写入的空操作)。create_drs_rule 仅处理 VM-VM 关联/反关联规则(至少 2 个不同的 VM,且都属于该集群);可通过 list_drs_rules 读取 VM-Host 规则,但需在 vSphere UI 中管理。delete_drs_rule 拒绝非 VM-VM 规则(这些规则可能包含许可/合规性放置约束),并会在预览和结果中记录完整规则定义,以便在误删时从审计记录中重新创建。
重置警报的影响范围:vSphere 没有针对单个警报的清除 API。reset_vcenter_alarm 使用 AlarmManager.ClearTriggeredAlarms,会清除所有与指定警报的实体类型(主机/VM/全部)和当前状态(红色/黄色)匹配的已触发警报 — 不只是指定的那个。直接调用 MCP 时会预览将要清除的所有警报(blast_radius.will_clear);设置 confirm=True 后会清除警报,并由 scope 报告范围。名称拼写错误会立即失败,不会清除任何内容。
CLI 快速参考
# VM operations
vmware-aiops vm power-on <name> [--target <t>]
vmware-aiops vm power-off <name> [--force]
vmware-aiops vm create <name> --cpu 4 --memory 8192 --disk 100
vmware-aiops vm delete <name>
vmware-aiops vm clone <name> --new-name <new> [--to-host <host>] [--to-datastore <ds>] [--power-on]
vmware-aiops vm migrate <name> --to-host <host> [--to-datastore <ds>]
vmware-aiops vm snapshot-create <name> --name <snap> [--description <text>] [--memory]
vmware-aiops vm snapshot-list <name>
vmware-aiops vm snapshot-revert <name> --name <snap>
vmware-aiops vm snapshot-delete <name> --name <snap> [--remove-children] [--no-wait]
vmware-aiops vm task-status <task-id> # poll an async (--no-wait) operation by id
vmware-aiops vm set-ttl <name> --minutes 480 [--dry-run] # double confirm; daemon auto-deletes VM on expiry
# Guest operations (requires VMware Tools)
vmware-aiops vm guest-exec <name> --cmd <script-path> --args "<args>" --user <username>
vmware-aiops vm guest-upload <name> --local ./script.sh --guest /tmp/script.sh --user <username>
# Deploy
vmware-aiops deploy ova <path> --name <vm> --datastore <ds>
vmware-aiops deploy linked-clone --source <vm> --snapshot <snap> --name <new>
# Cluster
vmware-aiops cluster create <name> --ha --drs
vmware-aiops cluster info <name>
vmware-aiops cluster drs-rules <name> # list DRS rules
vmware-aiops cluster drs-rule-set <name> --rule <r> --enable|--disable [--dry-run]
vmware-aiops cluster drs-rule-create <name> --rule <r> --type antiAffinity --vm <vm1> --vm <vm2> [--disabled] [--dry-run]
vmware-aiops cluster drs-rule-delete <name> --rule <r> [--dry-run] # VM-VM only; double confirm
# Datastore
vmware-aiops datastore browse <ds> --pattern "*.ova"
# Alarm management
vmware-aiops alarm list [--target <t>]
vmware-aiops alarm acknowledge <entity_name> <alarm_name> [--target <t>]
vmware-aiops alarm reset <entity_name> <alarm_name> [--target <t>] # double confirm; see blast radius above
# Family
vmware-aiops hub status # show installed family members + install commands
完整 CLI 参考:请参阅
references/cli-reference.md
故障排查
出现“找不到 VM”错误
vSphere 中的 VM 名称区分大小写。请使用 vmware-monitor inventory vms 中的准确名称。
客户机执行返回空输出
请使用 run_vm_guest_command_with_output,而不是 run_vm_guest_command — 前者会自动捕获 stdout/stderr。基本的 run_vm_guest_command 只返回退出代码。
部署 OVA 超时
大型 OVA 文件(>10GB)可能超过默认的 120s 超时。上传通过 HTTP NFC 租约进行 — 请确保运行 vmware-aiops 的机器与 ESXi 之间的网络稳定。
删除快照很慢/“运行 Ns 后仍在运行”
删除大型快照时会合并其差异磁盘,通常需要几分钟。vm snapshot-delete 最多等待 30 min;出现“仍在运行,并非失败”并带有任务 ID 的消息,表示删除并未失败 — 请轮询 vm task-status <task-id>;不要重新执行。对于大型快照,请使用 vm snapshot-delete <name> --name <snap> --no-wait 并轮询。
应用计划时中途失败
运行 vmware-aiops plan list 查看失败的计划状态。询问用户是否要使用 rollback_vm_plan 回滚。回滚期间会跳过不可逆步骤(delete_vm)。
连接被拒绝/SSL 错误
- 验证目标是否可访问:
vmware-aiops doctor - 对于自签名证书:在 config.yaml 中设置
verify_ssl: false(仅限实验室环境)
每条命令都因“会话未通过身份验证”而失败
该账户没有 vSphere 角色。请在 vCenter 根文件夹上为其分配一个角色(只读或更高权限);vmware-aiops doctor 会明确报告此情况。
设置
uv tool install vmware-aiops==2.4.2
mkdir -p ~/.vmware-aiops
vmware-aiops init # generates config.yaml and .env templates
chmod 600 ~/.vmware-aiops/.env
完整设置指南、安全详情和 AI 平台兼容性:请参阅
references/setup-guide.md