Recently while collaborating with one of our customers, they expressed a need to insert some additional software into the Ironic Python Agent (IPA) image. If you have ever worked with Red Hat Openstack Platform director or TripleO (OpenStack on OpenStack), you know both of those use Openstack images to discover the physical hardware and to deploy the Openstack overcloud nodes. The images, however, may not always include additional tools that you might need in the environment and will certainly not include proprietary software.

In this particular case, those tools included HP Proliant software used to cleanse the system (erase/rebuild the RAID storage and reconfigure the firmware settings). Because the HP Proliant tools are proprietary, they are something that does not normally ship in our images. However, this post will guide you through a method of how you can add third-party packages for your specific needs. Please note the example below only shows adding in the following package python-proliantutils for demonstration purposes.

1) Make a temp directory on the director node and go into it:

# mkdir ipa-tmp 
# cd ipa-tmp

2) Extract the original IPA image from the original location into the temp directory. Please be aware you will have to download the image from OpenStack Image Service (Glance).

# /usr/lib/dracut/skipcpio /<path to original IPA image>/ironic-python-agent.initramfs|zcat|cpio -ivd|pax -r

3) Add in your favorite rpm package that you want to be part of the IPA image. In this example we are using the proliantutils package.

# rpm2cpio /<path to rpm of choice>/python-proliantutils-2.1.7-1.el7ost.noarch.rpm | pax -r

4) Pack the director structure back into an initramfs image:

# find . 2>/dev/null | cpio --quiet -c -o | gzip -8  > /root/new-ironic-python-agent.initramfs

5) Upload the new image into Glance to replace the previous IPA image. Note that you will want to rename the new image to the same name as the original image before updating existing:

# source stackrc
# openstack overcloud image upload --update-existing
# openstack baremetal configure boot

Benjamin Schmaus is a Red Hat Cloud TAM in the NA Central region. He has been involved with Linux since 1998 and has supported business environments in a variety of industries: retail, defense, software, financial, higher education and K-12. Most recently he has been focused on enabling our customers in deploying, operating and supporting Red Hat OpenStack Platform and Red Hat Ceph Storage.

A Red Hat Technical Account Manager (TAM) is a specialized product expert who works collaboratively with IT organizations to strategically plan for successful deployments and help realize optimal performance and growth. The TAM is part of Red Hat’s world class Customer Experience and Engagement organization and provides proactive advice and guidance to help you identify and address potential problems before they occur. Should a problem arise, your TAM will own the issue and work to resolve it as quickly as possible with minimal disruption to your business.


About the author

Benjamin Schmaus is a Red Hat Principle Product Manager for Edge Solutions. He has been involved with Linux since 1998 and has supported business environments in a variety of industries: retail, defense, software development, pharmacy, financial, higher education and K-12. His experience in those industries along with various positions within Red Hat have enabled him to have a broad and deep understanding of customer challenges. Most recently, he has been focused on enabling our customers at the edge by driving the Red Hat portfolio to deliver edge solutions that meet their ever diverse needs as they journey through modernization.

Read full bio