From myai-tools
在 ESXI 服务器上创建虚拟机。当用户提到以下内容时必须使用此 skill:创建虚拟机、新建虚拟机、开一台虚拟机、开一台服务器、创建 VM、新建 VM、开一台 VM、ESXI 创建、虚拟机克隆、模板克隆、部署虚拟机、开通服务器、创建 Linux 服务器、CentOS 虚拟机、RockyLinux 虚拟机。即使是模糊表达如"帮我开台机器"、"需要新服务器"、"要台机器"、"开个虚拟环境"也应该触发。
npx claudepluginhub lpx0312/myai-plugins --plugin myai-toolsThis skill uses the workspace's default tool permissions.
通过 Jenkins API 在 ESXI 服务器(192.168.0.3 或 192.168.0.200)上创建 Linux 虚拟机。
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
通过 Jenkins API 在 ESXI 服务器(192.168.0.3 或 192.168.0.200)上创建 Linux 虚拟机。
当用户想要创建新的虚拟机时,无论用词如何,都应该使用这个 skill:
检查 ESXI → 选择服务器 → 收集参数 → 检查 IP → 提交 Jenkins → 等待完成
| 参数 | 示例 |
|---|---|
| 主机名 | app01 |
| 内网 IP | 10.0.1.151 或简写 1.151 |
| 外网 IP | 192.168.1.151 (双网卡模板需要) |
与用户交互时,按照以下顺序收集参数:
用户请求
↓
检查 ESXI 连通性 (check_esxi.py)
↓
确定使用哪台 ESXI
↓
收集 VM 参数 (主机名、IP、规格等)
↓
检查 IP 冲突 (check_ip.py)
↓
生成 YAML 配置
↓
提交到 Jenkins (esxi_vm_creator.py)
↓
等待完成并返回结果
python ~/.claude/skills/esxi-vm-creator/check_esxi.py
输出示例:
{"192.168.0.3": true, "192.168.0.200": false}
| 检查结果 | 操作 |
|---|---|
| 只有 192.168.0.3 可达 | 自动选择 ESXI-3 |
| 只有 192.168.0.200 可达 | 自动选择 ESXI-200 |
| 两台都可达 | 询问用户选择哪一台 |
| 两台都不可达 | 报错,让用户检查网络 |
询问模板:
检测到两台 ESXI 服务器都可用:
- ESXI-3 (192.168.0.3) - 始终在线
- ESXI-200 (192.168.0.200) - 按需启动
请问使用哪一台创建虚拟机?
| 参数 | 说明 | 示例 | 询问方式 |
|---|---|---|---|
host_name | 虚拟机主机名 | app01 | "虚拟机叫什么名字?" |
ip_addr_eth0 | 内网网卡 IP (10.0.0.0/22) | 10.0.1.151 | "内网 IP 地址是多少?" |
ip_addr_eth1 | 外网网卡 IP (192.168.0.0/22) | 192.168.1.151 | "外网 IP 地址是多少?" |
用户输入格式 → 解析结果
| 输入 | eth0 (内网) | eth1 (外网) |
|---|---|---|
1.190 | 10.0.1.190 | 192.168.1.190 |
2.50 | 10.0.2.50 | 192.168.2.50 |
3.100 | 10.0.3.100 | 192.168.3.100 |
1.151-155 | 创建 5 台 VM,IP 递增 | 同 eth0 |
IP 范围说明:
10.0.0.1 - 10.0.3.254 (约 1022 个可用 IP)192.168.0.1 - 192.168.3.254 (约 1022 个可用 IP)<网段>.<主机号> → 自动展开为两个 IP| 参数 | 默认值 | 说明 |
|---|---|---|
Template_type | C72 | 模板代码 |
data_name_virtual | FX2T | 存储位置 (datastore1/FX2T) |
CPU_ALL_NUM | 1 | CPU 总数 |
CPU_ONE_NUM | 1 | 单 CPU 核心数 |
memSize | 2048 | 内存 (MB) |
Power_on | True | 创建后自动开机 |
Snapshot_on | True | 创建后自动快照 |
SECOND_DISK_SIZE | 0 | 第二块硬盘 (GB),0=不需要 |
| 简写 | CPU | 内存 |
|---|---|---|
| 1c2g | 1核 | 2GB |
| 2c4g | 2核 | 4GB |
| 4c8g | 4核 | 8GB |
| 8c16g | 8核 | 16GB |
# 单个 IP
python ~/.claude/skills/esxi-vm-creator/check_ip.py --ip 192.168.1.190
# 多个 IP
python ~/.claude/skills/esxi-vm-creator/check_ip.py --ips 192.168.1.190,192.168.1.191
输出:
{"ip": "192.168.1.190", "in_use": false, "method": "none"}
如果 in_use 为 true,告知用户并建议更换。
# 同步模式(等待完成)
python ~/.claude/skills/esxi-vm-creator/esxi_vm_creator.py --esxi 192.168.0.3 --yaml "..."
# 异步模式(触发后立即返回)
python ~/.claude/skills/esxi-vm-creator/esxi_vm_creator.py --esxi 192.168.0.3 --yaml "..." --async
单个虚拟机:
- host_name: app01
ip_addr_eth0: 10.0.1.151
ip_addr_eth1: 192.168.1.151
Template_type: C72
data_name_virtual: FX2T
Power_on: True
Snapshot_on: True
CPU_ALL_NUM: 1
CPU_ONE_NUM: 1
memSize: 2048
SECOND_DISK_SIZE: 0
| 需求 | 推荐模板 | 说明 |
|---|---|---|
| 通用服务器 | C72 | CentOS 7.9 双网卡,最稳定 |
| 新项目 | R82 | RockyLinux 8 双网卡,更新 |
| 内网only | C71/R81 | 单网卡,更安全 |
| 需要桌面 | C72GUI/R82GUI | 带图形界面 |
| 代码 | 操作系统 | 网卡 | GUI | 推荐用途 |
|---|---|---|---|---|
| C71 | CentOS 7.9 | 单网卡 | 否 | 内网服务 |
| C72 | CentOS 7.9 | 双网卡 | 否 | 通用服务器(推荐) |
| C71GUI | CentOS 7.9 | 单网卡 | 是 | 内网开发环境 |
| C72GUI | CentOS 7.9 | 双网卡 | 是 | 开发环境 |
| C81 | CentOS 8.3 | 单网卡 | 否 | 内网服务 |
| C82 | CentOS 8.3 | 双网卡 | 否 | 通用服务器 |
| C81GUI | CentOS 8.3 | 单网卡 | 是 | 内网开发环境 |
| C82GUI | CentOS 8.3 | 双网卡 | 是 | 开发环境 |
| R81 | RockyLinux 8 | 单网卡 | 否 | 内网服务 |
| R82 | RockyLinux 8 | 双网卡 | 否 | 通用服务器(推荐) |
| R81GUI | RockyLinux 8 | 单网卡 | 是 | 内网开发环境 |
| R82GUI | RockyLinux 8 | 双网卡 | 是 | 开发环境 |
如果使用了异步模式,后续可以检查构建状态:
# 检查构建状态
python ~/.claude/skills/esxi-vm-creator/esxi_vm_creator.py \
--status \
--queue-url "http://192.168.0.11:8080/queue/item/69/" \
--esxi 192.168.0.3
状态返回:
queued: 还在队列中等待building: 正在构建中completed: 构建完成,检查 success 字段cancelled: 构建被取消{
"success": true,
"mode": "sync",
"esxi": "192.168.0.3",
"job": "ESXI_clone_multi",
"build_number": 71,
"build_url": "http://192.168.0.11:8080/job/ESXI_clone_multi/71/",
"duration": 80,
"queue_url": "http://192.168.0.11:8080/queue/item/69/"
}
{
"success": false,
"error": "build_failed",
"build_number": 72,
"build_url": "http://192.168.0.11:8080/job/ESXI_clone_multi/72/",
"console_tail": ["ERROR: ...", "Build failed"]
}
查看完整日志:访问 build_url 并点击 "Console Output"
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 构建失败 |
| 2 | 参数错误 |
| 3 | 网络错误 |
| 4 | 超时 |
| 错误 | 原因 | 解决方案 |
|---|---|---|
auth_failed | API Token 无效 | 检查 esxi_vm_creator.py 中的 TOKENS 配置 |
invalid_esxi | ESXI IP 不正确 | 使用 192.168.0.3 或 192.168.0.200 |
queue_timeout | 构建未在 5 分钟内开始 | 检查 Jenkins 是否正常运行 |
timeout | 构建超过 20 分钟 | 检查 ESXI 存储空间和网络 |
network_error | 无法连接 Jenkins | 检查网络和 Jenkins 服务 |
| 问题 | 解决方案 |
|---|---|
| IP 冲突 | 使用其他 IP 地址 |
| ESXI-200 无法连接 | 先启动 192.168.0.200 |
| 模板不存在 | 检查模板代码 |
| 存储空间不足 | 更换 data_name_virtual 或清理空间 |
| 两台 ESXI 都不可达 | 检查网络连接 |
| API Token 无效 | 检查脚本中的 TOKENS 配置 |
| 服务器 | IP 地址 | 版本 | 状态 |
|---|---|---|---|
| ESXI-3 | 192.168.0.3 | ESXI 6.7 | 始终在线 |
| ESXI-200 | 192.168.0.200 | ESXI 6.7 | 按需启动 |
用户: "帮我开一台虚拟机"
AI: "好的,我来帮你创建虚拟机。首先让我检查一下 ESXI 服务器的状态。" (运行 check_esxi.py)
AI: "检测到 ESXI-3 (192.168.0.3) 可用。现在请告诉我:
用户: "名字叫 test-vm01,IP 用 1.200,规格用 2核4G"
AI: "好的,让我检查一下 IP 是否可用。" (运行 check_ip.py)
AI: "IP 10.0.1.200 和 192.168.1.200 都可用。我将为你创建:
确认创建吗?"
用户: "确认"
AI: (提交 Jenkins 任务并等待) "虚拟机创建成功!
虚拟机已自动开机并创建快照。"