Chapter 22. Upgrading an overcloud with hyper-converged infrastructure This scenario contains an example upgrade process for an overcloud with hyper-converged infrastructure (HCI), which includes the following node types: Three Controller nodes Multiple HCI Compute nodes, which contain combined Compute and Ceph OSD services 22.1. Running the overcloud upgrade preparation The upgrade requires running openstack overcloud upgrade prepare command, which performs the following tasks: Updates the overcloud plan to OpenStack Platform 16.2 Prepares the nodes for the upgrade Note If you are not using the default stack name ( overcloud ), set your stack name with the --stack STACK NAME option replacing STACK NAME with the name of your stack. Procedure Source the stackrc file: Run the upgrade preparation command: Include the following options relevant to your environment: The environment file ( upgrades-environment.yaml ) with the upgrade-specific parameters ( -e ). The environment file ( rhsm.yaml ) with the registration and subscription parameters ( -e ). The environment file ( containers-prepare-parameter.yaml ) with your new container image locations ( -e ). In most cases, this is the same environment file that the undercloud uses. The environment file ( neutron-ovs.yaml ) to maintain OVS compatibility. Any custom configuration environment files ( -e ) relevant to your deployment. If applicable, your custom roles ( roles_data ) file using --roles-file . If applicable, your composable network ( network_data ) file using --networks-file . If you use a custom stack name, pass the name with the --stack option. Wait until the upgrade preparation completes. Download the container images: 22.2. Upgrading Controller nodes with director-deployed Ceph Storage If your deployment uses a Red Hat Ceph Storage cluster that was deployed using director, you must complete this procedure. To upgrade all the Controller nodes to OpenStack Platform 16.2, you must upgrade each Controller node starting with the bootstrap Controller node. During the bootstrap Controller node upgrade process, a new Pacemaker cluster is created and new Red Hat OpenStack 16.2 containers are started on the node, while the remaining Controller nodes are still running on Red Hat OpenStack 13. After upgrading the bootstrap node, you must upgrade each additional node with Pacemaker services and ensure that each node joins the new Pacemaker cluster started with the bootstrap node. For more information, see Overcloud node upgrade workflow . In this example, the controller nodes are named using the default overcloud-controller- NODEID convention. This includes the following three controller nodes: overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 Substitute these values for your own node names where applicable. Procedure Source the stackrc file: Identify the bootstrap Controller node by running the following command on the undercloud node: Optional: Replace <stack_name> with the name of the stack. If not specified, the default is overcloud . Upgrade the bootstrap Controller node: Run the external upgrade command with the ceph_systemd tag: Replace <stack_name> with the name of your stack. This command performs the following functions: Changes the systemd units that control the Ceph Storage containers to use Podman management. Limits actions to the selected Controller node using the ceph_ansible_limit variable. This step is a preliminary measure to prepare the Ceph Storage services for The leapp upgrade. Run the upgrade command with the system_upgrade tag: This command performs the following actions: Performs a Leapp upgrade of the operating system. Performs a reboot as a part of the Leapp upgrade. Important The command causes an outage on the control plane. You cannot perform any standard operations on the overcloud during the few steps. Run the external upgrade command with the system_upgrade_transfer_data tag: This command copies the latest version of the database from an existing node to the bootstrap node. Run the upgrade command with the nova_hybrid_state tag and run only the upgrade_steps_playbook.yaml playbook: This command launches temporary 16.2 containers on Compute nodes to help facilitate workload migration when you upgrade Compute nodes at a later step. Run the upgrade command with no tags: This command performs the Red Hat OpenStack Platform upgrade. Important The control plane becomes active when this command finishes. You can perform standard operations on the overcloud again. Verify that after the upgrade, the new Pacemaker cluster is started and that the control plane services such as galera, rabbit, haproxy, and redis are running: Upgrade the Controller node: Verify that the old cluster is no longer running: An error similar to the following is displayed when the cluster is not running: Run the external upgrade command with the ceph_systemd tag: This command performs the following functions: Changes the systemd units that control the Ceph Storage containers to use Podman management. Limits actions to the selected Controller node using the ceph_ansible_limit variable. This step is a preliminary measure to prepare the Ceph Storage services for The leapp upgrade. Run the upgrade command with the system_upgrade tag on the Controller node: This command performs the following actions: Performs a Leapp upgrade of the operating system. Performs a reboot as a part of the Leapp upgrade. Run the upgrade command with no tags: This command performs the Red Hat OpenStack Platform upgrade. In addition to this node, include the previously upgraded bootstrap node in the --limit option. Upgrade the final Controller node: Verify that the old cluster is no longer running: An error similar to the following is displayed when the cluster is not running: Run the external upgrade command with the ceph_systemd tag: This command performs the following functions: Changes the systemd units that control the Ceph Storage containers to use Podman management. Limits actions to the selected Controller node using the ceph_ansible_limit variable. This step is a preliminary measure to prepare the Ceph Storage services for The leapp upgrade. Run the upgrade command with the system_upgrade tag: This command performs the following actions: Performs a Leapp upgrade of the operating system. Performs a reboot as a part of the Leapp upgrade. Run the upgrade command with no tags: This command performs the Red Hat OpenStack Platform upgrade. Include all Controller nodes in the --limit option. 22.3. Upgrading Compute nodes with hyper-converged infrastructure (HCI) Upgrade HCI Compute nodes to OpenStack Platform 16.2. Note If you are not using the default stack name ( overcloud ), set your stack name with the --stack STACK NAME option replacing STACK NAME with the name of your stack. Procedure Source the stackrc file: Migrate your instances. For more information on migration strategies, see Migrating virtual machines between Compute nodes . Run the external upgrade command with the ceph_systemd tag: This command performs the following functions: Changes the systemd units that control the Ceph Storage containers to use Podman management. Limits actions to the selected Ceph Storage node using the ceph_ansible_limit variable. This step is a preliminary measure to prepare the Ceph Storage services for the leapp upgrade. Run the upgrade command with the system_upgrade tag: This command performs the following actions: Performs a Leapp upgrade of the operating system. Performs a reboot as a part of the Leapp upgrade. Run the upgrade command with no tags: This command performs the Red Hat OpenStack Platform upgrade. To upgrade multiple Compute nodes in parallel, set the --limit option to a comma-separated list of nodes that you want to upgrade. First run the external upgrade command with the ceph_systemd tag: Then perform the system_upgrade task: Then perform the standard OpenStack service upgrade: 22.4. Synchronizing the overcloud stack The upgrade requires an update the overcloud stack to ensure that the stack resource structure and parameters align with a fresh deployment of OpenStack Platform 16.2. Note If you are not using the default stack name ( overcloud ), set your stack name with the --stack STACK NAME option replacing STACK NAME with the name of your stack. Procedure Source the stackrc file: Edit the containers-prepare-parameter.yaml file and remove the following parameters and their values: ceph3_namespace ceph3_tag ceph3_image name_prefix_stein name_suffix_stein namespace_stein tag_stein To re-enable fencing in your overcloud, set the EnableFencing parameter to true in the fencing.yaml environment file. Run the upgrade finalization command: Include the following options relevant to your environment: The environment file ( upgrades-environment.yaml ) with the upgrade-specific parameters ( -e ). The environment file ( fencing.yaml ) with the EnableFencing parameter set to true . The environment file ( rhsm.yaml ) with the registration and subscription parameters ( -e ). The environment file ( containers-prepare-parameter.yaml ) with your new container image locations ( -e ). In most cases, this is the same environment file that the undercloud uses. The environment file ( neutron-ovs.yaml ) to maintain OVS compatibility. Any custom configuration environment files ( -e ) relevant to your deployment. If applicable, your custom roles ( roles_data ) file using --roles-file . If applicable, your composable network ( network_data ) file using --networks-file . If you use a custom stack name, pass the name with the --stack option. Wait until the stack synchronization completes. Important You do not need the upgrades-environment.yaml file for any further deployment operations.

Commands:
source ~/stackrc
openstack overcloud upgrade prepare --stack STACK NAME --templates -e ENVIRONMENT FILE ... -e /home/stack/templates/upgrades-environment.yaml -e /home/stack/templates/rhsm.yaml -e /home/stack/containers-prepare-parameter.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml ...
openstack overcloud external-upgrade run --stack STACK NAME --tags container_image_prepare
source ~/stackrc
tripleo-ansible-inventory --list [--stack <stack_name>] |jq .overcloud_Controller.hosts[0]
openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0
openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-0
openstack overcloud external-upgrade run [--stack <stack_name>] --tags system_upgrade_transfer_data
openstack overcloud upgrade run [--stack <stack_name>] --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all
openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0
sudo pcs status
sudo pcs status
Error: cluster is not currently running on this node
openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1
openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-1
openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1
sudo pcs status
Error: cluster is not currently running on this node
openstack overcloud external-upgrade run [--stack <stack_name>] --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2
openstack overcloud upgrade run [--stack <stack_name>] --tags system_upgrade --limit overcloud-controller-2
openstack overcloud upgrade run [--stack <stack_name>] --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2
source ~/stackrc
openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0
openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0
openstack overcloud upgrade run --stack STACK NAME --limit overcloud-computehci-0
openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
openstack overcloud upgrade run --stack STACK NAME --limit overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2
source ~/stackrc
openstack overcloud upgrade converge --stack STACK NAME --templates -e ENVIRONMENT FILE ... -e /home/stack/templates/upgrades-environment.yaml -e /home/stack/templates/rhsm.yaml -e /home/stack/containers-prepare-parameter.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml ...