14.3. Upgrading Compute nodes to a Multi-RHEL environment
You can upgrade a portion of your Compute nodes to RHEL 9.2 while the rest of your Compute nodes remain on RHEL 8.4. This upgrade process involves the following fundamental steps:
-
Plan which nodes you want to upgrade to RHEL 9.2, and which nodes you want to remain on RHEL 8.4. Choose a role name for each role that you are creating for each batch of nodes, for example,
ComputeRHEL-9.2andComputeRHEL-8.4. Create roles that store the nodes that you want to upgrade to RHEL 9.2, or the nodes that you want to stay on RHEL 8.4. These roles can remain empty until you are ready to move your Compute nodes to a new role. You can create as many roles as you need and divide nodes among them any way you decide. For example:
-
If your environment uses a role called
ComputeSRIOVand you need to run a canary test to upgrade to RHEL 9.2, you can create a newComputeSRIOVRHEL9role and move the canary node to the new role. -
If your environment uses a role called
ComputeOffloadand you want to upgrade most nodes in that role to RHEL 9.2, but keep a few nodes on RHEL 8.4, you can create a newComputeOffloadRHEL8role to store the RHEL 8.4 nodes. You can then select the nodes in the originalComputeOffloadrole to upgrade to RHEL 9.2.
-
If your environment uses a role called
- Move the nodes from each Compute role to the new role.
Upgrade the operating system on specific Compute nodes to RHEL 9.2. You can upgrade nodes in batches from the same role or multiple roles.
참고In a Multi-RHEL environment, the deployment should continue to use the pc-i440fx machine type. Do not update the default to Q35. Migrating to the Q35 machine type is a separate, post-upgrade procedure to follow after all Compute nodes are upgraded to RHEL 9.2. For more information about migrating the Q35 machine type, see Updating the default machine type for hosts after an upgrade to RHOSP 17.
Use the following procedures to upgrade Compute nodes to a Multi-RHEL environment:
14.3.1. Creating roles for Multi-RHEL Compute nodes 링크 복사링크가 클립보드에 복사되었습니다!
Create new roles to store the nodes that you are upgrading to RHEL 9.2 or that are staying on RHEL 8.4, and move the nodes into the new roles.
Procedure
Create the relevant roles for your environment. In the
role_data.yamlfile, copy the source Compute role to use for the new role.Repeat this step for each additional role required. Roles can remain empty until you are ready to move your Compute nodes to the new roles.
If you are creating a RHEL 8 role:
name: <ComputeRHEL8> description: | Basic Compute Node role CountDefault: 1 rhsm_enforce_multios: 8.4 ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirtLegacy참고Roles that contain nodes remaining on RHEL 8.4 must include the
NovaLibvirtLegacyservice.-
Replace
<ComputeRHEL8>with the name of your RHEL 8.4 role. If you are creating a RHEL 9 role:
name: <ComputeRHEL9> description: | Basic Compute Node role CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirt참고Roles that contain nodes being upgraded to RHEL 9.2 must include the
NovaLibvirtservice. ReplaceOS::TripleO::Services::NovaLibvirtLegacywithOS::TripleO::Services::NovaLibvirt.- Replace <ComputeRHEL9> with the name of your RHEL 9.2 role.
Copy the
overcloud_upgrade_prepare.shfile to thecopy_role_Compute_param.shfile:$ cp overcloud_upgrade_prepare.sh copy_role_Compute_param.shEdit the
copy_role_Compute_param.shfile to include thecopy_role_params.pyscript. This script generates the environment file that contains the additional parameters and resources for the new role. For example:/usr/share/openstack-tripleo-heat-templates/tools/copy_role_params.py --rolename-src <Compute_source_role> --rolename-dst <Compute_destination_role> \ -o <Compute_new_role_params.yaml> \ -e /home/stack/templates/internal.yaml \ -e /home/stack/templates/network/network-environment.yaml \ -e /home/stack/templates/inject-trust-anchor.yaml \ -e /home/stack/templates/hostnames.yml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/templates/nodes_data.yaml \ -e /home/stack/templates/debug.yaml \ -e /home/stack/templates/firstboot.yaml \ -e /home/stack/overcloud-params.yaml \ -e /home/stack/overcloud-deploy/overcloud/overcloud-network-environment.yaml \ -e /home/stack/templates/baremetal-deployment.yaml \ -e /home/stack/templates/generated-networks-deployed.yaml \ -e /home/stack/templates/generated-vip-deployed.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \ -e ~/containers-prepare-parameter.yaml-
Replace
<Compute_source_role>with the name of your source Compute role that you are copying. -
Replace
<Compute_destination_role>with the name of your new role. -
Use the -o option to define the name of the output file that includes all the non-default values of the source Compute role for the new role. Replace
<Compute_new_role_params.yaml>with the name of your output file.
-
Replace
Run the
copy_role_Compute_param.shscript:$ sh /home/stack/copy_role_Compute_param.shMove the Compute nodes from the source role to the new role:
python3 /usr/share/openstack-tripleo-heat-templates/tools/baremetal_transition.py --baremetal-deployment /home/stack/tripleo-<stack>-baremetal-deployment.yaml --src-role <Compute_source_role> --dst-role <Compute_destination_role> <Compute-0> <Compute-1> <Compute-2>참고This tool includes the original
/home/stack/tripleo-<stack>-baremetal-deployment.yamlfile that you exported during the undercloud upgrade. The tool copies and renames the source role definition in the/home/stack/tripleo-<stack>-baremetal-deployment.yamlfile. Then, it changes thehostname_formatto prevent a conflict with the newly created destination role. The tool then moves the node from the source role to the destination role and changes thecountvalues.-
Replace
<stack>with the name of your stack. -
Replace
<Compute_source_role>with the name of the source Compute role that contains the nodes that you are moving to your new role. -
Replace
<Compute_destination_role>with the name of your new role. -
Replace
<Compute-0><Compute-1><Compute-2>with the names of the nodes that you are moving to your new role.
-
Replace
Reprovision the nodes to update the environment files in the stack with the new role location:
$ openstack overcloud node provision --stack <stack> --output /home/stack/templates/baremetal-deployment.yaml /home/stack/tripleo-<stack>-baremetal-deployment.yaml참고The output
baremetal-deployment.yamlfile is the same file that is used in theovercloud_upgrade_prepare.shfile during overcloud adoption.Include any Compute roles that are remaining on RHEL 8.4 in the
COMPUTE_ROLESparameter, and run the following script. For example, if you have a role calledComputeRHEL8that contains the nodes that are remaining on RHEL 8.4,COMPUTE_ROLES = --role ComputeRHEL8.python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \ ${COMPUTE_ROLES} \ --enable-multi-rhel \ --excludes collectd \ --excludes nova-libvirt \ --minor-override "{${EL8_TAGS}${EL8_NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \ --major-override "{${EL9_TAGS}${NAMESPACE}${CEPH_OVERRIDE}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \ --output-env-file \ /home/stack/containers-prepare-parameter.yaml- Repeat this procedure to create additional roles and to move additional Compute nodes to those new roles.