diff --git a/ci-scripts/full-deploy.sh b/ci-scripts/full-deploy.sh index 7b887eb4f..b75071c97 100644 --- a/ci-scripts/full-deploy.sh +++ b/ci-scripts/full-deploy.sh @@ -15,7 +15,6 @@ JOB_TYPE=$4 if [ "$JOB_TYPE" = "gate" ] || \ [ "$JOB_TYPE" = "periodic" ] || \ - [ "$JOB_TYPE" = "roles-gate" ] || \ [ "$JOB_TYPE" = "dlrn-gate" ]; then unset REL_TYPE if [ "$RELEASE" = "master-tripleo-ci" ]; then @@ -26,10 +25,9 @@ elif [ "$JOB_TYPE" = "promote" ]; then REL_TYPE=$LOCATION else echo "Job type must be one of the following:" - echo " * gate - for gating changes on tripleo-quickstart" + echo " * gate - for gating changes on tripleo-quickstart or -extras" echo " * promote - for running promotion jobs" echo " * periodic - for running periodic jobs" - echo " * roles-gate - for gating changes to the extra roles" echo " * dlrn-gate - for gating upstream changes" exit 1 fi @@ -41,24 +39,13 @@ socketdir=$(mktemp -d /tmp/sockXXXXXX) export ANSIBLE_SSH_CONTROL_PATH=$socketdir/%%h-%%r # preparation steps to run with the gated roles -if [ "$JOB_TYPE" = "roles-gate" ] || [ "$JOB_TYPE" = "gate" ]; then - # set up the gated repos and modify the requirements file to use them +if [ "$JOB_TYPE" = "gate" ]; then bash quickstart.sh \ --working-dir $WORKSPACE/ \ --no-clone \ --bootstrap \ --requirements quickstart-extras-requirements.txt \ - --playbook gate-roles.yml \ - --release ${CI_ENV:+$CI_ENV/}$RELEASE${REL_TYPE:+-$REL_TYPE} \ - $OPT_ADDITIONAL_PARAMETERS \ - $VIRTHOST - # once more to let the gating role be gated as well - bash quickstart.sh \ - --working-dir $WORKSPACE/ \ - --no-clone \ - --bootstrap \ - --requirements quickstart-extras-requirements.txt \ - --playbook gate-roles.yml \ + --playbook gate-quickstart.yml \ --release ${CI_ENV:+$CI_ENV/}$RELEASE${REL_TYPE:+-$REL_TYPE} \ $OPT_ADDITIONAL_PARAMETERS \ $VIRTHOST diff --git a/doc/source/working-with-extras.rst b/doc/source/working-with-extras.rst index 05c088d17..cca26ac13 100644 --- a/doc/source/working-with-extras.rst +++ b/doc/source/working-with-extras.rst @@ -1,19 +1,56 @@ .. _working-with-extras: Working With Quickstart Extras -======================== +============================== -Add-on extras for quickstart are available from the -`Redhat Openstack Github `_ with the -format ansible-role-tripleo-task-to-perform. +There are several additional roles compatible with tripleo-quickstart that +extend the capability of TripleO Quickstart beyond setting up the basic +deployment structure on a virthost. There are roles for doing end-to-end +deployments and deployment validation both for virthost and baremetal machines +and a few auxiliary roles for doing CI related tasks. -Extras can be installed manually using Python setuptools. TripleO Quickstart +These roles are hosted at the tripleo-quickstart-extras_ repository. + +.. _tripleo-quickstart-extras: http://git.openstack.org/cgit/openstack/tripleo-quickstart-extras/ + +Extras can be installed manually using Python setuptools, but ``quickstart.sh`` provides an automated system for building the Python virtual environment and pulling in additional dependencies using ``pip install`` and the -``quickstart-extras-requirements.txt`` file, so we suggest you use that. +``quickstart-extras-requirements.txt`` file. -If your role is in a git repository use the following syntax and append it to -the end of the ``quickstart-extras-requirements.txt`` file:: +To run a full end-to-end deployment including verification, add these command +line options when running ``quickstart.sh``:: + + --requirements quickstart-extras-requirements.txt --playbook quickstart-extras.yml + +See ``quickstart.sh --help`` for a full list of options, but here is a full +example using some common developer settings:: + + ./quickstart.sh --requirements quickstart-extras-requirements.txt \ + --playbook quickstart-extras.yml \ + --tags all --teardown all \ + --release master --no-clone --clean \ + --config config/general_config/minimal_pacemaker.yml \ + virthost.example.com + +This uses the currently cloned tripleo-quickstart repository instead of +re-cloning it in the working directory, doing the following: + +* deletes the working directory at `~/.quickstart` +* this forces quickstart to create the virtual environment and redownload all + the requirements fresh, including the extras +* it does a thorough cleanup of the `virthost.example.com` machine, + reinstalling libvirt, deleting networks and VMs +* downloads the master image and creates new VMs based that +* deploys both the underclound and the overcloud +* verifies the deployed environment in a quick and simple way + +Developing new roles +-------------------- + +Developing new roles is possible by submitting new reviews for this repo, or +creating it anywhere and adding a reference to the end of the +``quickstart-extras-requirements.txt`` file:: git+https://github.com/organization/ansible-role-example.git/#egg=ansible-role-example @@ -22,16 +59,16 @@ To import a role that you are developing locally use the following syntax:: file:///home/user/folder/ansible-role-example/#egg=ansible-role-example Once added to the role requirements file ``quickstart.sh`` will automatically -install the specified extras into ``$WORKSPACE``, which is a Python virtual -environment managed by quickstart. By default this environment will be placed -in ``~/.quickstart`` but you can specify its location using the +install the specified extras into the local working directory, which is a +Python virtual environment managed by quickstart. By default this environment +will be placed in ``~/.quickstart`` but you can specify its location using the ``--working-dir`` argument. To invoke quickstart with a playbook of your own or from a preexisting role run the following command:: - ./quickstart.sh --requirements $REQUIREMENTS --playbook playbook.yml --working-dir \ -$WORKSPACE $VIRTHOST + ./quickstart.sh --requirements $REQUIREMENTS --playbook playbook.yml \ + --working-dir $WORKSPACE $VIRTHOST If the virtual environment in ``$WORKSPACE`` has not already been setup then ``quickstart.sh`` will create it and install all the extras. @@ -46,21 +83,7 @@ and then run the ``setup.py`` for the role:: Deleting the environment and allowing quickstart to regenerate it entirely also works. Both ``$REQUIREMENTS`` and ``$WORKSPACE`` should be absolute paths. -Some extras are meant only to be added to an existing playbook. For example, if -you wanted to perform a pingtest to validate the overcloud you would clone the -ansible-role-tripleo-overcloud-validate repository and then edit -``$WORKSPACE/playbooks/quickstart.yml`` like so:: - - - name: Install undercloud and deploy overcloud - hosts: undercloud - gather_facts: no - roles: - - tripleo/undercloud - - tripleo/overcloud - - tripleo-overcloud-validate - -This will perform the pingtest validation after the deployment of the overcloud is finished. -The playbook `quickstart-extras.yml` is the most complete playbook offered by default, it +The playbook ``quickstart-extras.yml`` is the most complete playbook offered by default, it will perform all tasks up to deployment and testing the overcloud using this same method. While editing existing playbooks is a good way to become familiar with quickstart for actual usage diff --git a/playbooks/gate-roles.yml b/playbooks/gate-roles.yml deleted file mode 100644 index f8b279bf7..000000000 --- a/playbooks/gate-roles.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -# This playbooks is responsible for gating all the auxiliary -# roles that quickstart uses -- name: Clone the gated repos and modify the requirements - hosts: localhost - roles: - - { role: tripleo-gate, artg_mode: 'roles' } diff --git a/playbooks/quickstart-extras.yml b/playbooks/quickstart-extras.yml index f5c7e0537..ed4dbd782 100644 --- a/playbooks/quickstart-extras.yml +++ b/playbooks/quickstart-extras.yml @@ -34,14 +34,14 @@ hosts: undercloud gather_facts: no roles: - - { role: tripleo-ssl, when: ssl_overcloud|bool } + - { role: overcloud-ssl, when: ssl_overcloud|bool } # Deploy the overcloud - name: Deploy the overcloud hosts: undercloud gather_facts: yes roles: - - tripleo-overcloud + - overcloud-deploy - name: Add the overcloud nodes to the generated inventory hosts: undercloud @@ -74,7 +74,7 @@ - overcloud-validate gather_facts: no roles: - - { role: tripleo-overcloud-validate, when: test_ping|bool } + - { role: validate-simple, when: test_ping|bool } # Execute tempest against the overcloud deployment - name: Execute tempest against the overcloud @@ -83,4 +83,4 @@ - overcloud-validate gather_facts: no roles: - - { role: tripleo-tempest, when: run_tempest|bool } + - { role: validate-tempest, when: run_tempest|bool } diff --git a/quickstart-extras-requirements.txt b/quickstart-extras-requirements.txt index a867921d8..922aee4ed 100644 --- a/quickstart-extras-requirements.txt +++ b/quickstart-extras-requirements.txt @@ -1,24 +1 @@ -# Roles - -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-config.git/#egg=ansible-role-tripleo-overcloud-prep-config -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-flavors.git/#egg=ansible-role-tripleo-overcloud-prep-flavors -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-images.git/#egg=ansible-role-tripleo-overcloud-prep-images -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-network.git/#egg=ansible-role-tripleo-overcloud-prep-network -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud.git/#egg=ansible-role-tripleo-overcloud -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-validate.git/#egg=ansible-role-tripleo-overcloud-validate -git+https://github.com/redhat-openstack/ansible-role-tripleo-cleanup-nfo.git/#egg=ansible-role-tripleo-cleanup-nfo -git+https://github.com/redhat-openstack/ansible-role-tripleo-collect-logs.git/#egg=ansible-role-tripleo-collect-logs -git+https://github.com/redhat-openstack/ansible-role-tripleo-gate.git#egg=ansible-role-tripleo-gate -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-upgrade.git#egg=ansible-role-tripleo-overcloud-upgrade -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-scale-nodes.git#egg=ansible-role-tripleo-overcloud-scale-nodes -git+https://github.com/redhat-openstack/ansible-role-tripleo-tempest.git#egg=ansible-role-tripleo-tempest -git+https://github.com/redhat-openstack/ansible-role-tripleo-baremetal-prep-virthost.git#egg=ansible-role-tripleo-baremetal-prep-virthost -git+https://github.com/redhat-openstack/ansible-role-tripleo-overcloud-prep-baremetal.git#egg=ansible-role-tripleo-overcloud-prep-baremetal -git+https://github.com/redhat-openstack/ansible-role-tripleo-provision-heat.git#egg=ansible-role-tripleo-provision-heat -git+https://github.com/redhat-openstack/ansible-role-tripleo-validate-ipmi.git#egg=ansible-role-tripleo-validate-ipmi -git+https://github.com/redhat-openstack/ansible-role-tripleo-ssl.git#egg=ansible-role-tripleo-ssl - - -# To pull in local development changes -#file:////ansible-role-foo/#egg=ansible-role-foo - +git+https://git.openstack.org/openstack/tripleo-quickstart-extras/#egg=tripleo-quickstart-extras