From 46c5a0b62c00499791cd43c9b8b480c36fa60ad7 Mon Sep 17 00:00:00 2001 From: John Trowbridge Date: Mon, 4 Dec 2017 14:58:00 -0500 Subject: [PATCH] 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 --- toci_gate_test-oooq.sh | 25 +++++++++-------- toci_quickstart.sh | 64 ++++++++++++++++++++++++++++-------------- 2 files changed, 56 insertions(+), 33 deletions(-) diff --git a/toci_gate_test-oooq.sh b/toci_gate_test-oooq.sh index 06ce33efe..b55277d51 100755 --- a/toci_gate_test-oooq.sh +++ b/toci_gate_test-oooq.sh @@ -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 diff --git a/toci_quickstart.sh b/toci_quickstart.sh index 540eb4046..a48b7295f 100755 --- a/toci_quickstart.sh +++ b/toci_quickstart.sh @@ -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=$?