接触ironic的时候,在ironic的wiki页面:https://wiki.openstack.org/wiki/Ironic 会看到一堆的项目,感觉ironic是个很大的项目,可能会产生疑问,
是否每一个部分都需要了解,参与开发的话,哪些模块进行contribute比较合适?
下面是Ironic相关的几个主要项目。
这个是ironic项目的主体,主要是ironic-api 和 ironic-conductor两部分。
各个vendor的driver归类到任何一个部分都不合适,这是因为ironic-api是在pecan项目之上的,收到rest call之后的请求过程没有像其他模块一样抽象出manager。
负责和ironic-api打交道,实际上干的事情就是解析命令行,使用封装的http client调用命令,结构上和其他模块的client很相似,毕竟无论是nova client, keystone client等等,
干的都是一个事,最后都变成了发送http(s) 请求。
简称IPA, 在ramdisk中安装的一个agent,从IPA的wiki页:https://wiki.openstack.org/wiki/Ironic-python-agent 中提到的motivation可以看出:
在deploy os时,目标机通过iSCSI暴露一块盘,conductor将OS mount上去, 而IPA认为通过ramdisk可以做更多的事情,包括分区,RAID配置/firmware 升级等,而这些在ironic中AgentAndXXX 类型的driver中被用到。
以前是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,大部分厂商都有自己的平台或工具可以获得这些数据,对他们来说很容易。
ironic standalone方式,通过ansible部署。
顾名思义,ironic的ui界面