The steps detailed here match those performed by the run-upgrade.sh script. Any of these steps can safely be run multiple times.
Ensure your OpenStack-Ansible code is on the latest Mitaka release tag (13.x.x).
# git checkout stable/mitaka
# LATEST_TAG=$(git describe --abbrev=0 --tags)
# git checkout ${LATEST_TAG}
Note
This step is optional, since these environment variables are simply shortcuts. Files can be referenced directly.
From the openstack-ansible root directory, run the following commands:
# export MAIN_PATH="$(pwd)"
# export SCRIPTS_PATH="${MAIN_PATH}/scripts"
# export UPGRADE_PLAYBOOKS="${SCRIPTS_PATH}/upgrade-utilities/playbooks"
These variables reduce typing when running the remaining upgrade tasks.
Bootstrapping Ansible again ensures that all OpenStack-Ansible role dependencies are in place before running playbooks from the Mitaka release.
# ${SCRIPTS_PATH}/bootstrap-ansible.sh
Change to the playbooks directory so that the OpenStack-Ansible dynamic inventory is found automatically.
# cd playbooks
Purge old facts before beginning the upgrade.
See ansible_fact_cleanup.yml for more details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/01_ansible_fact_cleanup.yml"
The user configuration files in /etc/openstack_deploy/ and the environment layout in /etc/openstack_deploy/env.d have new name values added in Mitaka.
See deploy-config-changes.yml for more details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/deploy-config-changes.yml"
Mitaka introduces new user secrets to the stack. These are populated automatically with the following playbook.
See user-secrets-adjustment.yml for more details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/user-secrets-adjustment.yml"
The presence of pip.conf file can cause build failures when upgrading to Mitaka. This play removes the pip.conf file on all the physical servers and on the repo containers.
See pip-conf-removal.yml for more details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/pip-conf-removal.yml"
Ensure an alias is created for non-RFC1034/35 hostnames.
See old-hostname-compatibility.yml for details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/old-hostname-compatibility.yml"
The next step is upgrading your hosts. Avoid upgrading the Galera cluster nodes to prevent changes in the cluster.
# openstack-ansible setup-hosts.yml --limit '!galera_all'
This ensures the rabbitmq nodes are using their proper new hostnames.
See restart-rabbitmq-containers for details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/restart-rabbitmq-containers.yml"
Facts are purged as container hostnames have changed after running the old-hostname-compatibility.yml playbook. Failing to do this could result in a failure in upgrading RabbitMQ.
See ansible_fact_cleanup.yml for more details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/02_ansible_fact_cleanup.yml"
The setup-hosts.yml playbook above skipped the Galera nodes. In this step, the lxc-container-create.yml playbook applies changes to Galera containers while preventing them from restarting.
# openstack-ansible lxc-containers-create.yml -e \
'lxc_container_allow_restarts=false' --limit galera_all
Running the OpenStack-Ansible repo-install.yml playbook prepares the repo server with all the packages needed for Mitaka.
# openstack-ansible repo-install.yml
Running the OpenStack-Ansible galera-install.yml playbook ensures Galera is running on the latest Mitaka.
# openstack-ansible galera-install.yml -e 'galera_upgrade=true'
After the Galera update in the previous step, restart the cluster in a controlled fashion.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/galera-cluster-rolling-restart.yml"
Run the remaining parts of the setup-infrastructure.yml playbook.
# openstack-ansible haproxy-install.yml
# openstack-ansible memcached-install.yml
# openstack-ansible rabbitmq-install.yml -e 'rabbitmq_upgrade=true'
# openstack-ansible utility-install.yml
# openstack-ansible rsyslog-install.yml
See memcached-flush.yml for details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/memcached-flush.yml"
See neutron-mtu-migration.yml for details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/neutron-mtu-migration.yml"
Upgrade the OpenStack components with the same installation playbook, without any additional options.
# openstack-ansible setup-openstack.yml
Use the rfc1034_1035-cleanup.yml playbook to remove invalid hostnames that may still be within the databases.
See rfc1034_1035-cleanup.yml for details.
# openstack-ansible "${UPGRADE_PLAYBOOKS}/rfc1034_1035-cleanup.yml"