Use ansible-playbook in place of quickstart.sh

This will change CI to only use quicktart.sh to bootstrap the
virtualenv. The ansible-playbook command will then be run
directly for the deploy and collect logs.

This is a first step in breaking the deploy into multiple
ansible-playbook calls so that we CI the ability to run them in
stages for development purposes.

Change-Id: Ie0a3729277fb608c653e7bc2ab85781d9b815880
This commit is contained in:
John Trowbridge 2017-12-04 14:58:00 -05:00
parent 473afcc755
commit 46c5a0b62c
2 changed files with 56 additions and 33 deletions

View File

@ -125,21 +125,22 @@ export EXTRA_VARS=${EXTRA_VARS:-""}
export EXTRA_VARS="$EXTRA_VARS --extra-vars deploy_timeout=$OVERCLOUD_DEPLOY_TIMEOUT"
export NODES_ARGS=""
export COLLECT_CONF="$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/collect-logs.yml"
LOCAL_WORKING_DIR="$WORKSPACE/.quickstart"
LWD=$LOCAL_WORKING_DIR
# Assemble quickstart configuration based on job type keywords
for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do
case $JOB_TYPE_PART in
featureset*)
FEATURESET_FILE="config/general_config/$JOB_TYPE_PART.yml"
FEATURESET_CONF="$FEATURESET_CONF --config $FEATURESET_FILE"
FEATURESET_FILE="$LWD/config/general_config/$JOB_TYPE_PART.yml"
FEATURESET_CONF="$FEATURESET_CONF --extra-vars @$FEATURESET_FILE"
;;
ovb)
OVB=1
ENVIRONMENT="ovb"
UCINSTANCEID=$(http_proxy= curl http://169.254.169.254/openstack/2015-10-15/meta_data.json | python -c 'import json, sys; print json.load(sys.stdin)["uuid"]')
PLAYBOOK="baremetal-full-deploy.yml"
ENV_VARS="$ENV_VARS --environment $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/ovb.yml"
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/ovb.yml"
if [[ -f "$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/ovb-$RHCLOUD.yml" ]]; then
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/ovb-$RHCLOUD.yml"
fi
@ -150,13 +151,13 @@ for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do
ENVIRONMENT="osinfra"
PLAYBOOK="multinode.yml"
FEATURESET_CONF="
--extra-vars @config/general_config/featureset-multinode-common.yml
--extra-vars @$LWD/config/general_config/featureset-multinode-common.yml
$FEATURESET_CONF
"
if [[ $NODEPOOL_PROVIDER == "rdo-cloud-tripleo" ]]; then
ENV_VARS="$ENV_VARS --environment $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode-rdocloud.yml"
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode-rdocloud.yml"
else
ENV_VARS="$ENV_VARS --environment $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode.yml"
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode.yml"
fi
UNDERCLOUD="127.0.0.2"
TAGS="build,undercloud-setup,undercloud-scripts,undercloud-install,undercloud-post-install,tripleo-validations,overcloud-scripts,overcloud-prep-config,overcloud-prep-containers,overcloud-deploy,overcloud-upgrade,overcloud-validate"
@ -168,13 +169,13 @@ for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do
UNDERCLOUD="127.0.0.2"
PLAYBOOK="multinode.yml"
FEATURESET_CONF="
--extra-vars @config/general_config/featureset-multinode-common.yml
--extra-vars @$LWD/config/general_config/featureset-multinode-common.yml
$FEATURESET_CONF
"
if [[ $NODEPOOL_PROVIDER == "rdo-cloud-tripleo" ]]; then
ENV_VARS="$ENV_VARS --environment $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode-rdocloud.yml"
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode-rdocloud.yml"
else
ENV_VARS="$ENV_VARS --environment $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode.yml"
ENV_VARS="$ENV_VARS --extra-vars @$TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/multinode.yml"
fi
TAGS="build,undercloud-setup,undercloud-scripts,undercloud-install,undercloud-validate,images"
;;
@ -186,7 +187,7 @@ for JOB_TYPE_PART in $(sed 's/-/ /g' <<< "${TOCI_JOBTYPE:-}") ; do
;;
*)
# the rest should be node configuration
NODES_FILE="config/nodes/$JOB_TYPE_PART.yml"
NODES_FILE="$TRIPLEO_ROOT/tripleo-quickstart/config/nodes/$JOB_TYPE_PART.yml"
;;
esac
done
@ -201,7 +202,7 @@ if [[ ! -z $NODES_FILE ]]; then
pushd $TRIPLEO_ROOT/tripleo-quickstart
NODECOUNT=$(shyaml get-value node_count < $NODES_FILE)
popd
NODES_ARGS="--nodes $NODES_FILE"
NODES_ARGS="--extra-vars @$NODES_FILE"
fi

View File

@ -13,14 +13,12 @@ source $TRIPLEO_ROOT/tripleo-ci/scripts/oooq_common_functions.sh
touch /tmp/toci.started
export DEFAULT_ARGS="
--no-clone
--working-dir $LOCAL_WORKING_DIR
--retain-inventory
--teardown none
--extra-vars local_working_dir=$LOCAL_WORKING_DIR
--extra-vars virthost=$UNDERCLOUD
--inventory $LOCAL_WORKING_DIR/hosts
--extra-vars tripleo_root=$TRIPLEO_ROOT
--extra-vars working_dir=$WORKING_DIR
--extra-vars validation_args='--validation-errors-nonfatal'
--release tripleo-ci/$QUICKSTART_RELEASE
"
# --install-deps arguments installs deps and then quits, no other arguments are
@ -30,32 +28,44 @@ QUICKSTART_PREPARE_CMD="
--install-deps
"
QUICKSTART_INSTALL_CMD="
QUICKSTART_VENV_CMD="
./quickstart.sh
--bootstrap
--tags $TAGS
$DEFAULT_ARGS
$NODES_ARGS
$ENV_VARS
$FEATURESET_CONF
$EXTRA_VARS
--playbook $PLAYBOOK
--no-clone
--working-dir $LOCAL_WORKING_DIR
--playbook noop.yml
--retain-inventory
$UNDERCLOUD
"
QUICKSTART_INSTALL_CMD="
$LOCAL_WORKING_DIR/bin/ansible-playbook
$LOCAL_WORKING_DIR/playbooks/$PLAYBOOK
--extra-vars @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$QUICKSTART_RELEASE.yml
$NODES_ARGS
$FEATURESET_CONF
$ENV_VARS
$EXTRA_VARS
$DEFAULT_ARGS
--tags $TAGS
--skip-tags teardown-all
"
QUICKSTART_COLLECTLOGS_CMD="
./quickstart.sh
$LOCAL_WORKING_DIR/bin/ansible-playbook
$LOCAL_WORKING_DIR/playbooks/collect-logs.yml
--extra-vars @$LOCAL_WORKING_DIR/config/release/tripleo-ci/$QUICKSTART_RELEASE.yml
$NODES_ARGS
$FEATURESET_CONF
$ENV_VARS
$EXTRA_VARS
$DEFAULT_ARGS
--extra-vars @$COLLECT_CONF
--tags all
$NODES_ARGS
$ENV_VARS
$FEATURESET_CONF
$EXTRA_VARS
--playbook collect-logs.yml
--extra-vars artcl_collect_dir=$LOGS_DIR
$UNDERCLOUD
--tags all
--skip-tags teardown-all
"
mkdir -p $LOCAL_WORKING_DIR
# TODO(gcerami) parametrize hosts
cp $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/config/testenv/${ENVIRONMENT}_hosts $LOCAL_WORKING_DIR/hosts
@ -64,6 +74,18 @@ cp $TRIPLEO_ROOT/tripleo-ci/toci-quickstart/playbooks/* $TRIPLEO_ROOT/tripleo-qu
pushd $TRIPLEO_ROOT/tripleo-quickstart/
$QUICKSTART_PREPARE_CMD
$QUICKSTART_VENV_CMD
# Only ansible-playbook command will be used from this point forward, so we
# need some variables from quickstart.sh
OOOQ_DIR=$TRIPLEO_ROOT/tripleo-quickstart/
export OPT_WORKDIR=$LOCAL_WORKING_DIR
export ANSIBLE_CONFIG=$OOOQ_DIR/ansible.cfg
export ARA_DATABASE="sqlite:///${LOCAL_WORKING_DIR}/ara.sqlite"
export VIRTUAL_ENV_DISABLE_PROMPT=1
source $LOCAL_WORKING_DIR/bin/activate
source $OOOQ_DIR/ansible_ssh_env.sh
run_with_timeout $START_JOB_TIME $QUICKSTART_INSTALL_CMD \
2>&1 | tee $LOGS_DIR/quickstart_install.log && exit_value=0 || exit_value=$?