OpenStack Ironic – Managing Baremetal Hardware using OpenStack

Normally OpenStack is associated with managing of virtual servers. However OpenStack also supports managing of bare-metal cloud. This is made possible via the OpenStack Ironic project. OpenStack Ironic project provides bare metal management functionality. It’s one of the nova compute drivers. Ironic leverages common bare metal provisioning technologies such as PXE boot and IPMI to cover a wide range of hardware. It also supports plugin architecture for vendor-specific functionality.

In this article let us understand how the nova compute Ironic driver works.  As a primer, let’s start with the nova-compute virtualization driver by taking the example of libvirt or xen driver. The logical architecture of libvirt or Xen nova-compute driver is shown below:

nova-logical

 

At a high level the steps to boot a nova virtual instance without any cinder block device looks like this:

  • Authenticate with keystone
  • Send boot request to Nova API
  • Send boot request to Nova Scheduler to select a suitable compute host
  • Send boot request to compute host to create virtual instance
    • Get image from Glance
    • Configure instance network using Neutron
    • Start instance

Now let us look at the nova compute Ironic driver and understand the similarities and differences with the nova compute virtualization driver (libvirt/xen). The logical architecture of the Ironic nova compute driver looks like the following. Note how the hypervisor driver is replaced with the OpenStack Ironic Service.

ironic-logical

The Ironic service is composed of the following components:

  1. Ironic API – this is the REST API to interact with Ironic for managing bare metal hardware.
  2. Ironic Conductor – this is one of the key components of Ironic and is responsible for all the actions on the baremetal hardware.
  3. Ironic Drivers – Ironic supports pluggable back-end drivers for different hardware types so as to provide a mechanism to enable hardware specific features. Some of the Ironic drivers are listed below:
    1. IPMI &PXE – commonly used driver for any hardware supporting IPMI & PXE
    2. Seamicro – driver for SeaMicro servers.
    3. iLO – driver for HP servers with Integrated Lights Out Management Card
    4. DRAC – driver for Dell servers with Dell Remote Access Card
  4. Ironic DB – this is used for storing information on conductor states, host details, drivers etc.

There are also some pre-requisites for using the Ironic driver for baremetal deployment of a host.

  1. Requires setting up of the nova-compute node with requisite packages – tftp server, dhcp, ipmi tool etc
  2. Nova flavors corresponding to specific hardware configuration needs to be created
  3. Deployment images need to be created and uploaded to Glance
  4. The baremetal host needs to be enrolled using the Ironic API.

At a high level the steps required to boot a baremetal host looks like this:

  • Authenticate with keystone
  • Send boot request to Nova API
  • Send boot request to Nova Schedular to select the host for baremetal deployment
  • Send boot request to the baremetal host
    • Get the image from Glance (this is done by Ironic Conductor)
    • Configure network using Neutron
    • Set deploy request to Ironic API
      • Deploy host – the deployment flow is based on the Ironic driver used.

As an example, the complete deployment flow using the Ironic PXE driver looks like the following :

ironic-sequence-pxe-deploy

Reference: https://journal.paul.querna.org/articles/2014/07/02/putting-teeth-in-our-public-cloud/

Hope this gives you a basic understanding of Ironic. I would also suggest you refer to article1 & article2, describing Rackspace usage of Ironic for their OnMetal service.

Pradipta Kumar Banerjee

I'm a Cloud and Linux/ OpenSource enthusiast, with 16 years of industry experience at IBM. You can find more details about me here - Linkedin

You may also like...