[openstack-dev] [ironic][triploe] support for firmware update

Jim Rollenhagen jim at jimrollenhagen.com
Wed Feb 14 15:58:02 UTC 2018


On Mon, Feb 12, 2018 at 6:52 PM, Stig Telfer <stig.openstack at telfer.org>
wrote:

> Hi Moshe -
>
> It seems a bit risky to automatically apply firmware updates.  For
> example, given a node will probably be rebooted for firmware updates to
> take effect, if other vendors also did this then perhaps the node could
> reboot unexpectedly in the middle of your update.  In theory.
>

This depends on how one implements automatic firmware updates. We did
something like this when I was at Rackspace via a number of hardware
managers. Essentially, we created a hardware manager class for each type of
hardware that we wanted to be able to update. We shipped the firmware in
the agent ramdisk, and hardcoded the firmware version in code (as we would
need to ship a new ramdisk to ship a new firmware anyway). Each hardware
manager had a clean step that would check if the firmware needed an update,
and do the update if required, rebooting afterwards.

As clean steps run serially, there isn't much risk of them stepping on each
other.

The approach we’ve taken on handling firmware updates[1] has been to create
> a hardware manager for verifying firmware values during node cleaning and
> raising an exception if they do not match.  The consequence is, nodes will
> drop into maintenance mode for manual inspection / intervention.  We’ve
> then booted the node into a custom image to perform the update.
>
> Hope this helps,
> Stig
>
> [1] https://github.com/stackhpc/stackhpc-ipa-hardware-managers
>
> > On 8 Feb 2018, at 07:43, Moshe Levi <moshele at mellanox.com> wrote:
> >
> > Hi all,
> >
> > I saw that ironic-python-agent support custom hardware manager.
> > I would like to support firmware updates (In my case Mellanox nic) and I
> was wandering how custom hardware manager can be used in such case?
>

There are a few examples of hardware managers out there that might be
helpful[0][1]. These add clean steps that update firmware when the node
goes through cleaning (which is after enrollment, and after an instance is
deleted).

> How it is integrated with ironic-python agent and also is there an
> integration to tripleO as well.
>

I've never done much with tripleo, so I'm not sure if they have a built-in
way to include a hardware manager or if you'd need to build your own
ramdisk and tell tripleo to use that.

As far as integrating it with ironic-python-agent, just make your hardware
manager something that can be installed by pip, and add entrypoints similar
to the example[2]. Then, just install it alongside the agent when building
the image, and it will be included.

// jim

[0]
https://github.com/openstack/proliantutils/blob/master/proliantutils/ipa_hw_manager/hardware_manager.py
[1]
https://github.com/openstack/ipa-example-hardware-managers/blob/master/example_hardware_managers/example_device.py
[2]
https://github.com/openstack/ipa-example-hardware-managers/blob/master/setup.cfg#L19
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20180214/205a4927/attachment.html>


More information about the OpenStack-dev mailing list