Updating Undercloud Components

Note

Instack-undercloud is deprecated in Rocky cycle. Instack undercloud can only be upgraded to containerized undercloud. See Containers based Undercloud Deployment for backward compatibility related information.

  1. Before upgrading the undercloud, it is highly suggested to perform a backup of the undercloud and validate that a restore works fine.

  2. Remove all Delorean repositories:

    Note

    You may wish to backup your current repos before disabling them

    mkdir -p /home/stack/REPOBACKUP
    sudo mv /etc/yum.repos.d/delorean* /home/stack/REPOBACKUP
    
    sudo rm /etc/yum.repos.d/delorean*
    
  3. Enable new Delorean repositories:

    Download and install the python2-tripleo-repos RPM from the current RDO repository. For example

    sudo yum install -y https://trunk.rdoproject.org/centos7/current/python2-tripleo-repos-<version>.el7.centos.noarch.rpm
    

    Note

    tripleo-repos removes any repositories that it manages before each run. This means all repositories must be specified in a single tripleo-repos call. As an example, the correct way to install the current and ceph repos is to run tripleo-repos current ceph, not two separate calls.

    Stable Branch

    Enable the appropriate repos for the desired release, as indicated below. Do not enable any other repos not explicitly marked for that release.

    Newton

    Enable the current Newton repositories

    sudo -E tripleo-repos -b newton current
    

    Ceph

    Include the Ceph repo in the tripleo-repos call

    sudo -E tripleo-repos -b newton current ceph
    

    Ocata

    Enable the current Ocata repositories

    sudo -E tripleo-repos -b ocata current
    

    Ceph

    Include the Ceph repo in the tripleo-repos call

    sudo -E tripleo-repos -b ocata current ceph
    

    Pike

    Enable the current Pike repositories

    sudo -E tripleo-repos -b pike current
    

    Ceph

    Include the Ceph repo in the tripleo-repos call

    sudo -E tripleo-repos -b pike current ceph
    

    Queens

    Enable the current Queens repositories

    sudo -E tripleo-repos -b queens current
    

    Ceph

    Include the Ceph repo in the tripleo-repos call

    sudo -E tripleo-repos -b queens current ceph
    

    Warning

    The remaining repositories configuration steps below should not be done for stable releases!

    Run tripleo-repos to install the appropriate repositories. The option below will enable the latest master TripleO packages and the latest promoted packages for all other OpenStack services and dependencies. There are other repository configurations available in tripleo-repos, see its –help output for details.

    sudo -E tripleo-repos current-tripleo-dev
    

    Ceph

    Include the Ceph repository in the tripleo-repos command

    sudo -E tripleo-repos current-tripleo-dev ceph
    
  1. Clean the yum cache to ensure only the new repos are used

    sudo yum clean all
    sudo rm -rf /var/cache/yum
    
  2. Update required package:

    Validations

    It is strongly recommended that you validate the state of your undercloud before starting any upgrade operations. The tripleo-validations repo has some ‘pre-upgrade’ validations that you can execute by following the instructions at validations to execute the “pre-upgrade” group

    mistral execution-get-output $(openstack workflow execution create -f value -c ID tripleo.validations.v1.run_groups '{"group_names": ["pre-upgrade"]}')
    

    Newton to Ocata

    The following commands need to be run before the undercloud upgrade:

    sudo systemctl stop openstack-*
    sudo systemctl stop neutron-*
    sudo systemctl stop openvswitch
    sudo systemctl stop httpd
    sudo yum update instack-undercloud openstack-puppet-modules openstack-tripleo-common
    

    Ocata to Pike

    Ceph

    Prior to Pike, TripleO deployed Ceph with puppet-ceph. With the Pike release it is possible to use TripleO to deploy Ceph with either ceph-ansible or puppet-ceph, though puppet-ceph is deprecated. To use ceph-ansible, the CentOS Storage SIG Ceph repository must be enabled on the undercloud and the ceph-ansible package must then be installed:

    sudo yum install --enablerepo=extras centos-release-ceph-jewel
    sudo yum install ceph-ansible
    

    Ceph clusters deployed with Ocata via puppet-ceph will be migrated so that all of the existing Ceph services are run inside of containers. This migration will be managed not by puppet-ceph, but by ceph-ansible, which TripleO will use to control updates to the same ceph cluster after the Ocata to Pike upgrade.

    Update TripleO CLI package

    sudo yum update python-tripleoclient*
    
  3. Run the undercloud upgrade command. This command will upgrade all packages and use puppet to apply new configuration and restart all OpenStack services

    openstack undercloud upgrade
    

    To upgrade to a containerized undercloud, just add –use-heat option:

    openstack undercloud upgrade --use-heat
    

    Note

    When upgrading a containerized undercloud, it’s possible to enable verbose logging with –verbose option.

    Queens to Rocky and later

    The containerized undercloud deployment isn’t supported before Rocky release. Therefore, the upgrade is supported in Rocky, from a non containerized undercloud in Queens to a containerized undercloud in Rocky.

    Note

    You may wish to use time and capture the output to a file for any debug

    time openstack undercloud upgrade 2>&1 | tee undercloud_upgrade.log
    

    Note

    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.