虚拟机创建 API
VergeOS 中创建虚拟机的完整指南,包括基本创建、基于模板的配置、磁盘、设备和网络接口。
本指南介绍如何在 VergeOS 中创建虚拟机,从基础 VM 创建到添加磁盘、设备和网络接口。VergeOS API 为 VM 创建和硬件配置提供了全面的端点。
阶段:VM 创建(第 1 部分,共 4 部分) 输入:API 凭据、集群信息、VM 规格 输出:VM 键(42)+ Machine 键(54) 下一步:使用键进行电源管理 常见下一步:
本文档适用于
“如何通过 API 创建 VM”
“在 VM 设置期间添加磁盘”
“将 GPU/PCI 设备连接到 VM”
“使用 cloud-init 创建 VM”
“理解 VM 与机器键”
“为新 VM 设置网络接口”
“基于配方的 VM 部署”
“批量 VM 创建自动化”
“以代码形式管理基础设施的 VM 部署”
快速参考
主要端点
创建 VM:
POST /api/v4/vms添加磁盘:
POST /api/v4/machine_drives添加设备:
POST /api/v4/machine_devices添加 NIC:
POST /api/v4/machine_nics
关键参数
name:VM 标识符(必填)cluster:目标集群 IDmachine:VM 创建时返回的 Machine ID(用于添加硬件)resource_group:设备直通的 UUID
身份验证
下一步
VM 创建后 → 电源管理(VM 电源管理)
API 快速参考
创建 VM
POST
/api/v4/vms
返回两者
初始创建
添加磁盘
POST
/api/v4/machine_drives
Machine 键
硬件
添加设备
POST
/api/v4/machine_devices
Machine 键
GPU/PCI 直通
添加 NIC
POST
/api/v4/machine_nics
Machine 键
网络接口
开机
POST
/api/v4/vm_actions
VM 键
控制
检查状态
GET
/api/v4/machine_status/{id}
Machine 键
监控
故障排查索引
409 冲突:VM 名称已存在、已在运行、权限被拒绝
400 错误请求:参数无效、缺少必需字段、JSON 无效
507 存储空间不足:层已满、减小大小、选择其他层
403 禁止访问:API 密钥权限不足、集群访问被拒绝
404 未找到:集群 ID 无效、缺少媒体源、资源组无效
422 无法处理的实体:磁盘接口无效、不支持的媒体类型
前提条件
具有 VM 管理权限的有效 VergeOS API 凭据
了解 VergeOS 概念:集群、vnet、媒体源和资源组
具备 REST API 原理和 JSON 格式的基础知识
身份验证
所有 VM 创建操作都需要使用以下任一方式进行身份验证:
API 密钥:包含在
Authorization标头中,作为Bearer YOUR_API_KEY基本身份验证:交互式会话的用户名和密码
会话令牌:用于基于 Web 的集成
基础 VM 创建
POST /api/v4/vms
说明:使用指定配置创建新的虚拟机。
请求参数:
name
字符串
是
唯一的 VM 名称
description
字符串
否
VM 描述
cluster
字符串
否
目标集群 ID(数字字符串)
ram
整数
否
RAM(MB,默认值:1024)
cpu_cores
整数
否
CPU 核心数(默认值:1)
guest_agent
字符串
否
启用 guest agent("true"/"false")
console_pass_hash
字符串
否
控制台密码哈希(未使用时为空字符串)
video
字符串
否
视频适配器类型(virtio、std、cirrus 等)
rtc_base
字符串
否
RTC 基准设置(utc、localtime)
uefi
字符串
否
启用 UEFI 启动("true"/"false")
请求体示例:
响应示例:
响应字段:
location
字符串
已创建 VM 的 API 端点
dbpath
字符串
VM 记录的数据库路径
$row
整数
数据库行号
$key
字符串
VM ID(用于后续 API 调用)
response.machine
字符串
Machine ID(用于磁盘、NIC、设备)
错误响应:
400 错误请求:配置参数无效409 冲突:VM 名称已存在403 禁止访问:权限不足
VM 键与 Machine 键
VM 键 (例如“42”):用于 CPU、RAM、控制台等 VM 设置
Machine 键 (例如“54”):用于磁盘、NIC、设备等硬件
在 VM 创建响应中可以同时获得这两个键
基于配方的 VM 创建
VergeOS 支持使用包含磁盘、网络接口和设备的配方来创建复杂 VM。
使用配方配置的完整 VM
添加磁盘
必须在 VM 创建后使用 machine drives 端点单独创建磁盘。
POST /api/v4/machine_drives
请求参数:
machine
字符串
是
VM 创建时返回的 Machine ID
name
字符串
否
磁盘名称
media
字符串
否
媒体类型(disk、cdrom、import、clone、efidisk)
interface
字符串
否
磁盘接口(virtio-scsi、ide、ahci 等)
disksize
整数
否
磁盘大小(字节,用于新磁盘)
preferred_tier
字符串
否
存储层(1-5)
media_source
字符串
否
源媒体 ID(用于 import/clone/cdrom)
show_pt
字符串
否
覆盖首选层("true"/"false")- 覆盖媒体源的默认层
创建启动磁盘
响应示例:
挂载 CDROM/ISO
响应示例:
从媒体源导入
添加设备(GPU、PCI 直通等)
POST /api/v4/machine_devices
说明:将 GPU、PCI 设备、USB 设备或 TPM 等硬件设备连接到虚拟机。
请求参数:
machine
字符串
是
Machine ID
resource_group
字符串
是
该设备的资源组 UUID
settings_args
对象
否
设备特定设置(基本直通时为空对象)
PCI 直通 GPU
响应示例:
查找资源组
该 resource_group 参数用于标识要连接的具体硬件设备。使用这些端点查找可用的资源组 UUID:
GET /api/v4/resource_groups- 通用硬件设备(GPU、PCI 设备、USB 等)GET /api/v4/node_nvidia_vgpu_devices- 专门用于 NVIDIA vGPU 设备
查找可用设备
添加网络接口
POST /api/v4/machine_nics
请求参数:
machine
字符串
是
Machine ID
vnet
字符串
是
虚拟网络 ID(目标网络的键)
name
字符串
否
NIC 名称
interface
字符串
否
NIC 接口类型(virtio、e1000 等)
enabled
布尔值
否
NIC 启用状态
示例:
响应示例:
完整 VM 创建示例
下面是一个创建带有磁盘、设备和网络接口的 VM 的完整工作流:
最后更新于
这有帮助吗?