Adds Newton to Ocata ansible upgrades docs

Adds some notes on the Newton to Ocata upgrades workflow to the
docs

Change-Id: I95f2d6ffedf8fcc168729393888161ea0bcc3cf8
This commit is contained in:
marios 2017-02-22 13:33:31 +02:00
parent 1fb9641e6d
commit 9078dc095e
3 changed files with 150 additions and 2 deletions

View File

@ -73,7 +73,7 @@
.selfsigned {background: #ffd;}
.ltom {background: #dee;}
.mton {background: #ded;}
.ntoo {background: #edd;}
/* admonition selector */
#admonition_selector {
color: white;

View File

@ -57,6 +57,7 @@
<li><input type="checkbox" id="ktol" checked="checked"><label for="ktol" title="Upgrading Kilo to Liberty is not supported">Upgrading Kilo to Liberty (unsupported)</label></li>
<li><input type="checkbox" id="ltom" checked="checked"><label for="ltom" title="Step that should only be run for upgrading from Liberty to Mitaka">Upgrading Liberty to Mitaka</label></li>
<li><input type="checkbox" id="mton" checked="checked"><label for="mton" title="Step that should only be run for upgrading from Mitaka to Newton">Upgrading Mitaka to Newton</label></li>
<li><input type="checkbox" id="ntoo" checked="checked"><label for="ntoo" title="Step that should only be run for upgrading from Newton to Ocata">Upgrading Newton to Ocata</label></li>
</ul>

View File

@ -51,6 +51,14 @@ Upgrading the Undercloud
export CURRENT_VERSION=mitaka
export NEW_VERSION=newton
.. admonition:: Newton to Ocata
:class: ntoo
::
export CURRENT_VERSION=newton
export NEW_VERSION=ocata
Backup and disable current repos. Note that the repository files might be
named differently depending on your installation::
@ -118,8 +126,147 @@ Upgrading the Undercloud
If you added custom OVS ports to the undercloud (e.g. in a virtual
testing environment) you may need to re-add them at this point.
Upgrading the Overcloud to Ocata and beyond
-------------------------------------------
Upgrading the Overcloud
As of the Ocata release, the upgrades workflow in tripleo has changed
significantly to accommodate the operators' new ability to deploy custom roles
with the Newton release (see the Composable Service Upgrade spec_ for more
info). The new workflow uses ansible upgrades tasks to define the upgrades
workflow on a per-service level.
The operator starts the upgrade with a ``openstack overcloud deploy`` that
includes the major-upgrade-composable-steps.yaml_ environment file as well
as all other environment files used on the initial deployment. This will
collect the ansible upgrade tasks for all roles, except those that have the
``disable_upgrade_deployment`` flag set ``True`` in roles_data.yaml_. The
tasks will be executed in a series of steps, for example (and not limited to):
step 0 for validations or other pre-upgrade tasks, step 1 to stop the
pacemaker cluster, step 2 to stop services, step 3 for package updates,
step 4 for cluster startup, step 5 for any special case db syncs or post
package update migrations.
After the ansible tasks have run the puppet configuration is also applied in
the 'normal' manner we do on an initial deploy, to complete the upgrade and
bring services back up.
For those roles with the ``disable_upgrade_deployment`` flag set True, the
operator will upgrade the corresponding nodes with the
upgrade-non-controller.sh_. The operator uses that script to invoke the
tripleo_upgrade_node.sh_ which is delivered during the
major-upgrade-composable-steps that comes first, as described above.
1. Run the major upgrade composable ansible steps
This step will upgrade the nodes of all roles that do not explicitly set the
``disable_upgrade_deployment`` flag to ``True`` in the roles_data.yaml_
(this is an operator decision, and the current default is for the 'Compute'
and' ObjectStorage' roles to have this set).
The ansible upgrades tasks are collected from all service manifests_ and
executed in a series of steps as described in the introduction above.
Even before the invocation of these ansible tasks however, this upgrade
step also delivers the tripleo_upgrade_node.sh_ and role specific puppet
manifest to allow the operator to upgrade those nodes after this step has
completed.
Create an environment file with commands to switch OpenStack repositories to
a new release. This will likely be the same commands that were used to switch
repositories on the undercloud::
cat > overcloud-repos.yaml <<EOF
parameter_defaults:
UpgradeInitCommand: |
set -e
# REPOSITORY SWITCH COMMANDS GO HERE
EOF
And run `overcloud deploy`, passing in full set of environment
files plus `major-upgrade-composable-steps.yaml` and
`overcloud-repos.yaml`::
openstack overcloud deploy --templates \
-e <full environment> \
-e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-composable-steps.yaml \
-e overcloud-repos.yaml
.. note::
It is especially important to remember that you **must** include all
environment files that were used to deploy the overcloud that you are about
to upgrade.
.. note::
The first step of the ansible tasks is to validate that the deployment is
in a good state before performing any other upgrade operations. Each
service manifest in the tripleo-heat-templates includes a check that it is
running and if any of those checks fail the upgrade will exit early at
ansible step 0.
If you are re-running the upgrade after an initial failed attempt, you may
need to disable these checks in order to allow the upgrade to proceed with
services down. This is done with the SkipUpgradeConfigTags parameter to
specify that tasks with the 'validation' tag should be skipped. You can
include this in any of the environment files you are using::
SkipUpgradeConfigTags: [validation]
2. Upgrade remaining nodes for roles with ``disable_upgrade_deployment: True``
It is expected that the operator will want to upgrade the roles that have the
``openstack-nova-compute`` and ``openstack-swift-object`` services deployed
to allow for pre-upgrade migration of workfloads. For this reason the default
``Compute`` and ``ObjectStorage`` roles in the roles_data.yaml_ have the
``disable_upgrade_deployment`` set ``True``.
Note that unlike in previous releases, this operator driven upgrade step
includes a full puppet configuration run as happens after the ansible
steps on the roles those are executed on. The significance is that nodes
are 'fully' upgraded after each step completes, rather than having to wait
for the final converge step as has previously been the case.
The tripleo_upgrade_node.sh_ script and puppet configuration are delivered to
the nodes with ``disable_upgrade_deployment`` set ``True`` during the initial
major upgrade composable steps in step 1 above.
To upgrade remaining roles (at your convenience)::
upgrade-non-controller.sh --upgrade overcloud-compute-0
for i in \$(seq 0 2); do
upgrade-non-controller.sh --upgrade overcloud-objectstorage-\$i &"
done
3. Converge to unpin Nova RPC
The final step is required to unpin Nova RPC version. Unlike in previous
releases, for Ocata the puppet configuration has already been applied to nodes
as part of each upgrades step, i.e. after the ansible tasks or when invoking
the tripleo_upgrade_node.sh_ script to upgrade compute nodes. Thus the
significance of this step is somewhat diminished compared to previously.
However a re-application of puppet configuration across all nodes here will
also serve as a sanity check and hopefully show any issues that an operator
may have missed during any of the previous upgrade steps::
openstack overcloud deploy --templates \
-e <full environment> \
-e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-converge.yaml
.. note::
It is especially important to remember that you **must** include all
environment files that were used to deploy the overcloud.
.. _spec: https://specs.openstack.org/openstack/tripleo-specs/specs/ocata/tripleo-composable-upgrades.html
.. _major-upgrade-composable-steps.yaml: https://github.com/openstack/tripleo-heat-templates/blob/master/environments/major-upgrade-composable-steps.yaml
.. _roles_data.yaml: https://github.com/openstack/tripleo-heat-templates/blob/master/roles_data.yaml
.. _tripleo_upgrade_node.sh: https://github.com/openstack/tripleo-heat-templates/blob/master/extraconfig/tasks/tripleo_upgrade_node.sh
.. _upgrade-non-controller.sh: https://github.com/openstack/tripleo-common/blob/master/scripts/upgrade-non-controller.sh
.. _manifests: https://github.com/openstack/tripleo-heat-templates/tree/master/puppet/services
Upgrading the Overcloud to Newton and earlier
-----------------------
.. note::