cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
3073
Views
1
Helpful
0
Comments
rajagast
Level 1
Level 1

Ironic is an OpenStack project which provisions physical hardware as opposed to virtual machines. Making physical hardware provisioning in the cloud as easy as provisioning virtual machines opens up the cloud for some interesting use cases such as:

  • High-performance computing clusters
  • Tasks that require and take advantage of special access to hardware such as GPU and SDI cards
  • Opportunity to avoid overhead of virtualization across networking, compute, and storage resources

OpenStack Ironic leverages standard technologies such as PXE and IPMI to provision hardware and is architected in a way to allow drivers to be pluggable, including vendor-specific drivers for added functionality. By extension, this allows for the use of UCS driver in Ironic to provision UCS servers. Ironic uses the UCS driver along with PXE and IPMI to communicate with the UCS Manager, which in turn provisions servers. If you are using an OpenStack release newer than and including Kilo, the driver is included as part of Ironic. More information on the UCS driver, compatibility with various UCS servers can be found here.

The UCS driver for Ironic has the following capabilities:

  1. The pxe_ucs driver uses PXE/iSCSI to deploy the image and uses UCS Manager to do all management operations on the bare metal server.
  2. The agent_ucs driver uses IPA ramdisk to deploy the image and uses UCS Manager to do all management operations on the bare metal server.
  3. Power on/off operations of the bare metal server using the command ironic node-set-power-state.

Ironic Deployment Process

The figure below (click to expand) shows the deployment process in Ironic:

Ironic_timeline.jpg

  1. A boot instance request comes in via the Nova API, through the message queue to the Nova scheduler.
  2. Nova scheduler applies filter and finds the eligible compute node. Nova scheduler uses flavor extra_specs detail such as ‘cpu_arch’, ‘baremetal:deploy_kernel_id’, ‘baremetal:deploy_ramdisk_id’ etc to match the target physical node.
  3. A spawn task is placed by the driver which contains all information such as which image to boot from etc. It invokes the driver.spawn from the virt layer of Nova compute.
  4. Information about the bare metal node is retrieved from the bare metal database and the node is reserved.
  5. Images from Glance are pulled down to the local disk of the Ironic conductor servicing the bare metal node.
  6. Virtual interfaces are plugged in and Neutron API updates DHCP port to support PXE/TFTP options.
  7. Nova’s ironic driver issues a deploy request via the Ironic API to the Ironic conductor servicing the bare metal node.
  8. PXE driver prepares tftp bootloader.
  9. The IPMI driver issues command to enable network boot of a node and power it on.
  10. The DHCP boots the deploy ramdisk. The PXE driver copies the image over iSCSI to the physical node. It connects to the iSCSI end point, partitions volume, “dd” the image and closes the iSCSI connection. Now the deployment is done. The Ironic conductor will switch pxe config to service mode and notify ramdisk agent on the successful deployment.
  11. The IPMI driver reboots the bare metal node. Note that there are 2 power cycles during bare metal deployment; the first time when powered-on, the images get deployed as mentioned in step 9. The second time as in this case, after the images are deployed, the node is powered up.
  12. The bare metal node status is updated and the node instance is made available.

Installing Ironic and configuring UCS Manager for bare metal provisioning includes the following steps in OpenStack Kilo:

  1. Install Ironic using steps listed in the Bare Metal Service Installation Guide.
  2. Setup Neutron so that the bare metal server can communicate with the OpenStack networking service to DHCP, PXE boot and other information. In OpenStack Kilo, only a single flat network in Neutron is supported, which means that there is a Layer 2 connection between the controller(s) and the bare metal server on the interface where the node can communicate with OpenStack services using the service URLs.
  3. Download deploy and user images: Bare Metal provisioning requires two sets of images: the deploy images and the user images. The deploy images are used by the Bare Metal Service to prepare the bare metal server for actual OS deployment, whereas the user images are installed on the bare metal server to be used by the end user.
  4. Create a new flavor in nova matching the hardware specifications of the bare metal server.
  5. Setup TFTP server for PXE booting the bare metal server.
  6. Setup UCSM Ironic driver by (pip) installing UcsSdk and enabling the UCS drivers (pxe_ucs, agent_ucs) in the Ironic configuration file.
  7. Create service profile(s) in UCS Manager for the bare metal server(s) which are to be provisioned.
  8. Register the hardware with Ironic so that it recognizes the availability of hardware for bare metal provisioning.
  9. Boot the bare metal instance using Nova just as you would boot a virtual machine, but with the bare metal flavor selected.

If you need a detailed Ironic installation guide in OpenStack Kilo, please refer to the Ironic on OpenStack Kilo document.

References:
  1. http://docs.openstack.org/developer/ironic/kilo/deploy/user-guide.html
Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community:


Cisco Cloud Native resources: