为叙述原理方便,假设前提条件为使用pxe_ipmitool驱动来操作物理机。Ironic的运行原理及流程如图7-2所示。Ironic通过IPMI来控制物理主机电源,使用PXE来引导物理主机启动,物理主机第一步会通过PXE,从TFTP服务器上加载和硬件相关的kernel和ramdisk,这是一个临时的操作系统,使用Ironic里面的术语称为deploy image,加载运行后其内置的脚本会自动将裸机硬盘通过iSCSI target的方式暴露出来。随后内置脚本发一个HTTP请求,通知Ironic-Conductor裸机端已完成目标暴露,conductor作为initiator挂载此目标,然后将用户的镜像写入刚挂载的磁盘上。随后修改裸机的BootLoader改为从硬盘启动系统。Ironic-conductor通过IPMI重新启动物理主机。修改数据库中的实例状态为可用,从而完成裸机系统的部署。这个步骤关键核心是将用户镜像写入硬盘,类似于ghost机制完成系统复制。
以上只是简述原理,有几个关键点没有提及,但是对于Ironic成功运行来说,非常重要。
1)tftp-server、IPMI等第三方包的配置和部署。
2)专为裸机部署创建的Flavor,Nova通过Flavor来判断和调度是否是裸机部署。
3)专为裸机定制的镜像,需要预先上传到Glance。这个镜像是和具体硬件相关的,需要每一种类型的硬件单独创建,社区一般用diskimage-builder这个工具来生成。有两类镜像,第一类是部署时的临时镜像;第二类是用户真正需要部署的系统,具体如下:
·bm-deploy-kernel
·bm-deploy-ramdisk
·user-image
·user-image-vmlinuz
·user-image-initrd
4)需要管理员事先将裸机信息登记在Ironic里,包括IPMI的用户名、密码,以及硬件相关信息等。
图7-2 Ironic的运行原理及流程