blob: b3c3fcf891e3c7d88cf42116f90eb936a4f60314 [file] [log] [blame]
#############
Upgrade Guide
#############
This document shows the most common way of upgrading your Atmosphere deployment.
.. admonition:: Avoid jumping Atmosphere major releases
:class: warning
It is important to avoid jumping major versions in Atmosphere, which is the
same advice in OpenStack.
For example, If you are running Atmosphere Zed release (version 1) and want
to move to Bobcat (version 3) you should perform 2 upgrades: version 1 to
version 2 and then version 3.
If you dont do this, you may face database inconsistencies and failures on
services like Nova or Neutron, or failed upgrades of components such as
RabbitMQ.
**************************
Preparing the environment
**************************
On the deployment box, or any other place that you have your Ansible inventory,
you should update the ``requirements.yml`` file and point to the target
Atmosphere release you want to upgrade to.
.. code-block:: yaml
collections:
- name: vexxhost.atmosphere
version: X.Y.Z
Once that is done, you should update your collections by running:
.. code-block:: console
$ ansible-galaxy install -r requirements.yml --force
It's important to review your inventory, specifically image overrides to make
sure that the image overrides are still necessary, otherwise you may end up
with a broken deployment since the images will not be the ones the Atmosphere
collection expects.
*******************
Running the upgrade
*******************
You can either execute the entire upgrade by running your site-local playbook
which imports ``vexxhost.atmosphere.site``, call the individual playbooks out
of Atmosphere or run a specific tag if you want to upgrade service-by-service
which gives you the most granular control.
.. code-block:: console
$ ansible-playbook -i hosts.ini playbooks/site.yml
You can also run the Atmosphere provided playbooks by pointing to a specific
playbook of the Ansible collection, in this case, the Ceph playbook:
.. code-block:: console
$ ansible-playbook -i hosts.ini vexxhost.atmosphere.ceph
You also have the most granular control by running the tags of the playbooks,
for example, if you want to upgrade the Keystone service, you can run the
following command:
.. code-block:: console
$ ansible-playbook -i hosts.ini vexxhost.atmosphere.openstack --tags keystone
During the upgrade, you may find it useful to have a monitor on all of the pods
in the cluster to ensure that they are becoming ready and not failing. You can
do this by running the following command:
.. code-block:: console
$ watch -n1 "kubectl get pods --all-namespaces -owide | egrep -v '(Completed|1/1|2/2|3/3|4/4|6/6|7/7)'"