把机房里的服务器从「按开机键、插 U 盘」变成「网页里点一下」。控制面跑在 Linux 上,待装机机器 PXE 启动:Linux 走内存里的Linux RAMOS,Windows Server 走 WinPE。

官方仓库:Songxwn/Rack-auto · 下载 Release

Rack-auto 控制台

本文只走 推荐路径: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
2
3

apt install nano git sudo curl -y

1. 安装控制面

x86_64 示例。ARM 控制面把下面的 amd64 换成 arm64,Agent 目录换成 aarch64

1
2
3
4
5
6
7
8
9
10
11
12
sudo mkdir -p /opt/rackauto/{bin,configs,deploy,data/agent/x86_64}
cd /tmp
curl -fLO https://github.com/Songxwn/Rack-auto/releases/latest/download/rackauto-linux-amd64.tar.gz
tar -tzf rackauto-linux-amd64.tar.gz

CTRL=$(ls -1 rackauto rackauto-linux-amd64 2>/dev/null | head -n1)
AGENT=$(ls -1 rackauto-agent rackauto-agent-linux-amd64 2>/dev/null | head -n1)
sudo install -m 0755 "$CTRL" /opt/rackauto/bin/rackauto
sudo install -m 0755 "$AGENT" /opt/rackauto/data/agent/x86_64/rackauto-agent

cd /opt/rackauto/

Release 包里没有配置文件。从仓库拉三份即可,不必 clone:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
VER=main
RAW="https://raw.githubusercontent.com/Songxwn/Rack-auto/${VER}"
# 若 raw.githubusercontent.com 打不开,改用:
# RAW="https://cdn.jsdelivr.net/gh/Songxwn/Rack-auto@${VER}"

tmp=$(mktemp)
curl -fL -o "$tmp" "$RAW/configs/rackauto.example.yaml"
sudo install -m 0644 "$tmp" /opt/rackauto/configs/rackauto.example.yaml
sudo test -f /opt/rackauto/configs/rackauto.yaml \
|| sudo cp /opt/rackauto/configs/rackauto.example.yaml /opt/rackauto/configs/rackauto.yaml

curl -fL -o "$tmp" "$RAW/deploy/rackauto.service"
sudo install -m 0644 "$tmp" /opt/rackauto/deploy/rackauto.service
rm -f "$tmp"

2. 改两行配置

1
2
ip -br a
sudo nano /opt/rackauto/configs/rackauto.yaml

至少改这几项(IP 换成你装机网网卡上的地址):

1
2
3
4
5
listen: ":8080"
public_url: "http://10.0.0.50:8080"
data_dir: "/opt/rackauto/data"
api_token: "请换成一段随机字符串"
tftp_listen: ":69"
  • public_url:装机网上的控制面,带端口。
  • api_token:给 RAMOS Agent 用,不是网页登录密码。
  • dhcp.enabled 可以先保持 false,一会儿在网页里开。

3. 准备引导文件(只需一次)

1
2
3
sudo /opt/rackauto/bin/rackauto bootstrap \
-config /opt/rackauto/configs/rackauto.yaml \
-data-dir /opt/rackauto/data

这一步会:

  1. 把内置 iPXE 写到 TFTP 目录(BIOS:undionly.kpxe,UEFI:ipxe.efi
  2. 下载 Ubuntu 26.04 live-server ISO 到控制面(机器不会去拉这 2.7GB)
  3. 打一份较小的 casper.iso,PXE 时只拉这一份进内存

国内想钉镜像源,在 YAML 里加:

1
2
3
bootstrap:
ubuntu_release: "26.04"
ubuntu_mirror: "https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases"

已经有 ISO 时填 ubuntu_iso: "/path/to/ubuntu-26.04-live-server-amd64.iso",会跳过下载。

4. 开机长期跑

1
2
3
4
sudo cp /opt/rackauto/deploy/rackauto.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now rackauto
curl -sS http://127.0.0.1:8080/api/v1/health

防火墙(内置 DHCP 时 UDP 67 也要开):

1
2
3
4
5
6
7
8
# firewalld
sudo firewall-cmd --add-port=8080/tcp --add-port=69/udp --add-port=67/udp --permanent
sudo firewall-cmd --reload

# ufw
sudo ufw allow 8080/tcp
sudo ufw allow 69/udp
sudo ufw allow 67/udp

浏览器打开 http://10.0.0.50:8080(换成你的 IP)。

  • 默认账号 admin / admin,进去后点右上角「账号」立刻改掉。
  • 登录页右上角可切 中文 / English
  • 左下角变成 CTRL // ONLINE 就对了。
  • PXE、iPXE、Agent 不走这套网页登录。

5. 打开 DHCP

进控制台 08 网络引导。上面的 Public URL 必须和 public_url 一致。

实验室(交换机上没有别的 DHCP)

  1. 勾选「启用内置 DHCP」
  2. 接入网卡选连装机交换机的那块,不要选上网网卡
  3. 网段、地址池会自动填,避开控制面自己的 IP
  4. 点「保存并应用」,状态变成「运行中」

机房已有 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。访问不了就用上传,不要填外网地址。

装机向导

打开「装机」,三步:

  1. 选机器和镜像,固件、主机名、时区。
  2. 用户(默认 root)、密码、SSH 公钥。常用账号可先在「模板」里存好,这里点一下就填入。
  3. 目标磁盘、网卡(DHCP 或静态)。整盘云镜像会保留镜像里的分区,并自动把根分区扩满磁盘。

有 BMC 可勾选「同时 BMC PXE 重启」。到「任务」看进度。成功后机器会切回本地硬盘启动。

装完后的物理网卡按 MAC 绑定,名字是 nic0 / nic1,不是 RAMOS 里的 ens3

7. 装 Windows Server(2019 / 2022 / 2025)

和 Linux 完全不是一条路。不要登记成 qcow2,也不要指望 RAMOS 去写 Windows 盘。只支持 x86_64

  1. 「镜像」选 Windows Server,对应年份。
  2. 类型选 Windows Server ISO,把微软官方 ISO 上传到控制面(必须能抽出 boot.wim)。
  3. 点「检测」,应看到 Standard / Datacenter 等 edition。
  4. 「装机」里用户默认 Administrator密码必填。没有 SSH。不要画 Linux 分区,不要 Bond / VLAN。
  5. 第 3 步选 WIM 版本(默认偏带桌面的 Standard)、磁盘、DHCP 或装完后的静态 IP。
  6. 下发后这台 MAC 下次 PXE 会进 Windows PE,而不是 Ubuntu。

WinPE 下载 install.wim 时必须有 DHCP。静态 IP 只在装完后按 MAC 写入。磁盘没把握时选「磁盘 0」,选错会清错盘。主机名最长 15 个英文字符。

8. 升级(只覆盖两个文件)

不要动配置、数据库和镜像。

1
2
3
4
5
6
7
8
9
10
cd /tmp
curl -fLO https://github.com/Songxwn/Rack-auto/releases/latest/download/rackauto-linux-amd64.tar.gz
tar -xzf rackauto-linux-amd64.tar.gz
CTRL=$(ls -1 rackauto rackauto-linux-amd64 2>/dev/null | head -n1)
AGENT=$(ls -1 rackauto-agent rackauto-agent-linux-amd64 2>/dev/null | head -n1)
sudo systemctl stop rackauto
sudo install -m 0755 "$CTRL" /opt/rackauto/bin/rackauto
sudo install -m 0755 "$AGENT" /opt/rackauto/data/agent/x86_64/rackauto-agent
sudo systemctl start rackauto
curl -sS http://127.0.0.1:8080/api/v1/health

浏览器强刷控制台,左下角版本应变成新 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公众号:网工格物

微信扫码

博客(最先更新)

https://songxwn.com/