Ironic is an OpenStack project which provisions bare metal (as opposed to virtual) machines by leveraging common technologies such as PXE boot and IPMI to cover a wide range of hardware, while supporting pluggable drivers to allow vendor-specific functionality to be added. A common use case is to deploy user images on baremetal hosts (skipping the virtualization layer) with the help of Ironic driver in Nova, leveraging better performance of such instances (e.g. member of a Hadoop cluster or Docker host with multiple containers running).
New ‘Ironic’ role will be added to Fuel which configure ‘ironic-conductor’, tftp services on node. It can be assigned to controllers or non-controller nodes. Once ‘ironic’ role is checked, it should add ‘ironic-api’ on all controller nodes behind HA proxy. Having analyzed the Ironic use-cases, we plan to support only Neutron VLAN with additional shared Flat Network for baremetal nodes in MOS 7.0. This does not require all the environment to be in a single VLAN, only baremetal nodes. At the cluster creation wizard page new role ‘ironic’ - assigned to separate nodes where ‘ironic-conductor’ and nova-compute with baremetal driver are deployed. We also need to add additional block at cluster settings tab to configure baremetal subnet and interface/vlan to which baremetal subnet is be mapped.
Ironic deployment is optional and must be implemented using granular deployment mechanisms available in Fuel to be a separate task not interfering with other deployment tasks. Ironic API deployment should use separate custom role to facilitate later decoupling of API services from controllers (blueprint detach-components-from-controllers).
We have to store following data in settings:
No REST API modifications needed.
It is new components, upgrade from previous versions will be transparent.
Ironic API services must be put under HAProxy similar to other OpenStack API services.
Ironic Conductor services implement their own HA setup based on DB timestamps. Workloads assigned to a particular ironic-conductor service instance that has failed are automatically re-assigned to other working ironic-conductor service instances on the basis of consistent hash-ring algorithm. Thus failover stability is dependent on overall HA implementation of DB layer. Notifications on failed ironic-conductor service must be realized as part of existing cluster monitoring solution (e.g. as Zabbix plugin). Thus if deploying ironic role on separate nodes, overall at least 6 nodes are needed for deployment in HA mode (3 controllers + 3 ironic nodes).
Given blueprint fuel-bootstrap-on-ubuntu, its functionality will be used to build a custom image to be used as bootstrap image for baremetal deployment with Ironic during environment deployment with Fuel. This image will basically be the same Fuel bootstrap image, with the same kernel, sans packages/components that are not needed for Fuel Agent (like nailgun agent etc). It will be build as usual kernel/ramdisk image. A more unified with new Fuel bootstrap approach with rootfs downloadable over HTTP might be implemented in next MOS release.
Usage of such Fuel-bootstrap based image will ensure that the hardware supported by Ironic baremetal deployment is the same as supported by Fuel deployment.
Some modifications of the Cluster Creation Wizard needed. Add new ‘ironic’ role. Need an additional setting block inside cluster setting tab for filling up ‘baremetal’ network and its interface/vlan.
Deployer will be able to assign ‘ironic’ role to controller or non-controller nodes. If ‘ironic’ role is assigned, Deployer must fill up more detail information in cluster setting tab or keep default settings.
Ironic is community supported official project, so there is no additional impact for Developers.