From 108ea9634963c7d010793b42d46c038362d37124 Mon Sep 17 00:00:00 2001 From: Adam Reznechek Date: Mon, 25 Jul 2016 08:54:41 -0500 Subject: [PATCH] Add discovery and build for multiple CPU architectures This adds support for discovery of repo build servers for multiple CPU architectures. When multiple architectures are detected among the repo servers, this patch allows repo-install to assign and store a list of 'master' build servers for each CPU architecture, then use this to build artifacts independently for each CPU architecture in the deployment. Partially-Implements: bp/multi-arch-repo Change-Id: Ibfb77cc4ce87c9064f9af84946c5a9bbba5e1fb4 --- playbooks/repo-build.yml | 19 ++++++++++++++++++- .../multi-arch-support-a8762f6ea7fdbcef.yaml | 8 ++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/multi-arch-support-a8762f6ea7fdbcef.yaml diff --git a/playbooks/repo-build.yml b/playbooks/repo-build.yml index 61bb193c23..6f169a4038 100644 --- a/playbooks/repo-build.yml +++ b/playbooks/repo-build.yml @@ -13,14 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +- name: Group repo servers by architecture + hosts: repo_all + tasks: + - name: Group repo servers by architecture + group_by: + key: repo_servers_{{ ansible_architecture }} + tags: + - "repo-build" + +# repo_all[0] is built last to ensure it has all build artifacts for final indexing - name: Build new repo packages for a given release - hosts: repo_all[0] + hosts: repo_all[1:],repo_all[0] gather_facts: true user: root + serial: 1 pre_tasks: - name: Load local packages debug: msg: "Loading Packages" + when: + - "groups['repo_servers_{{ ansible_architecture }}'] | length > 0" + - "inventory_hostname == groups['repo_servers_{{ ansible_architecture }}'][0]" with_py_pkgs: "{{ pkg_locations }}" register: local_packages tags: @@ -28,6 +42,9 @@ roles: - role: "repo_build" repo_build_release_tag: "{{ openstack_release }}" + when: + - "groups['repo_servers_{{ ansible_architecture }}'] | length > 0" + - "inventory_hostname == groups['repo_servers_{{ ansible_architecture }}'][0]" tags: - "repo-build" vars: diff --git a/releasenotes/notes/multi-arch-support-a8762f6ea7fdbcef.yaml b/releasenotes/notes/multi-arch-support-a8762f6ea7fdbcef.yaml new file mode 100644 index 0000000000..5f964a5d76 --- /dev/null +++ b/releasenotes/notes/multi-arch-support-a8762f6ea7fdbcef.yaml @@ -0,0 +1,8 @@ +--- +features: + - The repo install process is now able to support building and synchronizing + artifacts for multiple CPU architectures. To support multiple architectures, + one or more repo servers must be created for each CPU architecture in the + deployment. When multiple CPU architectures are detected among the repo + servers, the repo-discovery process will automatically assign a repo + master to perform the build process for each architecture.