如果刚开始接触ironic的时候,在ironic的wiki页面:https://wiki.openstack.org/wiki/Ironic 会看到一堆的项目,感觉ironic是个很大的项目,可能会产生疑问,
是否每一个部分都需要了解,参与开发的话,哪些模块进行contribute比较合适?我记录一下,免得自己有时候也忘记了:
1. ironic
这个自然是ironic项目的主体,之前记录了很多关于ironic相关的开发,主要是ironic-api 和 ironic-conductor两部分,各个vendor的driver归类到任何一个部分都不合适,
这时因为ironic-api是在pecan项目之上的,收到rest call之后的请求过程没有像其他模块一样抽象出manager,其实我认为更简单明确了,ironic作为一个较新的项目,
在建立之初应该也是考量了是否参考nova之流的结构的,估计后来放弃了。
2. ironic client
负责和ironic-api打交道,实际上干的事情就是解析命令行,使用封装的http client调用命令,结构上和其他模块的client很相似,毕竟无论是nova client, keystone client等等,
干的都是一个事,最后都变成了发送http(s) call
3. ironic python agent
简称IPA, 在ramdisk中安装的一个agent,从IPA的wiki页:https://wiki.openstack.org/wiki/Ironic-python-agent 中提到的motivation可以看出:
现在deploy os时,目标机通过iSCSI暴露一块盘,conductor将OS mount上去(之前pxe deploy 的细节一文中讲过), 而IPA认为通过ramdisk可以做更多的
事情,包括分区,RAID配置/firmware 升级等,而这些在ironic中AgentAndXXX 类型的driver中被用到
4. pyghmi
是以前IBM的人写的一个纯python的库,用来代替ipmitool的,因此不需要安装ipmitool,直接在程序里用pyghmi的接口就可以像ipmitool一样进行ipmi的操作,
应该只覆盖了部分ipmi的功能,而且在这个python的库中希望通过driver来实现对各个vendor的兼容,有点儿类似libvirt,当然没有libvirt复杂,而且目前看来
并没有什么vendor响应对此库的支持。。。
5. ironic-inspector
以前是ironic-discoverd, 现在使用git clone拉取code 的时候,两个对应的是同一个repo,同时在J版和K版中使用ironic-discoverd client的地方现在也变成了
ironic_inspenctor_client了,这个inspector是用来进行单机inventory的,分为in-band, out-band,即带内核带外两种方式,如果不是从事服务器相关的开发,一般的软件
工程师可能不用和这些概念打交道, 拿到的信息包括(这里使用ilo为例,ilo是带外的),'BootMode', 'secure_boot', 'rom_firmware_version',
'ilo_firmware_version', 'server_model', 'max_raid_level', 'pci_gpu_devices', 'sr_iov_devices', 'nic_capacity等。实际上各个不同的厂商根据希望拿到的数据种类
可以写自己的inspector,大部分厂商都有自己的平台或工具可以获得这些数据,对他们来说很容易。
6. python-ironic-inspector-agent
是ironic-inspector的agent,取代之前的ironic-discoverd client, 这个并没有在ironic 的wiki页列出,但是在https://github.com/openstack?utf8=%E2%9C%93&query=ironic
可以搜到。
以下的几个模块并没有住进去看源码
7. bifrost
是一个Ansible的项目,方便想玩一下ironic的人快速搭建环境的,还没试过
8. ironic-lib, ironic-webclient, 分别是“A collection of common Ironic utilities”,东西不多;ironic-webclient则是ironic的一个web client,照openstack的尿性,如果
不合到horizon里面,估计不合适。
总的来说,我觉得ironic基于pecan反而让IPA和inspector不好合进来,这样按功能分成ironic的好几个小项目合适吗?再过几个版本,我觉得ironic以一个大一统的
形式出现,把上面的东西并在一起不是更好。