[openstack-dev] [tripleo] Mutli-arch image support

Tony Breeds tony at bakeyournoodle.com
Tue Dec 19 04:08:34 UTC 2017

Hi All,
    As you're all aware we're trying to bring support to tripleo that
enables multiple-architectures in the same tripleo managed/deployed
overcloud.  The first real difference comes to how we handle the ,now,
multiple images required.

To validated that my understanding of the x86_64 only situation is
correct we have the following images:
 - ironic-python-agent.kernel
 - ironic-python-agent.initramfs
 - overcloud-full.vmlinuz
 - overcloud-full.initrd
 - overcloud-full.qcow2

And we'll need each of those to support multiple architectures which
backwards compatibility the list for a 2 architecture cloud would be 
 - {,x86_64-}ironic-python-agent.kernel
 - {,x86_64-}ironic-python-agent.initramfs
 - {,x86_64-}overcloud-full.vmlinuz
 - {,x86_64-}overcloud-full.initrd
 - {,x86_64-}overcloud-full.qcow2
 - ppc64le-ironic-python-agent.kernel
 - ppc64le-ironic-python-agent.initramfs
 - ppc64le-overcloud-full.vmlinuz
 - ppc64le-overcloud-full.initrd
 - ppc64le-overcloud-full.qcow2

All images would be tagged with a hw_architecture, defaulting to x86_64
if not supplied.

So the selection model for any given image target would be:
 1. $arch-imagename
 2. if arch isn't supplied or is x86_64 fall back to plain imagename

And then we'd add logic to tripleo to look at the architecture of the
baremetal node and pick the correct image for deploy/imageing.  There
are a couple of work in progress changes to do this at:
 - https://review.openstack.org/#/q/status:open+topic:bug/173822

We can iterate on those, however a single architecture 'ppc64le' doesn't
always provide adequate differentiation.  For example you may need one
kernel image (and userspace) for POWER8 processors and a different one
for POWER9.  Ideally we'd just use arch but that's invariant :(

I'd like to introduce the concept of a platform which is in many ways a
companion or a fine grained selector for images.  This would be supplied
by the operator in instackenv.json, added as image meta-data as the
image is uploaded and if needed added to the baremetal node as
a capability.  Then the selection model would become:
 1. $arch-imagename with appropriate image meta-data
 1. $arch-imagename
 2. if arch isn't supplied or is x86_64 fall back to plain imagename

How does that sound?

Yours Tony.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20171219/b52029b6/attachment.sig>

More information about the OpenStack-dev mailing list