ironic服务的安装部署过程这里不讨论。

1、确认裸机服务器的驱动
可以修改配置文件/etc/ironic/ironic.conf来设置openstack启用对应驱动

# 可以用逗号分隔来指定多个驱动
enabled_drivers=pxe_ipmitool
  • 由于我的裸机服务器驱动为pxe_ipmitool,所以设置openstack启用该驱动
  • 修改后需要重启服务
systemctl restart openstack-ironic-conductor.service

2、镜像上传
openstack要实现部署裸机需要用到的镜像有5个(镜像的制作以后讨论)
这5个镜像有两个是用作deploy,即被用来在安装操作系统前对裸机节点进行准备。
有两镜像个用作系统的启动引导,还有一个就是系统镜像。
上传镜像:

# 上传deploy用镜像
glance image-create --name deploy_kernel --is-public true \
   --disk-format aki_ \
   --file deploy.kernel
glance image-create --name deploy_initramfs --is-public true \
   --disk-format ari \
   --file deploy.initramfs

# 上传boot用镜像
glance image-create --name boot_kernel --is-public true \
   --disk-format aki \
   --file boot.vmlinuz
glance image-create --name boot_initrd --is-public true \
   --disk-format ari \
   --file boot.initrd

# 上传系统镜像
glance image-create --name NAME --is-public true \
   --disk-format qcow2 \
   --container-format bare \
   --property kernel_id=$boot_kernel_uuid \
   --property ramdisk_id=$boot_initrd_uuid \
   --property hypervisor_type=ironic
   --file image.qcow2

3、把物理机注册为裸机节点

# 创建新节点
ironic node-create -d pxe_ipmitool

# 创建逻辑名
ironic node-update $NODE_UUID add name=my_bare_metal_01

# 可以通过下面的命令查看哪些驱动信息必须被添加(required)
ironic driver-properties pxe_ipmitool

# 添加IPMI驱动信息(BIOS中被设定)
ironic node-update $NODE_UUID add \ 
    driver_info/ipmi_username=admin \ 
    driver_info/ipmi_password=admin \ 
    driver_info/ipmi_address=192.168.10.11

# 添加deploy镜像uuid(第2步中上传)
ironic node-update $NODE_UUID add \ 
    driver_info/pxe_deploy_kernel=$DEPLOY_KERNEL_UUID \ 
    driver_info/pxe_deploy_ramdisk=$DEPLOY_INITRD_UUID

# 设置裸机硬件的规格
ironic node-update $NODE_UUID add \
    properties/cpus=4 \ 
    properties/memory_mb=98304 \ 
    properties/local_gb=80 \ 
    properties/cpu_arch=x86_64

# 配置为本地引导(pxe初始化实施后的引导方式,flavor也需要设置)
ironic node-update $NODE_UUID add \
    properties/capabilities="boot_option:local"
    
# 添加mac port(需要分配ip的所有网卡都要添加)
ironic port-create -n $NODE_UUID -a 00:19:99:9e:50:da

# 检验节点的设置
ironic node-validate $NODE_UUID

4、flavor创建

nova flavor-create $FLAVOR_NAME auto 512 20 1
nova flavor-key $FLAVOR_NAME set cpu_arch="x86_64"
nova flavor-key FLAVOR_NAME set capabilities:boot_option="local"

在注册并检查完每个节点的硬件后,需要为它们添加标签(tag)来把它们标记为特定的档案。这些档案标签把节点匹配为 flavor,从而通过 flavor 分配实施角色(通过指定实例的flavor来确定该实例生成在哪一个裸机中)。

ironic node-update $NODE_UUID add \ 
    properties/capabilities='profile:bare_metal_01,boot_option:local'

nova flavor-key $FLAVOR_NAME set capabilities:profile="bare_metal_01"