适用读者 :云平台工程师、OpenStack 运维、裸金属基础设施开发者
前置知识 :OpenStack 基础、PXE 网络启动、IPMI
OpenStack 版本 :2025.2 (Antelope) / 2026.1 (Bobcat)
更新日期:2026 年 2 月
一、什么是 Ironic?
Ironic 是 OpenStack 的官方项目,用于管理裸金属服务器(Bare Metal),即物理机而非虚拟机。它将物理服务器当作"虚拟机"一样纳入云平台统一调度,实现:
- 自动化部署操作系统
- 生命周期管理(开机/关机/重装)
- 与 Nova 集成,支持
nova boot --flavor baremetal
💡 核心价值 :
"让物理机像虚拟机一样弹性、可编程。"
二、Ironic 架构概览
Ironic 采用微服务架构,主要组件如下:
| 组件 | 作用 |
|---|---|
| ironic-api | REST API 入口,接收用户请求 |
| ironic-conductor | 核心引擎,执行实际操作(多实例高可用) |
| ironic-python-agent(IPA) | 运行在目标物理机上的临时 OS(基于 CoreOS 或 Alpine) |
| Database | 存储节点状态、驱动配置等(通常为 MySQL) |
| Message Queue | 组件间通信(RabbitMQ) |
✅ 关键设计:
- 无代理模式(Agentless):通过 IPMI/PXE 直接控制硬件
- 带外管理(Out-of-Band):依赖 BMC(如 iLO, iDRAC, IPMI)
三、核心流程详解:从注册到部署完成
流程总览
css
graph TD
A[注册物理机] --> B[验证硬件]
B --> C[分配资源]
C --> D[PXE 启动 IPA]
D --> E[执行部署任务]
E --> F[切换到生产 OS]
F --> G[交付给 Nova]
四、详细步骤分解
步骤 1:注册物理机(Enrollment)
管理员通过 CLI 或 API 将物理机信息录入 Ironic。
ini
# 创建节点(指定驱动)
openstack baremetal node create \
--driver ipmi \
--driver-info ipmi_address=192.168.1.100 \
--driver-info ipmi_username=admin \
--driver-info ipmi_password=secret \
--property cpu_arch=x86_64 \
--property cpus=32 \
--property memory_mb=131072 \
--property local_gb=1024
# 添加网络端口(MAC 地址)
openstack baremetal port create \
--node <node-uuid> \
aa:bb:cc:dd:ee:ff
🔑 关键字段:
driver:硬件管理驱动(ipmi, redfish, ilo 等)driver_info:BMC 登录凭证properties:硬件规格(用于 Nova 调度)
步骤 2:验证与检查(Validation)
Ironic 自动验证硬件可达性:
xml
openstack baremetal node validate <node-uuid>
输出示例:
yaml
boot: success
console: not supported
deploy: success
inspect: success
management: success # ← IPMI 可达
power: success # ← 电源控制正常
rescue: not supported
storage: success
⚠️ 失败常见原因:
- BMC 网络不通
- 用户名/密码错误
- BIOS 未启用 PXE
步骤 3:Nova 请求创建实例
用户通过 Nova API 请求裸金属实例:
css
nova boot --flavor bm.large --image ubuntu-22.04 --nic net-id=physnet1 my-bm-server
Nova Scheduler 根据 flavor 规格匹配 Ironic 节点(通过 properties 字段)。
步骤 4:Ironic 执行部署(核心流程)
4.1 准备阶段(Preparation)
- Ironic-conductor 将节点状态设为
deploying - 生成 PXE 配置文件(指向 IPA 镜像)
- 配置 DHCP/TFTP 服务(通常由 Neutron + ironic-neutron-agent 提供)
4.2 启动 IPA(Ironic Python Agent)
- Ironic 通过 IPMI 发送 Power On 指令
- 物理机 PXE 启动,从 TFTP 加载 IPA 内核和 initramfs
- IPA 启动后,自动连接回 Ironic API(心跳注册)
📦 IPA 是什么 ?
一个轻量级 Linux 系统(约 300MB),包含:
- Python 运行时
- 硬件检测工具(sushy, dracut)
- 部署逻辑(写镜像、分区等)
4.3 执行部署任务(Deployment)
IPA 从 Ironic 获取部署指令,典型流程:
-
擦除磁盘(可选)
iniwipe_disk(device='/dev/sda') -
下载生产 OS 镜像
- 从 Glance 下载
ubuntu-22.04.qcow2 - 转换为 raw 格式并写入磁盘
- 从 Glance 下载
-
配置引导
- 安装 bootloader(GRUB)
- 生成
/etc/fstab - 注入 SSH 密钥、用户数据
-
上报完成
- IPA 发送
heartbeat到 Ironic - Ironic 将节点状态改为
active
- IPA 发送
4.4 切换到生产系统
- Ironic 通过 IPMI 发送 Power Off
- 修改 PXE 配置:下次启动从本地磁盘而非 IPA
- 发送 Power On
- 物理机启动生产 OS
步骤 5:交付给 Nova
- Ironic 通知 Nova 实例已就绪
- Nova 将实例状态设为
ACTIVE - 用户可通过 SSH 登录物理机
五、关键驱动与插件
5.1 硬件管理驱动(Hardware Types)
| 驱动 | 适用硬件 | 协议 |
|---|---|---|
ipmi |
通用服务器 | IPMI 2.0 |
redfish |
新一代服务器 | Redfish (REST) |
ilo5 |
HPE 服务器 | iLO 5 |
idrac |
Dell 服务器 | iDRAC |
✅ 2026 趋势:Redfish 逐步取代 IPMI(更安全、功能更强)
5.2 部署接口(Deploy Interfaces)
| 接口 | 说明 |
|---|---|
iscsi |
传统方式:通过 iSCSI 将磁盘暴露给部署节点 |
direct |
推荐:IPA 直接写入本地磁盘(更快、更可靠) |
六、高级功能
6.1 硬件检查(Hardware Inspection)
自动发现 CPU、内存、磁盘等真实规格:
xml
openstack baremetal node inspect <node-uuid>
结果自动更新到 properties,用于精准调度。
6.2 清理模式(Cleaning)
在释放节点前自动擦除数据:
- Metadata cleaning:清除 RAID 配置、固件设置
- Disk erasing:全盘覆写(符合安全合规)
6.3 救援模式(Rescue Mode)
当 OS 损坏时,启动 IPA 进行修复:
ruby
openstack baremetal node rescue <node-uuid>
# 节点启动 IPA,提供 shell 访问
七、生产环境最佳实践
🔒 安全配置
- 隔离管理网络:BMC 网络与业务网络分离
- 使用 Redfish 替代 IPMI:支持 TLS 和 RBAC
- 定期轮换 BMC 密码
📊 监控指标
- 节点状态分布(enroll, manageable, available, active)
- 部署成功率/耗时
- IPA 心跳延迟
🧪 测试建议
- 使用 VirtualBMC 模拟物理机测试流程
- 在 CI 中集成 Ironic 部署验证
八、常见问题排查
| 问题 | 诊断命令 | 解决方案 |
|---|---|---|
| PXE 启动失败 | journalctl -u dnsmasq |
检查 DHCP/TFTP 配置 |
| IPA 无法连接 Ironic | ipa-debug |
检查防火墙、API URL |
| 部署卡在 wiping | openstack baremetal node show |
检查磁盘是否被占用 |
| Nova 无法调度 | nova schedule -v |
检查 flavor 与 properties 匹配 |
九、未来演进(2026+)
- UEFI Secure Boot 支持:安全启动生产 OS
- TPM 2.0 集成:硬件级可信计算
- Kubernetes 集成:通过 Cluster API 管理裸金属
- 零接触部署(ZTP):设备上电自动注册
十、总结
💬 Ironic 的核心价值 :
"将物理基础设施云化,实现与虚拟机一致的体验。"
通过理解其五大核心流程------注册 → 验证 → 启动 IPA → 部署 OS → 交付,你就能掌握裸金属自动化的精髓。
✅ 记住:
- IPA 是灵魂:所有智能操作都在此执行
- 驱动是桥梁:正确选择硬件驱动是成功前提
- 网络是基础:PXE/DHCP/BMC 网络必须稳定
学习资源: