6b12bf3663
This patch implements the following: - scripts-library.sh which includes commonly used functions, variables and other preparation commands for all other scripts - bootstrap-ansible.sh which only deploys a selected version of ansible and ensures that any other requirements are prepared on the deployment host - bootstrap-aio.sh which runs all host preparation actions for an all-in-one build - gate-check-lint.sh which runs a lint and syntax check - gate-check-commit.sh which runs all actions required for a gate commit check, utilising the other scripts where required - run-smoke-test.sh which runs tempest from inside the utility container - run-playbooks.sh which runs the playbooks - the existing conf.d/swift.yml is renamed to be an example configuration - the example configurations can be used as documentation - etc/network/interfaces.d/aio_interfaces.cfg, etc/rpc_deploy/conf.d/swift.yml and etc/rpc_deploy/rpc_user_config.yml are now configurations used for the AIO deployment - a workaround for https://bugs.launchpad.net/bugs/1244589 to ensure that DHCP checksums are implemented by the host which is required for the smoke tests to work - the removal of the rpc heat templates as they're unusable in their current state - setting MAX_RETRIES to 0, ensuring that any failures cause an immediate commit check failure in the gate - this prevents the masking of failures by retry attempts DocImpact Co-Authored-By: Kevin Carter <kevin.carter@rackspace.com> Closes-Bug: #1415883 Closes-Bug: #1417999 Closes-Bug: #1419807 Change-Id: I95242d48ad0fb055f16510803c8aa14dc183ac17
74 lines
2.5 KiB
Bash
Executable File
74 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2014, 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.
|
|
|
|
## Shell Opts ----------------------------------------------------------------
|
|
|
|
set -e -u -v +x
|
|
|
|
## Variables -----------------------------------------------------------------
|
|
|
|
BOOTSTRAP_ANSIBLE=${BOOTSTRAP_ANSIBLE:-"yes"}
|
|
PLAYBOOK_PATH=${PLAYBOOK_PATH:-"rpc_deployment/playbooks"}
|
|
|
|
## Functions -----------------------------------------------------------------
|
|
|
|
info_block "Checking for required libraries." || source $(dirname ${0})/scripts-library.sh
|
|
|
|
## Main ----------------------------------------------------------------------
|
|
|
|
# Enable logging of all commands executed
|
|
set -x
|
|
|
|
# Bootstrap ansible if required
|
|
if [ "${BOOTSTRAP_ANSIBLE}" == "yes" ]; then
|
|
source $(dirname ${0})/bootstrap-ansible.sh
|
|
fi
|
|
|
|
# Check whether pip or pip2 is available
|
|
if ! ( which pip > /dev/null && which pip2 > /dev/null ); then
|
|
info_block "ERROR: Please install pip before proceeding."
|
|
exit 1
|
|
fi
|
|
|
|
# Check whether ansible-playbook is available
|
|
if ! which ansible-playbook > /dev/null; then
|
|
info_block "ERROR: Please install ansible before proceeding."
|
|
exit 1
|
|
fi
|
|
|
|
# Install the development requirements
|
|
if [ -f dev-requirements.txt ]; then
|
|
pip2 install -r dev-requirements.txt || pip install -r dev-requirements.txt
|
|
else
|
|
pip2 install ansible-lint || pip install ansible-lint
|
|
fi
|
|
|
|
# Perform our simple sanity checks
|
|
echo -e '[all]\nlocalhost ansible_connection=local' | tee local_only_inventory
|
|
|
|
# Do a basic syntax check on all playbooks and roles
|
|
info_block "Running Syntax Check"
|
|
ansible-playbook -i local_only_inventory --syntax-check \
|
|
$(find ${PLAYBOOK_PATH} -type f -name "*.yml" \
|
|
! -name "os-service-config-update.yml" \
|
|
! -name "host-network-setup.yml")
|
|
|
|
# Perform a lint check on all playbooks and roles
|
|
info_block "Running Lint Check"
|
|
ansible-lint --version
|
|
ansible-lint $(find ${PLAYBOOK_PATH} -type f -name "*.yml" \
|
|
! -name "os-service-config-update.yml" \
|
|
! -name "host-network-setup.yml")
|