Adjust inside/outside openstack-ci bootstrap-host tasks

To optimise the execution and to simplify it, we re-arrange the
tasks in such a way that there are only two blocks - one for
execution inside openstack-infra, and one for outside.

Also, Zuul places a /etc/pip.conf file on the host but we do not
need it given that we have our own implementation of pip config
which uses the correct mirrors based on the mirror script.
As such, we no longer want this file in the containers, so we
remove the setting which makes lxc_hosts copy it into the
container cache when it is prepared.

Conflicts:
1. tests/roles/bootstrap-host/tasks/prepare_aio_config.yml
   re-implementation due to differing content applied to this
   branch

Change-Id: I4986ff4d21e9fa8b77115ab80c66de99afe45f6c
(cherry picked from commit 3c50f79c98)
This commit is contained in:
Jesse Pretorius 2018-05-09 10:02:10 +01:00
parent dd2d5f5e4f
commit 76f7491021
1 changed files with 68 additions and 109 deletions

View File

@ -62,85 +62,78 @@
path: /etc/nodepool
register: nodepool_dir
# OVH nodepool nodes have an issue which causes nested virt
# instances to crash with a hardware error, then a dump.
# We therefore detect whether we're running on OVH and
# force it to use qemu instead.
- name: Discover the OpenStack-Infra mirrors
shell: |
source /etc/ci/mirror_info.sh
NODEPOOL_OVERRIDES="/etc/openstack_deploy/user_openstackci.yml"
echo "uca_apt_repo_url: '${NODEPOOL_UCA_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
echo "openstack_hosts_centos_mirror_url: '${NODEPOOL_CENTOS_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
if [[ ${NODEPOOL_PYPI_MIRROR} == *.ovh.* ]]; then
echo "nova_virt_type: 'qemu'" >> ${NODEPOOL_OVERRIDES}
fi
echo "repo_build_pip_default_index: '${NODEPOOL_PYPI_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
args:
executable: /bin/bash
when:
- nodepool_dir.stat.exists | bool
tags:
- skip_ansible_lint
- name: Discover the OpenStack-Infra pypi/wheel mirror
shell: |
source /etc/ci/mirror_info.sh
echo "${NODEPOOL_WHEEL_MIRROR}"
args:
executable: /bin/bash
register: _pypi_wheel_mirror
when:
- nodepool_dir.stat.exists | bool
tags:
- skip_ansible_lint
- name: Discover the OpenStack-Infra LXC reverse proxy
shell: |
source /etc/ci/mirror_info.sh
echo ${NODEPOOL_LXC_IMAGE_PROXY}
register: _lxc_mirror
args:
executable: /bin/bash
when:
- nodepool_dir.stat.exists | bool
tags:
- skip_ansible_lint
- name: Set the package cache timeout to 60 mins in OpenStack-CI
set_fact:
cache_timeout: 3600
when:
- cache_timeout is not defined
- nodepool_dir.stat.exists
- name: Determine if the host has a global pip config file
stat:
path: /etc/pip.conf
register: pip_conf_file
# This is a very dirty hack due to images.linuxcontainers.org
# constantly failing to resolve in openstack-infra.
- name: Implement hard-coded hosts entries for consistently failing name
lineinfile:
path: "/etc/hosts"
line: "{{ item }}"
state: present
with_items:
- "91.189.91.21 images.linuxcontainers.org us.images.linuxcontainers.org"
- "91.189.88.37 images.linuxcontainers.org uk.images.linuxcontainers.org"
- name: Set facts when inside of OpenStack-Infra
when:
- nodepool_dir.stat.exists
block:
# OVH nodepool nodes have an issue which causes nested virt
# instances to crash with a hardware error, then a dump.
# We therefore detect whether we're running on OVH and
# force it to use qemu instead.
- name: Discover the OpenStack-Infra mirrors
shell: |
source /etc/ci/mirror_info.sh
NODEPOOL_OVERRIDES="/etc/openstack_deploy/user_openstackci.yml"
echo "uca_apt_repo_url: '${NODEPOOL_UCA_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
echo "openstack_hosts_centos_mirror_url: '${NODEPOOL_CENTOS_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
if [[ ${NODEPOOL_PYPI_MIRROR} == *.ovh.* ]]; then
echo "nova_virt_type: 'qemu'" >> ${NODEPOOL_OVERRIDES}
fi
echo "repo_build_pip_default_index: '${NODEPOOL_PYPI_MIRROR}'" >> ${NODEPOOL_OVERRIDES}
args:
executable: /bin/bash
tags:
- skip_ansible_lint
- name: Determine the fastest available OpenStack-Infra wheel mirror
command: "{{ bootstrap_host_aio_script_path }}/fastest-infra-wheel-mirror.py"
register: fastest_wheel_mirror
when: not pip_conf_file.stat.exists
- name: Discover the OpenStack-Infra pypi/wheel mirror
shell: |
source /etc/ci/mirror_info.sh
echo "${NODEPOOL_WHEEL_MIRROR}"
args:
executable: /bin/bash
register: _pypi_wheel_mirror
tags:
- skip_ansible_lint
- name: Set repo_build_pip_extra_indexes fact
set_fact:
repo_build_pip_extra_indexes: "{{ fastest_wheel_mirror.stdout_lines }}"
when: not pip_conf_file.stat.exists
- name: Discover the OpenStack-Infra LXC reverse proxy
shell: |
source /etc/ci/mirror_info.sh
echo ${NODEPOOL_LXC_IMAGE_PROXY}
register: _lxc_mirror
args:
executable: /bin/bash
tags:
- skip_ansible_lint
- name: Set the package cache timeout to 60 mins in OpenStack-CI
set_fact:
cache_timeout: 3600
when:
- cache_timeout is not defined
# This is a very dirty hack due to images.linuxcontainers.org
# constantly failing to resolve in openstack-infra.
- name: Implement hard-coded hosts entries for consistently failing name
lineinfile:
path: "/etc/hosts"
line: "{{ item }}"
state: present
with_items:
- "91.189.91.21 images.linuxcontainers.org us.images.linuxcontainers.org"
- "91.189.88.37 images.linuxcontainers.org uk.images.linuxcontainers.org"
- name: Set facts when outside of OpenStack-Infra
when:
- not nodepool_dir.stat.exists
block:
- name: Determine the fastest available OpenStack-Infra wheel mirror
command: "{{ bootstrap_host_aio_script_path }}/fastest-infra-wheel-mirror.py"
register: fastest_wheel_mirror
- name: Set repo_build_pip_extra_indexes fact
set_fact:
repo_build_pip_extra_indexes: "{{ fastest_wheel_mirror.stdout_lines }}"
when: not pip_conf_file.stat.exists
- name: Check whether the host has a git cache
stat:
@ -173,37 +166,3 @@
dest: "/etc/openstack_deploy/env.d/cinder-volume.yml"
when:
- "bootstrap_host_scenario == 'ceph'"
- name: Add user_conf_files to contain the list of files to copy into containers
file:
path: /etc/openstack_deploy/user_conf_files.yml
state: touch
when: pip_conf_file.stat.exists
tags:
- container-conf-files
- name: Ensure that the first line in user_conf_files is correct
lineinfile:
dest: /etc/openstack_deploy/user_conf_files.yml
line: "---"
insertbefore: BOF
when: pip_conf_file.stat.exists
tags:
- container-conf-files
- name: Ensure that the second line in user_conf_files is correct
lineinfile:
dest: /etc/openstack_deploy/user_conf_files.yml
line: "lxc_container_cache_files:"
insertafter: "^---"
when: pip_conf_file.stat.exists
tags:
- container-conf-files
- name: Add the dict to copy the global pip config file into user_conf_files
lineinfile:
dest: /etc/openstack_deploy/user_conf_files.yml
line: " - { src: '/etc/pip.conf', dest: '/etc/pip.conf' }"
when: pip_conf_file.stat.exists
tags:
- container-conf-files