bf10b55c9e
The git clones of required roles contained in ansible-role-requirements are currently single-threaded and can take a significant time when running scripts/bootstrap-ansible.sh. A new module, git_requirements has been implemented in order to multithreaded this, which takes input as provided in clone_roles in get-ansible-requirements.yml. The result of this implementation is a sizeable speed increase (~factor of five across the full bootstrap_ansible script) for the git clone repos task when tested on a two core VM. The new module requires all repo information ahead of time in order to distribute the clones between threads. This is unlike the previous implementation, which performed the clones in sequence and generated the appropriate data (destination URL, default refspec etc) per loop iteration. This information is now generated within the ansible module, with defaults supplied at the task level. The retry and delay parameters used for the loop with the built in ansible git module have been re-implemented in the new module to allow force cloning, alongside retries and time delays for failed clones. Change-Id: I3cdb248204c5e03ef98803d366e3a19ed7f8bdd8
63 lines
3.6 KiB
Plaintext
63 lines
3.6 KiB
Plaintext
# Copyright 2016, 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.
|
|
|
|
export OSA_CONFIG_DIR="${OSA_CONFIG_DIR:-/etc/openstack_deploy}"
|
|
|
|
export ANSIBLE_RETRY_FILES_ENABLED="${ANSIBLE_RETRY_FILES_ENABLED:-False}"
|
|
|
|
export ANSIBLE_INVENTORY="${ANSIBLE_INVENTORY:-OSA_INVENTORY_PATH/dynamic_inventory.py,OSA_INVENTORY_PATH/inventory.ini,${OSA_CONFIG_DIR}/inventory.ini}"
|
|
|
|
export ANSIBLE_LOG_PATH="${ANSIBLE_LOG_PATH:-/openstack/log/ansible-logging/ansible.log}"
|
|
mkdir -p "$(dirname ${ANSIBLE_LOG_PATH})" || unset ANSIBLE_LOG_PATH
|
|
|
|
export ANSIBLE_ROLES_PATH="${ANSIBLE_ROLES_PATH:-/etc/ansible/roles:OSA_PLAYBOOK_PATH/roles:/etc/ansible/roles/ceph-ansible/roles}"
|
|
|
|
export ANSIBLE_COLLECTIONS_PATHS="${ANSIBLE_COLLECTIONS_PATHS:-/etc/ansible}"
|
|
export ANSIBLE_COLLECTIONS_PATH="${ANSIBLE_COLLECTIONS_PATH:-/etc/ansible}"
|
|
|
|
export ANSIBLE_LIBRARY="${ANSIBLE_LIBRARY:-OSA_PLAYBOOK_PATH/library:/etc/ansible/roles/config_template/library:/etc/ansible/roles/plugins/library:/etc/ansible/roles/ceph-ansible/library}"
|
|
export ANSIBLE_LOOKUP_PLUGINS="${ANSIBLE_LOOKUP_PLUGINS:-/etc/ansible/roles/plugins/lookup}"
|
|
export ANSIBLE_FILTER_PLUGINS="${ANSIBLE_FILTER_PLUGINS:-/etc/ansible/roles/plugins/filter:/etc/ansible/roles/ceph-ansible/plugins/filter}"
|
|
export ANSIBLE_ACTION_PLUGINS="${ANSIBLE_ACTION_PLUGINS:-/etc/ansible/roles/config_template/action:/etc/ansible/roles/plugins/action:/etc/ansible/roles/ceph-ansible/plugins/actions}"
|
|
export ANSIBLE_CALLBACK_PLUGINS="${ANSIBLE_CALLBACK_PLUGINS:-/etc/ansible/roles/plugins/callback:/etc/ansible/roles/ceph-ansible/plugins/callback}"
|
|
export ANSIBLE_TEST_PLUGINS="${ANSIBLE_TEST_PLUGINS:-/etc/ansible/roles/plugins/test}"
|
|
export ANSIBLE_VARS_PLUGINS="${ANSIBLE_VARS_PLUGINS:-/etc/ansible/roles/plugins/vars_plugins}"
|
|
|
|
export ANSIBLE_GATHERING="${ANSIBLE_GATHERING:-smart}"
|
|
export ANSIBLE_GATHER_SUBSET="${ANSIBLE_GATHER_SUBSET:-network,hardware,virtual}"
|
|
|
|
export ANSIBLE_CACHE_PLUGIN="${ANSIBLE_CACHE_PLUGIN:-jsonfile}"
|
|
export ANSIBLE_CACHE_PLUGIN_CONNECTION="${ANSIBLE_CACHE_PLUGIN_CONNECTION:-${OSA_CONFIG_DIR}/ansible_facts}"
|
|
export ANSIBLE_CACHE_PLUGIN_TIMEOUT="${ANSIBLE_CACHE_PLUGIN_TIMEOUT:-86400}"
|
|
|
|
if [[ "${ANSIBLE_CACHE_PLUGIN}" == "memcached" ]];then
|
|
if ! echo stats | nc -w 1 $(echo ${ANSIBLE_CACHE_PLUGIN_CONNECTION}|awk -F',' '{print $1}'|sed 's/:/ /') > /dev/null; then
|
|
export ANSIBLE_CACHE_PLUGIN="memory"
|
|
fi
|
|
fi
|
|
|
|
export ANSIBLE_HOST_KEY_CHECKING="${ANSIBLE_HOST_KEY_CHECKING:-False}"
|
|
export ANSIBLE_TIMEOUT="${ANSIBLE_TIMEOUT:-5}"
|
|
export ANSIBLE_TRANSPORT="${ANSIBLE_TRANSPORT:-ssh}"
|
|
export ANSIBLE_SSH_PIPELINING="${ANSIBLE_SSH_PIPELINING:-True}"
|
|
export ANSIBLE_SSH_RETRIES="${ANSIBLE_SSH_RETRIES:-5}"
|
|
export ANSIBLE_PIPELINING="${ANSIBLE_SSH_PIPELINING}"
|
|
export ANSIBLE_FORKS="${ANSIBLE_FORKS:-OSA_ANSIBLE_FORKS}"
|
|
|
|
export ANSIBLE_STRATEGY_PLUGINS="${ANSIBLE_STRATEGY_PLUGINS:-/etc/ansible/roles/plugins/strategy}"
|
|
export ANSIBLE_CONNECTION_PLUGINS="${ANSIBLE_CONNECTION_PLUGINS:-/etc/ansible/roles/plugins/connection}"
|
|
|
|
export ANSIBLE_FORCE_HANDLERS="${ANSIBLE_FORCE_HANDLERS:-True}"
|
|
export ANSIBLE_PYTHON_INTERPRETER="${ANSIBLE_PYTHON_INTERPRETER:-OSA_ANSIBLE_PYTHON_INTERPRETER}"
|