tripleo-ci/toci_instack_oooq_multinode.sh
David Moreau-Simard e10052f8a9 Replace "ara generate" by "ara generate html", move report to ara_oooq
The newest version of ARA, 0.11, deprecated "ara generate" in favor
of "ara generate html". "ara generate" will be removed sometime in
the future so let's adjust it right away.

Change-Id: Idb3332922250d6320ebf2800dda0c9d77e5a4f08
2017-04-25 08:54:12 -04:00

162 lines
7.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eux
set -o pipefail
## Signal to toci_gate_test.sh we've started by
touch /tmp/toci.started
export CURRENT_DIR=$(dirname ${BASH_SOURCE[0]:-$0})
export TRIPLEO_CI_DIR=$CURRENT_DIR/../
# TODO(sshnaidm): remove this immediately when settings are in yaml files
source $TRIPLEO_CI_DIR/tripleo-ci/scripts/common_vars.bash
source $TRIPLEO_CI_DIR/tripleo-ci/scripts/common_functions.sh
#source $TRIPLEO_CI_DIR/tripleo-ci/scripts/metrics.bash
# Clear out any puppet modules on the node placed their by infra configuration
sudo rm -rf /etc/puppet/modules/*
# Copy nodepool public key to jenkins user
sudo cp /etc/nodepool/id_rsa.pub $HOME/.ssh/
sudo chown $USER:$USER $HOME/.ssh/id_rsa.pub
# TODO(sshnaidm): To create tripleo-ci special yaml config files in oooq
# for every TOCI_JOBTYPE, i.e. ovb-nonha-ipv6.yml
if [[ "$TOCI_JOBTYPE" =~ "multinode" ]]; then
CONFIG=${CONFIG:-"$TRIPLEO_CI_DIR/tripleo-ci/scripts/quickstart/multinode-settings.yml"}
elif [[ "$TOCI_JOBTYPE" =~ "-ha" ]]; then
CONFIG=${CONFIG:-"$TRIPLEO_ROOT/tripleo-quickstart/config/general_config/ha.yml"}
elif [[ "$TOCI_JOBTYPE" =~ "-nonha" ]]; then
CONFIG=${CONFIG:-"$TRIPLEO_ROOT/tripleo-quickstart/config/general_config/minimal.yml"}
else
CONFIG=${CONFIG:-"$TRIPLEO_ROOT/tripleo-quickstart/config/general_config/minimal.yml"}
fi
# This needs to be set for tripleo.sh's pingtest to be passed the correct template
# See tripleo.sh $TENANT_PINGTEST_TEMPLATE for more details
MULTINODE_ENV_NAME=${MULTINODE_ENV_NAME/-oooq/}
# Generate a scenario quickstart ARGs snippet
if [[ "$TOCI_JOBTYPE" =~ "scenario" ]]; then
SCENARIO_ARGS="--extra-vars @${SCENARIO_ARGS:-$TRIPLEO_ROOT/tripleo-quickstart-extras/config/general_config/${TOCI_JOBTYPE/-oooq*/}.yml}"
fi
# Add jenkin user's SSH key to root authorized_keys for Ansible to run
sudo mkdir -p /root/.ssh/
sudo cp ${HOME}/.ssh/authorized_keys /root/.ssh/
sudo chmod 0600 /root/.ssh/authorized_keys
sudo chown root:root /root/.ssh/authorized_keys
# TODO(bkero): Use an ansible role to create this file
sudo yum install -y qemu-img
qemu-img create -f qcow2 $HOME/overcloud-full.qcow2 1G
# Bootstrap the subnodes
$TRIPLEO_CI_DIR/tripleo-ci/scripts/tripleo.sh --bootstrap-subnodes 2>&1 | sudo dd of=/var/log/bootstrap-subnodes.log || (tail -n 50 /var/log/bootstrap-subnodes.log && false)
# Install our test cert so SSL tests work
sudo cp $TRIPLEO_ROOT/tripleo-ci/test-environments/overcloud-cacert.pem /etc/pki/ca-trust/source/anchors/
sudo cp $TRIPLEO_ROOT/tripleo-ci/test-environments/overcloud-cacert-ipv6.pem /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
# TODO(sshnaidm): to move these variables to jobs yaml config files (see above)
if [[ "${STABLE_RELEASE}" =~ ^(liberty|mitaka)$ ]] ; then
export OVERCLOUD_DEPLOY_ARGS="$OVERCLOUD_DEPLOY_ARGS -e $TRIPLEO_ROOT/tripleo-ci/test-environments/worker-config-mitaka-and-below.yaml"
else
export OVERCLOUD_DEPLOY_ARGS="$OVERCLOUD_DEPLOY_ARGS -e $TRIPLEO_ROOT/tripleo-ci/test-environments/worker-config.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/low-memory-usage.yaml"
fi
# force ansible to not output console color codes
export ANSIBLE_NOCOLOR=1
export OPT_WORKDIR=${WORKSPACE}/.quickstart
export OOOQ_LOGS=${WORKSPACE}/logs/oooq
export OOO_WORKDIR_LOCAL=$HOME
export OOOQ_DEFAULT_ARGS=" --working-dir $OPT_WORKDIR --retain-inventory -T none -e working_dir=$OOO_WORKDIR_LOCAL -R ${STABLE_RELEASE:-master}"
export OOOQ_ARGS=" --working-dir ${OPT_WORKDIR} \
-e working_dir=${OOO_WORKDIR_LOCAL} \
--bootstrap \
--no-clone \
--retain-inventory \
--tags build,undercloud-setup,undercloud-scripts,undercloud-install,undercloud-post-install,overcloud-scripts,overcloud-deploy,overcloud-validate \
--teardown none \
--release ${STABLE_RELEASE:-master} \
--config ${CONFIG} \
--extra-vars @$TRIPLEO_ROOT/tripleo-quickstart/config/release/tripleo-ci/${STABLE_RELEASE:-master}.yml \
${SCENARIO_ARGS:-""} \
--playbook multinode-playbook.yml \
--requirements requirements.txt \
--requirements quickstart-extras-requirements.txt \
127.0.0.2"
#shopt -s extglob
#rm -rf /opt/stack/new/!(tripleo-ci|tripleo-quickstart|tripleo-quickstart-extras)
# End of cleaning
# HINT: If there's no enough space, remove swap file in /root/
# TODO(sshnaidm): when collect-logs role will have the same functionality,
# replace postci function with this role (see in the end of file).
trap "exit_val=\$?; [ \$exit_val != 0 ] && echo ERROR DURING PREVIOUS COMMAND ^^^ && echo 'See postci.txt in the logs directory for debugging details'; postci \$exit_val 2>&1 | awk '{ print strftime(\"%Y-%m-%d %H:%M:%S.000\"), \"|\", \$0; fflush(); }' > $WORKSPACE/logs/postci.log 2>&1" EXIT
mkdir -p $WORKSPACE/logs
export IP_DEVICE=${IP_DEVICE:-"eth0"}
MY_IP=$(ip addr show dev $IP_DEVICE | awk '/inet / {gsub("/.*", "") ; print $2}')
MY_IP_eth1=$(ip addr show dev eth1 | awk '/inet / {gsub("/.*", "") ; print $2}') || MY_IP_eth1=""
export http_proxy=""
undercloud_net_range="192.168.24."
undercloud_services_ip=$undercloud_net_range"1"
undercloud_haproxy_public_ip=$undercloud_net_range"2"
undercloud_haproxy_admin_ip=$undercloud_net_range"3"
export no_proxy=$undercloud_services_ip,$undercloud_haproxy_public_ip,$undercloud_haproxy_admin_ip,$MY_IP,$MY_IP_eth1
[[ ! -e $OPT_WORKDIR ]] && mkdir -p $OPT_WORKDIR && sudo chown -R ${USER}: $OPT_WORKDIR
sudo mkdir $OOOQ_LOGS && sudo chown -R ${USER}: $OOOQ_LOGS
# make the requirements point to local checkout of tripleo-quickstart-extras
echo "file://${TRIPLEO_ROOT}/tripleo-quickstart-extras/#egg=tripleo-quickstart-extras" > ${TRIPLEO_ROOT}/tripleo-quickstart/quickstart-extras-requirements.txt
# TODO(bkero): Correct this with a dynamic inventory configuration
sed -i 's/^undercloud ansible_host=undercloud/undercloud ansible_host=127.0.0.2/' $TRIPLEO_ROOT/tripleo-ci/scripts/hosts
cp $TRIPLEO_ROOT/tripleo-ci/scripts/hosts $OPT_WORKDIR/hosts
cp $TRIPLEO_ROOT/tripleo-ci/scripts/quickstart/*y*ml $TRIPLEO_ROOT/tripleo-quickstart/playbooks/
$TRIPLEO_ROOT/tripleo-quickstart/quickstart.sh --install-deps
pushd $TRIPLEO_ROOT/tripleo-quickstart/
# We wrap the quickstart call in a timeout, so that we can get logs if the
# deploy hangs. 90m = 90 minutes = 1.5 hours
/usr/bin/timeout --preserve-status 90m \
$TRIPLEO_ROOT/tripleo-quickstart/quickstart.sh \
${OOOQ_ARGS} 2>&1 | tee $OOOQ_LOGS/quickstart_install.log && exit_value=0 || exit_value=$?
sudo journalctl -u os-collect-config | sudo tee /var/log/os-collect-config.txt
tar -czf $OOOQ_LOGS/quickstart.tar.gz $OPT_WORKDIR
# TODO(sshnaidm): fix this either in role or quickstart.sh
# it will not duplicate logs from undercloud and 127.0.0.2
sed -i 's/hosts: all:!localhost/hosts: all:!localhost:!127.0.0.2/' $OPT_WORKDIR/playbooks/collect-logs.yml || true
$TRIPLEO_ROOT/tripleo-quickstart/quickstart.sh --bootstrap --no-clone \
$OOOQ_DEFAULT_ARGS \
--playbook collect-logs.yml \
-e artcl_collect_dir=$OOOQ_LOGS \
-e @$TRIPLEO_ROOT/tripleo-ci/scripts/quickstart/multinode-settings.yml \
--config $CONFIG \
-e tripleo_root=$TRIPLEO_ROOT \
127.0.0.2 &> $OOOQ_LOGS/quickstart_collectlogs.log ||
echo "WARNING: quickstart collect-logs failed, check quickstart_collectlogs.log for details"
export ARA_DATABASE="sqlite:///${OPT_WORKDIR}/ara.sqlite"
$OPT_WORKDIR/bin/ara generate html $OOOQ_LOGS/ara_oooq || true
popd
echo 'Run completed.'
# TODO(sshnaidm): remove this when we're sure there's enough space
# Watch free space, the outage could break jobs
sudo df -h
exit $exit_value