11.3. コンピュートノードの Multi-RHEL 環境へのアップグレード
コンピュートノードの一部を RHEL 9.2 にアップグレードし、残りのコンピュートノードは RHEL 8.4 のままにすることができます。このアップグレードプロセスには、以下の基本的な手順が含まれます。
-
どのノードを RHEL 9.2 にアップグレードするか、そしてどのノードを RHEL 8.4 に残しておきたいかを計画します。ノードのバッチごとに作成する各ロールのロール名を選択します (例:
ComputeRHEL-9.2
およびComputeRHEL-8.4
)。 RHEL 9.2 にアップグレードするノード、または RHEL 8.4 に残しておきたいノードを保存するロールを作成します。これらのロールは、コンピュートノードを新しいロールに移動する準備ができるまで空のままにすることができます。必要な数のロールを作成し、任意の方法でロール間でノードを分割できます。以下に例を示します。
-
環境で
ComputeSRIOV
というロールが使用されており、カナリアテストを実行して RHEL 9.2 にアップグレードする必要がある場合は、新しいComputeSRIOVRHEL9
ロールを作成し、カナリアノードを新しいロールに移動できます。 -
環境で
ComputeOffload
というロールを使用しており、そのロール内のほとんどのノードを RHEL 9.2 にアップグレードするが、いくつかのノードを RHEL 8.4 に残しておきたい場合は、新しいComputeOffloadRHEL8
ロールを作成して RHEL 8.4 ノードを保存できます。その後、元のComputeOffload
ロール内のノードを選択して、RHEL 9.2 にアップグレードできます。
-
環境で
- ノードを各コンピュートロールから新しいロールに移動します。
特定のコンピュートノード上のオペレーティングシステムを RHEL 9.2 にアップグレードします。同じロールまたは複数のロールから、ノードをバッチでアップグレードできます。
注記Multi-RHEL 環境では、デプロイメントでは引き続き pc-i440fx マシンタイプを使用する必要があります。デフォルトを Q35 に更新しないでください。Q35 マシンタイプへの移行は、すべてのコンピュートノードを RHEL 9.2 にアップグレードした後に実行する、別のアップグレード後の手順です。Q35 マシンタイプの移行に関する詳細は、RHOSP 17 へのアップグレード後のホストのデフォルトマシンタイプの更新 を参照してください。
次の手順を使用して、コンピュートノードを Multi-RHEL 環境にアップグレードします。
11.3.1. Multi-RHEL コンピュートノードのロールの作成
RHEL 9.2 にアップグレードするノード、または RHEL 8.4 に留まるノードを保存する新しいロールを作成し、ノードを新しいロールに移動します。
手順
環境に関連するロールを作成します。
role_data.yaml
ファイルで、新しいロールに使用するソースのコンピュートロールをコピーします。必要な追加のロールごとにこの手順を繰り返します。コンピュートノードを新しいロールに移動する準備ができるまで、ロールは空のままにすることができます。
RHEL 8 ロールを作成している場合は、以下のようになります。
name: <ComputeRHEL8> description: | Basic Compute Node role CountDefault: 1 rhsm_enforce_multios: 8.4 ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirtLegacy
注記RHEL 8.4 に残っているノードを含むロールには、
NovaLibvirtLegacy
サービスが含まれている必要があります。-
<ComputeRHEL8>
を RHEL 8.4 ロールの名前に置き換えます。 RHEL 9 ロールを作成している場合は、以下のようになります。
name: <ComputeRHEL9> description: | Basic Compute Node role CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::NovaLibvirt
注記RHEL 9.2 にアップグレードされるノードを含むロールには、
NovaLibvirt
サービスが含まれている必要があります。OS::TripleO::Services::NovaLibvirtLegacy
をOS::TripleO::Services::NovaLibvirt
に置き換えます。- <ComputeRHEL9> を RHEL 9.2 ロールの名前に置き換えます。
overcloud_upgrade_prepare.sh
ファイルをcopy_role_Compute_param.sh
ファイルにコピーします。$ cp overcloud_upgrade_prepare.sh copy_role_Compute_param.sh
copy_role_Compute_param.sh
ファイルを編集して、copy_role_params.py
スクリプトを含めます。このスクリプトは、新しいロールの追加パラメーターとリソースを含む環境ファイルを生成します。以下に例を示します。/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 /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.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/overcloud_adopt/baremetal-deployment.yaml \ -e /home/stack/overcloud_adopt/generated-networks-deployed.yaml \ -e /home/stack/overcloud_adopt/generated-vip-deployed.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \ -e ~/containers-prepare-parameter.yaml
-
<Compute_source_role>
をコピーするソースのコンピュートロールの名前に置き換えます。 -
<Compute_destination_role>
を新しいロールの名前に置き換えます。 -
-o オプションを使用して、新しいロールのソースコンピュートロールのデフォルト以外の値をすべて含む出力ファイルの名前を定義します。
<Compute_new_role_params.yaml>
を出力ファイルの名前に置き換えます。
-
copy_role_Compute_param.sh
スクリプトを実行します。$ sh /home/stack/copy_role_Compute_param.sh
コンピュートノードをソースロールから新しいロールに移動します。
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>
注記このツールには、アンダークラウドのアップグレード中にエクスポートした元の
/home/stack/tripleo-<stack>-baremetal-deployment.yaml
ファイルが含まれています。このツールは、/home/stack/tripleo-<stack>-baremetal-deployment.yaml
ファイル内のソースロール定義をコピーし、名前を変更します。次に、新しく作成された宛先ロールとの競合を防ぐために、hostname_format
を変更します。続いて、ツールはノードをソースロールから宛先ロールに移動し、count
値を変更します。-
<stack>
は、スタックの名前に置き換えます。 -
<Compute_source_role>
を新しいロールに移動するノードを含むソースコンピュートロールの名前に置き換えます。 -
<Compute_destination_role>
を新しいロールの名前に置き換えます。 -
<Compute-0>
<Compute-1>
<Compute-2>
を、新しいロールに移動するノードの名前に置き換えます。
-
ノードを再プロビジョニングして、スタック内の環境ファイルを新しいロールの場所で更新します。
$ openstack overcloud node provision --stack <stack> --output /home/stack/overcloud_adopt/baremetal-deployment.yaml /home/stack/tripleo-<stack>-baremetal-deployment.yaml
注記出力された
baremetal-deployment.yaml
ファイルは、オーバークラウドの導入中にovercloud_upgrade_prepare.sh
ファイルで使用されたファイルと同じものです。RHEL 8.4 に残っているコンピュートロールを
COMPUTE_ROLES
パラメーターに含めて、次のスクリプトを実行します。たとえば、RHEL 8.4 に残っているノードを含むComputeRHEL8
というロールがある場合は、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
- この手順を繰り返して追加のロールを作成し、追加のコンピュートノードをそれらの新しいロールに移動します。
11.3.2. コンピュートノードのオペレーティングシステムのアップグレード
選択したコンピュートノードのオペレーティングシステムを RHEL 9.2 にアップグレードします。異なるロールから複数のノードを同時にアップグレードできます。
前提条件
環境に必要なロールが作成されていることを確認してください。Multi-RHEL 環境のロールの作成に関する詳細は、Multi-RHEL コンピュートノードのロールの作成 を参照してください。
手順
skip_rhel_release.yaml
ファイルで、SkipRhelEnforcement
パラメーターをfalse
に設定します。parameter_defaults: SkipRhelEnforcement: false
次の例に示すように、
-e
system_upgrade.yaml
引数と必要なその他の-e
環境ファイル引数をovercloud_upgrade_prepare.sh
スクリプトに含めます。$ openstack overcloud upgrade prepare --yes \ ... -e /home/stack/system_upgrade.yaml \ -e /home/stack/<Compute_new_role_params.yaml> \ ...
-
アップグレード固有のパラメーターを持つ
system_upgrade.yaml
ファイルを含めます (-e)。 -
新しいロールに必要なパラメーターを含む環境ファイルを含めます (-e)。
<Compute_new_role_params.yaml>
を新しいロール用に作成した環境ファイルの名前に置き換えます。 - 複数のロールからノードを同時にアップグレードする場合は、作成した新しいロールごとに環境ファイルを含めます。
-
アップグレード固有のパラメーターを持つ
- オプション: インスタンスを移行します。移行計画の詳細は、コンピュートノード間の仮想マシンの移行 および 移行の準備 を参照してください。
-
overcloud_upgrade_prepare.sh
スクリプトを実行します。 特定のコンピュートノード上のオペレーティングシステムをアップグレードします。アップグレードするノードのコンマ区切りリストを指定して、
--limit
オプションを使用します。以下の例では、computerhel9-0
、computerhel9-1
、computerhel9-2
、およびcomputesriov-42
ノードをComputeRHEL9
およびComputeSRIOV
ロールからアップグレードします。$ openstack overcloud upgrade run --yes --tags system_upgrade --stack <stack> --limit computerhel9-0,computerhel9-1,computerhel9-2,computesriov-42
- <stack> は、スタックの名前に置き換えます。
コンピュートノード上のコンテナーを RHEL 9.2 にアップグレードします。アップグレードするノードのコンマ区切りリストを指定して、
--limit
オプションを使用します。以下の例では、computerhel9-0
、computerhel9-1
、computerhel9-2
、およびcomputesriov-42
ノードをComputeRHEL9
およびComputeSRIOV
ロールからアップグレードします。$ openstack overcloud upgrade run --yes --stack <stack> --limit computerhel9-0,computerhel9-1,computerhel9-2,computesriov-42