|tags:||openstack, ansible, power|
The purpose of this spec is to enable OpenStack-Ansible to deploy OpenStack in clouds with multiple CPU architectures across the nodes to be deployed.
The purpose of this spec is to add support for multiple CPU architectures to OpenStack-Ansible. With the introduction of OpenStack services running on other architectures such as PPC64LE, OpenStack-Ansible needs to be extended to support environments where a mixed environment of CPU architectures exists.
OpenStack-Ansible was initially built to support deployments to a single architecture, primarily x86. With the extension of OpenStack and OpenStack-Ansible support to other platforms such as POWER, support for deployments running a combination of different CPU architectures is needed.
For each deployment, OpenStack-Ansible creates and builds a ‘repo’ containing necessary artifacts for the OpenStack deployment. This repo holds components such as pip wheels, virtualenvs, and source trees for the different services to be deployed. For each deployment a single ‘master’ repo is designated where artifacts are built, then synchronized out to the rest of the slaves.
This creates problems in a multi-architecture deployment for nodes where the repo master’s CPU architecture is different than the architecture of other nodes. For example, deployment of a KVM on POWER compute node will fail when the artifacts were built on an x86 repo master used for the control plane.
Update OpenStack-Ansible and necessary roles to support building and deploying with multiple CPU architectures. This includes changes to:
There will be impact to the repo playbooks to handle building and synchronizing across multiple architectures. There will also be minor impact to each role to support building and tagging artifacts with the required architecture information.
Both repo build and synchronization operations will take longer to complete proportionate to the number of CPU architectures being deployed.
No end user impact is expected.
Deployers will now be able to create deployments with servers of multiple CPU architectures included.
No other deployer impact is expected as the detection of multiple architectures, deploy of the required number of repo masters for each architecture, and build of artifacts for each architecture should happen dynamically.
Developer impact will be minor. Developers will now be able to develop for and test deployments across multiple CPU architectures. It also enables development of roles specific to other CPU architectures in the future, such as ARM.
A new test job will be added that deploys a two-node configuration, with one node belonging to the upstream/default architecture (x86) and the other of an additional CPU architecture to be supported (ppc64el, arm64, etc).
Documentation covering how to configure multi-arch support will be added to the user guide.