Rack-auto 裸金属服务器自动化工具
把机房里的服务器从「按开机键、插 U 盘」变成「网页里点一下」。控制面跑在 Linux 上,待装机机器 PXE 启动:Linux 走内存里的Linux RAMOS,Windows Server 走 WinPE。
官方仓库:Songxwn/Rack-auto · 下载 Release

本文只走 推荐路径:GitHub Release 二进制 + /opt/rackauto + systemd。不要在控制面上 go build。
你需要这些
| 准备 | 说明 |
|---|---|
| 一台 Linux 控制面 | 绑定 UDP 67 / 69。Windows 电脑只能看网页,不要当 PXE 服务器。 |
| 一块装机网 | 控制面和待装机服务器同一交换机 / 同一 VLAN。 |
| 出网一次 | 第一次 bootstrap 会缓存 Ubuntu live-server ISO(约 2.7GB)。 |
| 待装机机器内存 | 建议 ≥ 4GB。 |
| 控制面磁盘 | RAMOS 大约 5GB,再加上你要存的系统镜像。 |
public_url 必须填 待装机服务器能访问的地址,不要填 127.0.0.1。机器 PXE 起来后,是它自己来拉内核和镜像的。
同一二层不要跑两套 DHCP。实验室空网段用内置 DHCP;机房已有 DHCP 就只改引导文件。
0. 安装基础依赖
1 |
|
1. 安装控制面
x86_64 示例。ARM 控制面把下面的 amd64 换成 arm64,Agent 目录换成 aarch64。
1 | sudo mkdir -p /opt/rackauto/{bin,configs,deploy,data/agent/x86_64} |
Release 包里没有配置文件。从仓库拉三份即可,不必 clone:
1 | VER=main |
2. 改两行配置
1 | ip -br a |
至少改这几项(IP 换成你装机网网卡上的地址):
1 | listen: ":8080" |
public_url:装机网上的控制面,带端口。api_token:给 RAMOS Agent 用,不是网页登录密码。dhcp.enabled可以先保持false,一会儿在网页里开。
3. 准备引导文件(只需一次)
1 | sudo /opt/rackauto/bin/rackauto bootstrap \ |
这一步会:
- 把内置 iPXE 写到 TFTP 目录(BIOS:
undionly.kpxe,UEFI:ipxe.efi) - 下载 Ubuntu 26.04 live-server ISO 到控制面(机器不会去拉这 2.7GB)
- 打一份较小的
casper.iso,PXE 时只拉这一份进内存
国内想钉镜像源,在 YAML 里加:
1 | bootstrap: |
已经有 ISO 时填 ubuntu_iso: "/path/to/ubuntu-26.04-live-server-amd64.iso",会跳过下载。
4. 开机长期跑
1 | sudo cp /opt/rackauto/deploy/rackauto.service /etc/systemd/system/ |
防火墙(内置 DHCP 时 UDP 67 也要开):
1 | # firewalld |
浏览器打开 http://10.0.0.50:8080(换成你的 IP)。
- 默认账号 admin / admin,进去后点右上角「账号」立刻改掉。
- 登录页右上角可切 中文 / English。
- 左下角变成
CTRL // ONLINE就对了。 - PXE、iPXE、Agent 不走这套网页登录。
5. 打开 DHCP
进控制台 08 网络引导。上面的 Public URL 必须和 public_url 一致。
实验室(交换机上没有别的 DHCP)
- 勾选「启用内置 DHCP」
- 接入网卡选连装机交换机的那块,不要选上网网卡
- 网段、地址池会自动填,避开控制面自己的 IP
- 点「保存并应用」,状态变成「运行中」
机房已有 DHCP
不要开内置。把现有 DHCP 的 next-server 指到控制面。页面底部有可复制的 dhcpd / dnsmasq 片段,大意是:
- 传统 BIOS →
undionly.kpxe - UEFI →
ipxe.efi - 已经是 iPXE →
boot.ipxe
6. 装一台 Linux
磁盘会被清空。第一次用可以重装的机器。
登记机器
有 BMC:在「机器」里填名称、PXE 网卡 MAC、固件(UEFI 或 BIOS)、IPMI/Redfish 地址。之后可以用网页开机、PXE 重启。
没有 BMC:到机柜把下次启动改成网卡 PXE,直接开机。进 RAMOS 后 Agent 会报到,列表里会出现这台机器。
准备镜像
打开「镜像」,先选系统和版本(Ubuntu / Debian / Rocky 等)。
- 最快:登记 Ubuntu cloud 镜像 URL,类型选「云镜像(整盘 qcow2/raw)」
例如https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img - 内网:把 qcow2 / raw 上传到控制面,机器会从
public_url拉取。 - 点「检测」,确认引导列能对上你要选的 UEFI 或 BIOS。
待装机机器也要能访问这个 URL。访问不了就用上传,不要填外网地址。
装机向导
打开「装机」,三步:
- 选机器和镜像,固件、主机名、时区。
- 用户(默认
root)、密码、SSH 公钥。常用账号可先在「模板」里存好,这里点一下就填入。 - 目标磁盘、网卡(DHCP 或静态)。整盘云镜像会保留镜像里的分区,并自动把根分区扩满磁盘。
有 BMC 可勾选「同时 BMC PXE 重启」。到「任务」看进度。成功后机器会切回本地硬盘启动。
装完后的物理网卡按 MAC 绑定,名字是 nic0 / nic1,不是 RAMOS 里的 ens3。
7. 装 Windows Server(2019 / 2022 / 2025)
和 Linux 完全不是一条路。不要登记成 qcow2,也不要指望 RAMOS 去写 Windows 盘。只支持 x86_64。
- 「镜像」选 Windows Server,对应年份。
- 类型选 Windows Server ISO,把微软官方 ISO 上传到控制面(必须能抽出
boot.wim)。 - 点「检测」,应看到 Standard / Datacenter 等 edition。
- 「装机」里用户默认
Administrator,密码必填。没有 SSH。不要画 Linux 分区,不要 Bond / VLAN。 - 第 3 步选 WIM 版本(默认偏带桌面的 Standard)、磁盘、DHCP 或装完后的静态 IP。
- 下发后这台 MAC 下次 PXE 会进 Windows PE,而不是 Ubuntu。
WinPE 下载 install.wim 时必须有 DHCP。静态 IP 只在装完后按 MAC 写入。磁盘没把握时选「磁盘 0」,选错会清错盘。主机名最长 15 个英文字符。
8. 升级(只覆盖两个文件)
不要动配置、数据库和镜像。
1 | cd /tmp |
浏览器强刷控制台,左下角版本应变成新 tag。已经停在旧 RAMOS 里的机器,要再 PXE 一次才会拿到新 Agent。一般不必重跑 bootstrap。
卡住了
| 现象 | 先查 |
|---|---|
| 网页打不开 | systemctl status rackauto,防火墙 8080 |
| 左下角不是 ONLINE | 配置路径、是否用 root 起的服务 |
| PXE 没反应 | 是否和 DHCP 同一二层;内置 DHCP 是否绑错网卡 |
| 紫屏 Kernel panic | 用 v0.4.2+,再跑一次 bootstrap,机器内存 ≥ 4GB |
| 进了 Ubuntu 语言选择界面 | 用 v0.4.4+ 后重新 PXE |
| 进了 RAMOS 但列表没有机器 | Agent 没报到:public_url 不通,或 api_token 不一致 |
| 镜像下不下来 | 改成上传到控制面 |
| Windows 进了 Ubuntu | 任务还在等待 WinPE;控制面要够新 |
| WinPE 起来了但 WIM 下不完 | 装机网要有 DHCP,ISO 必须在控制面本地 |
更细的排错、自制 KVM 镜像、Docker,看仓库里的 部署教程。
一些官方qcow2镜像下载
Debian:https://cloud.debian.org/images/cloud/
运维技术交流群
发送邮件到 ➡️ [email protected]
或者关注WX公众号:网工格物
