Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

This article summarizes the steps required to upgrade from the stein release to the train release of openstack.

...

  • Run nova-manage db online_data_migrations on an API node. Ensure that it reports that nothing more needs to be done.
  • Convert all tables in the mysql-database to the row-format "DYNAMIC" if the databases was created before maria 10.2
    • Use the followin following code-snippet to create the relevant mysql-statements:

      Code Block
      for table in `mysql --batch --skip-column-names --execute="SELECT CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND ROW_FORMAT IN('Redundant', 'Compact') AND TABLE_NAME NOT IN('SYS_DATAFILES', 'SYS_FOREIGN', 'SYS_FOREIGN_COLS', 'SYS_TABLESPACES', 'SYS_VIRTUAL', 'SYS_ZIP_DICT', 'SYS_ZIP_DICT_COLS');"`; do echo "ALTER TABLE ${table} ROW_FORMAT=DYNAMIC;";done;


...

  1. In the node-specific hiera, disable the services at the first node you would like to upgrade with the keys
    1. apache::service_ensure: 'stopped'

  2. Run puppet with the train modules/tags
  3. Run apt-get purge python-cinderclient && apt dist-upgrade && apt-get autoremove
  4. Run nova-manage api_db sync
  5. Run nova-manage db sync
  6. Re-enable placement API on the upgraded node:
    1. Remove apache::service_ensure: 'stopped' from the upgraded node's hiera file
  7. Upgrade the rest of the nodes (basically run step 1-3, re-run puppet and restart nova-api and apache2)

...

  1. Run puppet with the train modules/tags
  2. Run apt-get purge python-cinderclient && apt dist-upgrade && apt-get autoremove
  3. Run puppet and restart services

Heat

The rolling upgrade procedure for heat includes a step where you are supposed to create a new rabbit vhost. I don't want that. Therefore, this is the cold upgrade steps.

Step 4 is only for the API-nodes, so the routine should be run on the API-nodes first

  1. Set heat::api::enabled: false and heat::engine::enabled: false and heat::api_cfn::enabled: false in hiera to stop all services
  2. Run puppet with train modules/tags
  3. Run apt dist-upgrade && apt-get autoremove
  4. Run heat-manage db_sync on one of the api-nodes.
  5. Remove the hiera keys that disabled the services and re-run puppet

Barbican

Barbican must be stopped for upgrades, and can thus be performed on all barbican hosts at the same time. It might be an idea to keep one set of hosts stopped at old code in case of the need for a sudden roll-back.

  1. Stop all barbican-services by adding the following keys to node-specific hiera, and then make sure to run puppet on the barbican hosts:

      Octavia

      ...

        1. barbican::worker::enabled: false

        2. apache::service_ensure: 'stopped'

      1. Run puppet with the train modules/tags

      2. Run apt dist-upgrade && apt-get autoremove

      3. Run barbican-db-manage upgrade

      4. Re-start barbican services by removing the keys added in step 1 and re-run puppet.

      Magnum

      Magnum must be stopped for upgrades, and can thus be performed on all magnum-hosts at the same time. It might be an idea to keep one set of hosts stopped at old code in case of the need for a sudden roll-back.

      1. Stop all magnum-services by adding the following keys to node-specific hiera, and then make sure to run puppet on the magnum hosts:
        1. magnum::conductor::enabled: false

        2. apache::service_ensure: 'stopped'

      2. Run puppet with the train modules/tags

      3. Run yum upgrade

      4. Run su -s /bin/sh -c "magnum-db-manage upgrade" magnum

      5. Re-start magnum services by removing the keys added in step 1 and re-run puppet.

      Octavia

      Octavia must be stopped for upgrades, and can thus be performed on all octavia-hosts at the same time. It might be an idea to keep one set of hosts stopped at old code in case of the need for a sudden roll-back.

      1. Stop all magnum-services by adding the following keys to node-specific hiera, and then make sure to run puppet on the magnum hosts:
        1. octavia::housekeeping::enabled: false

        2. octavia::health_manager::enabled: false

        3. octavia::api::enabled: false

        4. octavia::worker::enabled: false

      2. Run puppet with the train modules/tags

      3. Run apt-get dist-upgrade && apt-get autoremove

      4. Run puppet
      5. Run octavia-db-manage upgrade

      6. Re-start octavia services by removing the keys added in step 1 and re-run puppet.

      7. Build a train-based octavia-image and upload to glance. Tag it and make octavia start to replace the amphora.

      Horizon

      Compute-nodes

      Finalizing

      ...