Cloudpods Baremetal - 裸金属自动化
简介
本教程主要用于构建一个物理服务器自动化交付的系统,当一个物理服务器上电、配置好IPMI、RAID后。通过PXE可自动安装好一个操作系统在系统盘,并配置好网卡、SSH连接信息。
功能概览
cloudpods 云平台支持 Baremetal(物理机) 管理,提供的功能如下:
自动化上架: 物理机上架加电启动后,自动注册到云管平台,自动分配BMC IP地址,初始化IPMI账号密码,自动上报物理机硬件配置(CPU、内存、序列号、网卡、磁盘等)
自动化装机: 根据配置要求自动配置 RAID,自动分区格式化磁盘,自动部署操作系统镜像,自动初始化操作系统账号密码,自动分配IP地址,可以植入配置文件
生命周期管理: 支持物理机自动化开机,关机,重装系统,远程带外管理,卸载操作系统等操作
与虚拟机共享镜像: 使用虚拟机镜像部署物理机,便于虚拟机和物理机统一操作系统运行环境
API 支持: 以上操作均支持API操作,便于与其他系统的自动化流程集成
服务器型号支持: 支持Dell、HP、华为、浪潮、联想、超微等主流x86/ARM服务器厂商和机型
RAID 控制器支持: LSI MegaRaid, HP Smart Array, LSI MPT2SAS, LSI MPT3SAS, Mrarvell RAID等 (也支持软RAID)
转换为宿主机: 直接将物理机转换为运行虚拟机的宿主机
托管已有服务器: 托管已有并装好系统的物理机
支持 Legacy(传统模式)或者UEFI的 PXE 引导网络启动
支持安装的操作系统
openEuler: 22.03 LTS SP3, 22.03 LTS SP4, 24.03 LTS SP2
CentOS: 7.9, 8 stream, 9 stream, 10 stream
Debian: 11, 12, 13
Ubuntu Server: 20.04 LTS, 22.04 LTS, 24.04 LTS, 25.04
AnolisOS: 8.8. 8.10
OpenCloudOS: 8.8, 8.10, 9.2, 9.4
Rocky Linux: 8.x, 9.x, 10.x
Alma Linux: 8.x, 9.x, 10.x
Docker Compose 快速安装和使用
使用 Docker Compose 快速部署 Cloudpods Baremetal 物理机管理服务。(单节点)
环境准备
服务器配置要求
最低配置要求: CPU 4核, 内存8 GiB, 存储 200GiB
docker 版本: ce-26.1.3+
docker 建议安装最新的 ce 版本,新版本已经包含 docker-compose 插件
docker 需要开启容器网络以及 iptables
底层系统推荐使用Rocky Linux 9+ / Debian 12+
服务器网卡要求
外网网卡:用于管理和下载文件,连接物理机IPMI。
内网网卡:用于PXE+DHCP ,让需要PXE启动的物理服务器网卡在一个广播域。(可只配置IP和掩码)
安装配置Docker CE
国内参考文档:https://help.mirror.nju.edu.cn/docker-ce/?mirror=NJU
官方文档安装:Install Docker Engine
部署运行 Cloudpods Baremetal 服务
在部署机器上创建 cloudpods-baremetal 目录,并且进入该目录。
1 | cd /opt |
使用下面的命令,把运行物理机管理的 docker compose 配置文件下载下来。
1 | curl https://raw.githubusercontent.com/yunionio/ocboot/master/compose/baremetal/docker-compose.yml -o docker-compose.yaml |
PS:也可以用国内的Gitee下载:https://gitee.com/songxwn/ocboot/raw/master/compose/baremetal/docker-compose.yml
在 cloudpods-baremetal 目录运行下面的 docker compose 命令正式开始安装
运行服务,注意需要设置 LISTEN_INTERFACE 和 PUBLIC_IP 两个环境变量。
LISTEN_INTERFACE: 服务监听的网卡,比如 eth0 ,此网卡会负责接受 DHCP 请求。(即内网网卡)
PUBLIC_IP: 服务监听的 IP 地址,为对应 LISTEN_INTERFACE 网卡上的 IP 地址,可通过
ip addr show查看对应网卡上的地址。
下面命令假设 eth0 网卡上的 ip 地址为 10.168.222.205,具体设置请根据自己的环境设置。
1 | LISTEN_INTERFACE=eth0 PUBLIC_IP=10.168.222.205 docker compose up -d |
等服务启动完成后,就可以登陆 https://$PUBLIC_IP 访问前端服务,默认登陆用户密码为:admin 和 admin@123。

纳管物理机教程
物理机管理服务部署完成后,接下来纳管物理机测试。
注意
待纳管的物理机需要和运行服务的节点在同一个广播域下(内网网卡)
该广播域中需要禁用其他 dhcp 服务,因为 baremetal 物理机管理服务会运行 dhcp 服务
如果待管理的物理机运行在其他广播域,则需要在交换机上配置 dhcp relay 到物理机管理服务的 PUBLIC_IP 地址
待纳管的物理机信息:
型号: Lenovo RD640
IPMI 带外信息:
IP: 192.168.222.203
用户: root
密码: YourIPMI@Password
BIOS/UEFI引导选项设置 PXE 网络启动为第一启动顺序
1. 创建网段
纳管物理机,需要创建PXE、IPMI、物理机 3个类型的 IP 子网。
PXE类型: 该网段用于物理机的 PXE 网络引导启动和裸金属(安装操作系统)
IPMI 类型: 用于记录物理机 BMC 带外控制的地址
物理机类型:用于物理机的业务网段,可配置VLAN。
这三个网段最好是运行服务所在节点网络可达的,请根据自己的网络环境设置。
点击前端“网络/IP子网/新建”,创建以下的三个子网。
创建一个PXE类型的子网
假设需要给物理机 PXE 启动的网段为 192.168.77.100 到 192.168.77.200,网关为 192.168.77.1,并设置 dhcp_relay 为 PUBLIC_IP,名称为 bmnet-0,服务器类型选择PXE。
注意:
此物理机类型网段的开始和结束 ip 范围,以及默认网关是和实际环境网络环境相关的,是对应到交换机和路由器上的配置,注意划分的 ip 不要和已有环境的冲突了
这里一定要设置 dhcp_relay 为 PUBLIC_IP,在这个环境中是 192.168.77.12,请根据自己环境修改。
- 因为 baremetal-agent 服务只会响应从 dhcp_relay 过来的单播 dhcp 请求,用 docker compose 部署的服务中包含了一个 dhcp_relay 服务,也监听到 PUBLIC_IP 上,会把 dhcp 广播 relay 到 agent 服务。

创建一个 IPMI 类型的子网
该网段需要包含物理机的 ipmi ip,假设为 192.168.222.200 到 192.168.222.210,网关为 192.168.222.1,名称为 ipmi-0,类型为IPMI。

创建一个物理机类型的业务子网
该网段需要包含物理机的业务网卡的网段,其他要求一样。
查看创建好的3个网段

2.1 PXE引导注册纳管物理机(有IPMI&BMC)
在Web管理控制台添加物理机,点击”主机/基础资源/物理机/添加”,选择 “PXE 注册引导”,输入对应的物理机纳管信息。
名称: test-bm-songxwn
IPMI 信息(这些以具体机器所在环境为准)
IPMI 地址: 192.168.222.203
IPMI 用户名: root
IPMI 密码: YourIPMI@Password
管理口 MAC 地址: 00:0C:29:01:3E:C1
- PXE 网络启动的网卡 MAC 地址,如果物理机支持 Redfish API 可以不填,平台能自动探测到
管理口 IP: 选择刚才创建的 bmnet-0 子网

创建完成后,在物理机列表可以看到机器处于“准备中”的状态,并且探测到了品牌为 Lenovo 。(得确保IPMI 可连接到)

可以通过访问物理机的带外控制台,会看到物理机开始 PXE 引导,如果网络配置没有问题,物理机会获得物理机管理服务下发的 grub 引导配置。
获取 grub 配置后,物理机会从管理服务的 PUBLIC_IP 下载内核和 initramfs。

下载完成后,就会进入 yunionos 内存系统。

之后平台的服务会通过 ssh 远程探测收集物理机的硬件信息,等物理机变成“运行中”的状态,就算纳管成功了。
勾选对应的物理机,点击启用,就可以进行后续的安装操作系统等操作。

2.2 预注册纳管物理机(无IPMI&BMC)
适用于无IPMI&BMC的物理机,PXE服务器需要注册MAC地址才能被引导。
注意勾选无BMC控制器。
注意选择管理口IP,为PXE 子网。

3. 导入装机镜像
点击“主机/系统镜像/上传”按钮,导入需要装机的镜像。
名称:CentOS-7.6.1810-20190430.qcow2
输入镜像 URL:https://iso.yunion.cn/vm-images/CentOS-7.6.1810-20190430.qcow2

等待镜像状态变成“可用”,就可以将此镜像用于安装操作系统了。
Debian 12 AND64 通用物理机QCOW2镜像
https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
或是点击社区镜像在线导入

等待镜像状态变成“可用”,就可以将此镜像用于安装操作系统了。

4. 为物理机安装操作系统)
前提条件:物理机PXE已启动 YunionOS For PXE 系统
YunionOS For PXE 是一个通过网络PXE启动,在内存中临时运行的工具系统
用于启动后由Cloudpods Baremetal 系统连接检测所有硬件信息,并根据硬件信息来配置网卡、硬盘、密码/密钥来安装系统。

安装系统到物理机硬盘
点击“主机/基础资源/物理机”
选择一个物理机 点击更多选择启用,然后选择安装操作系统。

配置安装信息
配置系统主机名
配置安装系统镜像
配置硬盘 (可配置软RAID)
配置root密码/公钥
配置网络 (可配置Bond 和 VLAN)

- 最后点击新建则开始安装,安装日志可去主机 - 裸金属查看。
操作说明
1. 将服务放到后台运行
可以使用 ‘-d/–detach’ 参数把所有服务放到后台运行,命令如下:
1 | # 所有服务放到后台运行 |
2. 登陆 climc 命令行容器
如果要使用命令行工具对平台做操作,可以使用下面的方法进入容器:
1 | $ docker exec -ti cloudpods-baremetal-climc-1 bash |
3. 登录物理机 pxe 内存系统
当物理机通过 pxe 启动成功后,会引导进入一个内存 linux 系统,可以通过下面的方式 ssh 进入这个系统,遇到错误的时候方便排查。
1 | # 1. 进入 climc 容器 |
另外也可以通过 climc host-logininfo $对应物理机id 获取 root 用户的登录密码。
如果物理机 pxe 内存系统上报登录信息失败,则会设置成默认的密码:mosbaremetal,对应逻辑可参考通知代码。
4. 查看服务配置和持久化数据
所有服务的持久化数据都是存储在 cloudpods-baremetal/data 目录下面的,所有配置都是自动生成的,一般不需要手动修改,下面对各个目录做说明:
1 | $ tree data |
5. 删除所有容器
所有服务的持久化数据都是存储在 cloudpods-baremetal/compose/data 目录下面的,删除容器不会丢失数据,下次直接用 docker compose up 重启即可,操作如下:
1 | # 删除服务 |
升级
更新 compose 配置文件
当上游的 ocboot/compose/baremetal/docker-compose.yml 更新了,就可以通过 curl 命令下载最新的配置文件,然后重新启动就可以了,步骤如下:
1 | # 注意切换到对应的 cloudpods-baremetal 目录 |
重启 compose 服务
拉取最新的 docker-compose.yml 配置文件后,使用下面命令重启服务就行了。
1 | cd /opt/cloudpods-baremetal |
已成功测试安装系统
Centos 7
Ubuntu 24.04
运维技术交流群
发送邮件到 ➡️ [email protected]
或者关注WX公众号:网工格物
