--- # Copyright 2018, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - name: Gather variables for each operating system include_vars: "{{ lookup('first_found', params) }}" vars: params: files: - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml" - "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml" - "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml" - "{{ ansible_facts['distribution'] | lower }}.yml" - "{{ ansible_facts['os_family'] | lower }}.yml" paths: - "{{ role_path }}/vars" tags: - always - name: Gather build target facts setup: gather_subset: '!all:min' delegate_to: "{{ item }}" delegate_facts: true # NOTE(noonedeadpunk): failed_when is used instead of ignore_errors as latter # results in failed task, meaning that gathered facts for # reachable hosts are not preserved as a result. failed_when: false with_items: "{{ groups[venv_build_group] | default([inventory_hostname]) }}" tags: - always run_once: true # NOTE(noonedeadpunk): If you are deploying services from local forks high load on which is not # an issue for you, you can disable this with `venv_wheel_build_skip_check: true` - name: Fail if wheels are not built for multiple hosts fail: msg: >- You are not building wheels while running role against multiple hosts. This might result in DOS-ing OpenDev infrustructure servers. In order to proceed, please ensure that you have repo servers for selected OS version and architecture. If you want to avoid building wheel on purpose, ensure that you run playbook in serial manner. In case of causing unreasonable load on the opendev.org git servers, your access may be blocked to protect other users and the OpenDev CI infrastructure which are reliant on this service. Found venv_build_targets: {{ venv_build_targets }} when: - not venv_wheel_build_enable | bool - ansible_play_batch | length > 2 - not (venv_wheel_build_skip_check | default(False)) - name: Fail if no wheels build host is available fail: msg: >- You are trying to build wheels for the distribution or architecture that you don't have build host for. Please, ensure that you have at least 1 host in {{ venv_build_group }} group with the following distribution: {{ _venv_build_dist_arch | replace('-', ' ') }} Otherwise, consider adding matching OS to the group or set `venv_wheel_build_enable: False`. Note, that you can run only in a serial manner when wheel build is disabled. Found venv_build_targets: {{ venv_build_targets }} when: - venv_wheel_build_enable | bool - _venv_build_dist_arch not in venv_build_targets - name: Including python_venv_wheel_build tasks include_tasks: "python_venv_wheel_build.yml" args: apply: tags: - build when: - venv_wheel_build_enable | bool - inventory_hostname in _venv_wheels_first_play_hosts tags: - always - name: Including python_venv_install tasks import_tasks: "python_venv_install.yml" tags: - install - name: Including python_venv_set_facts tasks include_tasks: "python_venv_set_facts.yml" args: apply: tags: - install when: - venv_facts_when_changed | length > 0 tags: - always