Help us improve
Share bugs, ideas, or general feedback.
From software-release-downloader
在 ESXI 服务器上创建虚拟机。当用户提到以下内容时必须使用此 skill:创建虚拟机、新建虚拟机、开一台虚拟机、开一台服务器、创建 VM、新建 VM、开一台 VM、ESXI 创建、虚拟机克隆、模板克隆、部署虚拟机、开通服务器、创建 Linux 服务器、CentOS 虚拟机、RockyLinux 虚拟机。即使是模糊表达如"帮我开台机器"、"需要新服务器"、"要台机器"、"开个虚拟环境"也应该触发。
npx claudepluginhub lpx0312/myai-plugins --plugin wake-on-lanHow this skill is triggered — by the user, by Claude, or both
Slash command
/software-release-downloader:esxi-vm-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
通过 Jenkins API 在 ESXI 服务器(192.168.0.3 或 192.168.0.200)上创建 Linux 虚拟机。
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
通过 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 任务并等待) "虚拟机创建成功!
虚拟机已自动开机并创建快照。"