一 、网络配置说明
ironic_dnsmasq_dhcp_ranges为ironic pxe网络,使用管理网同段剩余ip即可。
inspect、provider、clean使用用一个neutron网络,并需要打通管理网、bmc网络
当前测试环境neutron是用的flat ,不需要切换vlan,所以不需要neutron对接交换机,否则需要对接交换机。
二、/etc/kolla/globals.yml配置
enable_ironic: "yes"
enable_ironic_inspector: "yes"
enable_nova_serialconsole_proxy: "yes"
ironic_dnsmasq_interface: "eno3"
#指定clean网络
ironic_cleaning_network: "provider"
# pxe网络
ironic_dnsmasq_dhcp_ranges:
- range: "192.168.77.25,192.168.77.30"
routers: "192.168.77.254"
ironic_dnsmasq_boot_file: "pxelinux.0"
ironic_inspector_kernel_cmdline_extras: ['ipa-lldp-timeout=90.0', 'ipa-collect-lldp=1']
ironic_pxe_uefi_enabled: "yes"三、下载coreos镜像并创建ironic.conf文件
Ironic Inspector 还要求部署内核和内存盘必须放在 /etc/kolla/config/ironic/ 中。以下示例使用 coreos,这在 Ironic 部署中很常见,尽管可以使用任何兼容的内核/内存盘:
curl https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-stable-2024.2.kernel \
-o /etc/kolla/config/ironic/ironic-agent.kernel
curl https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-stable-2024.2.initramfs \
-o /etc/kolla/config/ironic/ironic-agent.initramfs在/etc/kolla/config下创建ironic.conf
[DEFAULT]
enabled_hardware_types = ipmi,redfish
enabled_console_interfaces = ipmitool-socat,no-console
enabled_inspect_interfaces = agent,redfish,no-inspect
enabled_network_interfaces = flat,neutron
[neutron]
provisioning_network = provider四、创建资源
# 创建 flavor
openstack flavor create --ram <ram> --vcpus <vcpus> --disk 0 <flavor_name>
openstack flavor set resources:CUSTOM_BAREMETAL_RESOURCE_CLASS=1 \
--property resources:VCPU=0 \
--property resources:MEMORY_MB=0 \
--property resources:DISK_GB=0 \
<flavor_name>
# 创建 image,IPA
openstack image create --disk-format aki --container-format aki --public \
--file /etc/kolla/config/ironic/ironic-agent.kernel deploy-vmlinuz
openstack image create --disk-format ari --container-format ari --public \
--file /etc/kolla/config/ironic/ironic-agent.initramfs deploy-initrd
# 创建裸机部署网络
openstack network create --provider-network-type flat --provider-physical-network external provider
# 创建 provider 网络可分配的 3 层网段,注意该网段需要与管理网 3 层互通
openstack subnet create --network provider --subnet-pool <subnet-pool> --dns-nameserver <inspector_dnsmasq_interface 网卡对应的ip> provider_subnet
# 在所有节点安装ipmitool和socat
apt install -y ipmitool socat五、上传ironic镜像并部署ironic服务
5.1 下载镜像
方法一:下载镜像总包的时候使用带ironic的镜像总包
下载地址:https://cloud-disk.mandao.com/directlink/public/mstack/文档/mstack/离线镜像总包/包含ironic/registry.tar
方法二:手动下载rocky或者ubuntu系列的镜像并上传
1、下载镜像
下载链接:https://cloud-disk.mandao.com/public/mstack/%E6%96%87%E6%A1%A3/mstack/ironic/images
2、批量上传镜像
for i in `ls` ;do docker load -i $i ;done3、将上传镜像的tag输入到old文件中
docker images --format '{{.Repository}}:{{.Tag}}' | grep quay.io > old4、修改old文件中旧的镜像tag并输入到new文件中
sed 's/quay.io/<镜像仓库地址>/' old > new
# 例如:sed 's/quay.io/node01:4001/' old > new5、将old和new中的内容对齐输入到 all_images文件中
paste old new > all_images6、#批量打标签
while read line ;do sr=$(echo $line|awk '{print $1}');de=$(echo $line|awk'{print $2}');docker tag $sr $de ;done 5.2 执行部署命令
kolla-ansible deploy -i /root/all-in-one -t ironic,neutron,nova,placement,horizon六、创建裸机节点
# 创建裸机节点,确认裸机是uefi还是传统启动方式,启动镜像在glance中选择一个
openstack baremetal node create \
--console-interface ipmitool-socat \
--deploy-interface direct \
--network-interface flat \ (如果使用neutron,需要在port中添加交换机接口信息)
--resource-class baremetal-resource-class \
--driver-info ipmi_address=<ipmi address> \
--driver-info ipmi_password=<ipmi_password> \
--driver-info deploy_kernel=<bm-deploy-kernel uuid> \
--driver-info deploy_ramdisk=<bm-deploy-ramdisk uuid> \
--driver-info inspection_network=provider \
--property capabilities='boot_mode:uefi,bios:uefi' \
--name test-ironic
#创建port
openstack baremetal port create 52:54:00:ff:15:55 \
--node 57aa574a-5fea-4468-afcf-e2551d464412 \
--physical-network physnet1
# 纳管裸机
openstack baremetal node manage <node-id>
# 检测裸机
openstack baremetal node inspect <node-id>
# 启用 console
openstack baremetal node set --driver-info ipmi_terminal_port=<控制节点为使用的端口 例如 15000> <node-id>
openstack baremetal node console enable <node-id>
#清除裸机所有盘的数据
openstack baremetal node clean <node-id> --clean-steps '[{"interface": "deploy", "step": "erase_devices_metadata"}]'
# 提供裸机为可用(这里不会自动清除所有磁盘的数据)
openstack baremetal node provide <node-id>
# 创建测试裸机实例
nova boot --nic net-id=<provider 网络 id> --flavor <裸机 flavor id> --image <裸机 image id> <INSTANCE_NAME>作者:束鹏 创建时间:2026-06-05 10:02
最后编辑:束鹏 更新时间:2026-06-15 17:34
最后编辑:束鹏 更新时间:2026-06-15 17:34