网页、命令行和 API
一个程序,没有数据库
虚拟机的状态就是它的 ZFS 数据集和 config.json,没有别的东西需要同步。管理程序停了、重启了,虚拟机照跑;它起来后从文件系统重新读出一切。
网页
- 概览、虚拟机、存储、网络、日志、系统几页,支持中文、英文和日文。
- 浏览器里有串口控制台(xterm.js)和图形控制台(noVNC);串口可以几个人同时看,一个人输入。
- 新建虚拟机走向导,从系统模板开始:Windows、Linux、路由系统、BIOS 启动的老 Windows。
- ISO 镜像可以上传,也可以让宿主自己从网址下载。
- 运行中的虚拟机改设置:名字、随宿主启动和 RDP 密码马上生效,其余的在虚拟机下次重启时生效,和 Proxmox 一样。
- 存储页里建存储池;网络页探测每个网口上有哪些 VLAN 和子网。
API、令牌和审计
API 是 HTTPS 加 JSON,有 OpenAPI 描述。令牌可以限定范围:
- 操作 × 哪些虚拟机(全部、列表、按标签)× 来源地址 × 有效期;
- 令牌范围以外的虚拟机,回答就像它不存在;
- 令牌只能发出比自己范围小的令牌;
- 删除是单独的权限,还要以虚拟机的名字确认。
每个写请求都记进审计日志,被拒绝的也记:时间、令牌、来源地址、操作、对象、结果。在宿主本机上,命令行走本地 socket,不需要令牌。
还没做的
- 多台宿主在一处统一管理:在计划中,还没做。
- 只限部分虚拟机或标签的令牌要在命令行里建;网页上有管理员、只读、操作员三种预设。
- API 的事件流还没做。