通过Fule9.0推送的OpenStack环境管理BareMetal设备

Fuel可以快速构建OpenStack环境,只要在部署环境时勾选Ironic模块,就可以构建出一套带裸金属管理功能的环境。部署成功后,我们就可以像操作虚拟机一样来操作BareMetal设备了。
我在测试这个模块时,一路磕磕绊绊,踩了很多坑,最终成功启动了一个Ubuntu操作系统的BareMetal实例,但是仍然有很多问题要解决。下面我将我本人走过的路和遇到的坑与大家分享一下,也期望能得到高手的指教。
本文默认你已经安装部署了Fule9.0,接下来我们通过以下步骤创建出一个BareMetal instance。

  • 准备环境
  • 推送OpenStack环境
  • enroll一个Ironic节点
  • *创建BareMetal Flaor
  • 将制作好的user image上传到glance
  • boot一个BareMetal instance

准备环境

  • 准备OpenStack Controller节点
  • 准备Ironic服务节点,用于部署Ironic服务
  • 规划一个BareMetal网络,并预留足够的IP地址供服务节点和Ironic节点使用
  • 准备一台支持IPMI的物理服务器作为Ironic节点
  • 记下IPMI网卡的IP地址,并验证Ironic节点与IPMI网卡网络可达
  • 记下用于连接BareMetal网络的网卡MAC地址
  • (可选)编辑/etc/fuel-bootstrap-cli/fuel_bootstrap_cli.yaml,将官方Ubuntu软件源替换为国内的ubuntu软件源。我最初部署的时候经常在Ubuntu操作系统部署到80%的时候失败,通过查看日志发现下载软件包超时,把Ubuntu软件源修改为阿里云源后部署成功。

推送带Ironic服务的OpenStack环境

  • 登录fuel,新建一个OpenStack环境,并勾选Ironic
    通过Fule9.0推送的OpenStack环境管理BareMetal设备_第1张图片
  • 输入规划的裸金属网络IP地址,这段IP地址会分配给Controller节点和Ironic服务节点
    通过Fule9.0推送的OpenStack环境管理BareMetal设备_第2张图片
  • 输入分配给Ironic节点的BareMetal网络地址
    通过Fule9.0推送的OpenStack环境管理BareMetal设备_第3张图片

  • 输入其他网络参数

  • 添加controller服务节点、Ironic服务节点角色,并配置网络接口
  • 验证网络连通性
  • 在环境首页点击部署按钮,开始部署过程
  • (可选),开始部署OpenStack服务之后,把Ironic服务节点上的软件源修改为国内的软件源。因为Ironic需要安装syslinux和tftp-hpa软件包,而离线Fule的mirror中没有这两个软件包。

Enroll一个Ironic节点

  • 创建一个driver为fuel_ipmitool的Ironic节点
ironic node-create -d fuel_ipmitool
export NODE_UUID=上一条命令返回的UUID
  • 运行glance image-list命令,分别查看deploy_kernel、deploy_ramdisk和deploy_squashfs镜像的ID
  • 更新Ironic节点的image信息和ipmi信息
ironic node-update $NODE_UUID add \
driver_info/deploy_kernel=$DEPLOY_KERNEL_IMAGE_ID \
driver_info/deploy_ramdisk=$DEPLOY_RAMDISK_IMAGE_ID \
driver_info/deploy_squashfs=$DEPLOY_SQUASHFS_IMAGE_ID \
driver_info/ipmi_address=$IPMI_IP_ADDRESS \
driver_info/ipmi_username=$IPMI_USER_NAME \
driver_info/ipmi_password=$IPMI_PASSWORD
  • 更新节点配置信息
ironic node-update $NODE_UUID add \
properties/cpus=$CPU_NUMBER \
properties/memory_mb=$MEM_IN_MB \
properties/local_gb=$DISK_IN_GB \
properties/cpu_arch=$CPU_ARCH(如x86_64)
  • 为Ironic节点绑定MAC地址
ironic port-create -n $NODE_UUID -a $MAC_ADDRESS
  • 最后验证一下Ironic节点状态是否正确
ironic node-validate $NODE_UUID

如果没有提示错误就代表前面填写的信息都是正确的,可以提供服务了。
接下来,我们创建为BareMetal Instance准备的Flavor和user image。

创建BareMetal Flavor

nova flavor-create baremetal auto $MEM_MB $DISK_GB $CPU_NUM
nova flavor-key baremetal set cpu_arch=$CPU_ARCH(如x86_64)

参数与注册Ironic节点时填写的一致

制作一个Ubuntu操作系统的user image

sudo pip install diskimage-builder
disk-image-create ubuntu baremetal dhcp-all-interfaces grub2 -o ubuntu -t raw

会生成三个文件,我们需要的是raw文件。接下来,我们把这个raw文件上传到glance。

将制作好的user image上传到glance

glance image-create --name myimage --disk-format raw --container-format bare \
--file ubuntu.raw --visibility public
glance image-update $USER_IMAGE_ID --property cpu_arch=x86_64 \
--property hypervisor_type="baremetal" \
--property fuel_disk_info='[{"name": "sda", "extra": [], "free_space": 110000, "type": "disk","id": "vda", "size": 110000, "volumes": [{"mount": "/", "type":"partition", "file_system": "ext4", "size": 30000}]}]'

注:fuel_disk_info为必填,否则会报错

boot一个BareMetal instance

可以通过OpenStack Dashboard或者nova 命令行操作,像部署一台虚拟机一样部署一个BareMetal节点

遗留的问题

  • 制作的user image可以启动成功,但是只有Ubuntu能够成功进入系统
  • 启动CentOS7后,需要修改grub可以成功进入系统(可能我这边是个例)
  • 其他的系统暂时没有测试通过

你可能感兴趣的:(云计算,OpenStack)