第8章 オーバークラウドの導入と準備
環境内の各スタックでオーバークラウドの導入とアップグレードの準備を実行します。DCN 環境でオーバークラウドの導入とアップグレードの準備を実行するには、DCN 環境でのオーバークラウドの導入と準備 を参照してください。
このアップグレード手順の所要時間と影響については、アップグレードの所要時間と影響 を参照してください。
8.1. オーバークラウドの導入と準備の実行 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドを導入するには、次のタスクを実行する必要があります。
- 各スタックで、ネットワークとホストのプロビジョニング設定エクスポートをオーバークラウドに導入します。
- 新しいコンテナーと追加の互換性設定を定義します。
導入後、次のタスクを実行するアップグレード準備スクリプトを実行する必要があります。
- オーバークラウドのプランを OpenStack Platform 17.1 に更新する。
- アップグレードに向けてノードを準備する。
このアップグレード手順の所要時間と影響については、アップグレードの所要時間と影響 を参照してください。
ロールに多数のノードが含まれている場合は、既存のロールを分割し、ロール間でノードを分割することで、RHOSP のアップグレードを高速化できます。詳細は、Red Hat ナレッジベースソリューション How to split roles during upgrade from RHOSP 16.2 to RHOSP 17.1 を参照してください。
前提条件
-
ベアメタルでプロビジョニングされるすべてのノードが
ACTIVE状態にあることを確認します。いずれかのノードがMAINTENANCE状態のままの場合、アップグレードを続行できません。ノードのACTIVEへの設定の詳細は、Setting bare-metal provisioned nodes to the active state を参照してください。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 stackrcアンダークラウド認証情報ファイルを入手します。$ source ~/stackrcアンダークラウドのアップグレード中にエクスポートされた以下のファイルに、オーバークラウドのアップグレードで想定される設定が含まれていることを確認します。
~/overcloud-deployディレクトリーには以下のファイルがあります。-
tripleo-<stack>-passwords.yaml -
tripleo-<stack>-network-data.yaml -
tripleo-<stack>-virtual-ips.yaml -
<stack>-network-environment.yaml tripleo-<stack>-baremetal-deployment.yaml-
<stack>は、スタックの名前に置き換えます。 -
tripleo-<stack>-baremetal-deployment.yamlファイルのベアメタルノードの UUID、ホスト名、および IP アドレス間のマッピングが現在のオーバークラウドと一致していることを確認します。必要に応じてマッピングを修正します。
警告Jinja2 のコメントの問題に対応し、アンダークラウドのアップグレード中に
convert_v1_net_data.pyやconvert_heat_nic_config_to_ansible_j2.pyなどの自動変換ツールで作成された各 nic-config テンプレートから、すべての Jinja2 コメントブロックを削除する必要があります。これらのコメントブロックを削除しないと、スケールアウトノードはプロビジョニングに失敗します。または、network_config_updateがtrueに設定されている場合、コントロールプレーンネットワークが失われる可能性があります。{{# NOTE! Custom parameter {} was hard-coded in ' 'the converted template. To parameterize use the ' '{{role.name}}ExtraGroupVars THT interface and update the ' 'template to use an ansible var. +#}}-
重要マルチセル環境をお使いの場合は、マルチセル環境でのオーバークラウドの導入 を参照し、ファイルを各セルスタックにコピーする例を確認してください。
-
メインスタックで、
passwords.yamlファイルを~/overcloud-deploy/$(<stack>)ディレクトリーにコピーします。環境内の各スタックでこの手順を繰り返します。$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-passwords.yaml ~/overcloud-deploy/<stack>/<stack>-passwords.yamlメインスタックで、
network-data.yamlファイルをスタックユーザーのホームディレクトリーにコピーし、ネットワークをデプロイします。環境内の各スタックでこの手順を繰り返します。$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-network-data.yaml ~/ $ openstack overcloud network provision --debug \ --output /home/stack/templates/generated-networks-deployed.yaml tripleo-<stack>-network-data.yaml詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 の オーバークラウドのプロビジョニングとデプロイ を参照してください。
お使いの環境に事前にプロビジョニングされたノードがある場合は、以下の手順を実行します。
stack ユーザーのホームディレクトリー内の
tripleo-<stack>-virtual-ips.yamlファイルのバックアップコピーを作成します。$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-virtual-ips.yaml ~/ ~/overcloud-deploy/<stack>/tripleo-<stack>-virtual-ips.yaml.origtripleo-<stack>-virtual-ips.yaml ファイルの最後に以下の設定を追加します。dns_name: overcloud ip_address: <ctrlplane_virtual_ip>1 name: control_virtual_ip2 network: ctlplane subnet: ctlplane-subnet
メインスタックで、
virtual-ips.yamlファイルをスタックユーザーのホームディレクトリーにコピーし、ネットワーク VIP をプロビジョニングします。環境内の各スタックでこの手順を繰り返します。$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-virtual-ips.yaml ~/ $ openstack overcloud network vip provision --debug \ --stack <stack> --output \ /home/stack/templates/generated-vip-deployed.yaml tripleo-<stack>-virtual-ips.yamlメインスタックで、
network-environment.yamlファイルをスタックユーザーのホームディレクトリーにコピーします。環境内の各スタックでこの手順を繰り返します。$ cp ~/overcloud-deploy/<stack>/<stack>-network-environment.yaml ~/templates/<stack>-network-environment.yaml注記NetworkConfigTemplateパラメーターが生成された.j2ファイルを指し、overcloud-network-environment.yamlファイルのresource_registryマッピングを削除していることを確認します。詳細は、Red Hat OpenStack Platform デプロイメントのカスタマイズ の NIC テンプレートの Jinja2 Ansible 形式への手動変換 を 参照してください。メインスタックで、
baremetal-deployment.yamlファイルをスタックユーザーのホームディレクトリーにコピーし、オーバークラウドノードをプロビジョニングします。環境内の各スタックでこの手順を繰り返します。$ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-baremetal-deployment.yaml ~/ $ openstack overcloud node provision --debug --stack <stack> \ --output /home/stack/templates/baremetal-deployment.yaml \ tripleo-<stack>-baremetal-deployment.yaml注記これはオーバークラウド導入の最終ステップです。オーバークラウドの導入が完了するまでに 10 分以上かかる場合は、Red Hat サポートにお問い合わせください。
コンテナーを準備するには、以下の手順を実行します。
アンダークラウドのアップグレードに使用した
containers-prepare-parameter.yamlファイルをバックアップします。$ cp containers-prepare-parameter.yaml \ containers-prepare-parameter.yaml.origスクリプトを実行して
containers-prepare-parameter.yamlファイルを更新する前に、以下の環境変数を定義します。-
NAMESPACE: UBI9 イメージの名前空間。たとえば、NAMESPACE='"namespace":"example.redhat.com:5002",'など。 -
EL8_NAMESPACE: UBI8 イメージの名前空間。 -
NEUTRON_DRIVER: 使用する OpenStack Networking (neutron) コンテナーを定義するために使用するドライバー。元のスタックのデプロイに使用したコンテナーのタイプに設定します。たとえば、OVN ベースのコンテナーを使用するには、NEUTRON_DRIVER='"neutron_driver":"ovn",'に設定します。 EL8_TAGS: UBI8 イメージのタグ (例:EL8_TAGS='"tag":"17.1",')。-
"17.1",は、コンテンツビューで使用するタグに置き換えます。
-
EL9_TAGS: UBI9 イメージのタグ (例:EL9_TAGS='"tag":"17.1",')。"17.1",は、コンテンツビューで使用するタグに置き換えます。tagパラメーターの詳細は、Red Hat OpenStack Platform デプロイメントのカスタマイズ の コンテナーイメージ準備のパラメーター を参照してください。
CONTROL_PLANE_ROLES:--roleオプションを使用したコントロールプレーンロールのリスト (例:--role ControllerOpenstack, --role Database, --role Messaging, --role Networker, --role CephStorage)。環境内のコントロールプレーンのロールのリストを表示するには、以下のコマンドを実行します。$ export STACK=<stack> \ $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \ /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \ | grep -vi compute-
<stack>は、スタックの名前に置き換えます。
-
COMPUTE_ROLES:--roleオプションを使用したコンピュートロールのリスト (--Compute-1など)。環境内のコンピュートロールのリストを表示するには、以下のコマンドを実行します。$ sudo awk '/tripleo_role_name/ {print "--role " $2}' \ /var/lib/mistral/${STACK}/tripleo-ansible-inventory.yaml \ | grep -i computeCEPH_OVERRIDE: Red Hat Ceph Storage をデプロイした場合は、Red Hat Ceph Storage 5 コンテナーイメージを指定します。以下に例を示します。CEPH_OVERRIDE='"ceph_image":"rhceph-5-rhel8","ceph_tag":"<latest>",'<latest>は、最新のceph_tagバージョン (5-499など) に置き換えます。以下は、
containers-prepare-parameter.yamlファイル設定の例です。NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel9",' EL8_NAMESPACE='"namespace":"registry.redhat.io/rhosp-rhel8",' NEUTRON_DRIVER='"neutron_driver":"ovn",' EL8_TAGS='"tag":"17.1",' EL9_TAGS='"tag":"17.1",' CONTROL_PLANE_ROLES="--role Controller" COMPUTE_ROLES="--role Compute1 --role Compute2" CEPH_TAGS='"ceph_tag":"5",'
-
以下のスクリプトを実行して、
containers-prepare-parameter.yamlファイルを更新します。警告Red Hat Ceph Storage をデプロイした場合は、次のコマンドを実行する前に、
CEPH_OVERRIDE環境変数が正しい値に設定されていることを確認してください。これを行わないと、Red Hat Ceph Storage のアップグレード時に問題が発生します。$ python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \ ${COMPUTE_ROLES} \ ${CONTROL_PLANE_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.yamlmulti-rhel-container-image-prepare.pyスクリプトは、次のパラメーターをサポートしています。--output-env-file-
デフォルトの
ContainerImagePrepare値を含む環境ファイルを書き込みます。 --local-push-destination- ローカルレジストリーへのアップロードをトリガーします。
--enable-registry-login-
コンテナーをプルする前に、システムがリモートレジストリーへのログインを試行できるようにするフラグを有効にします。このフラグは、
--local-push-destinationが使用されておらず、ターゲットシステムにリモートレジストリーへのネットワーク接続がある場合に使用します。このフラグは、リモートレジストリーへのネットワーク接続がない可能性があるオーバークラウドには使用しないでください。 --enable-multi-rhel- multi-rhel を有効にします。
--excludes- 除外するサービスをリストします。
--major-override- メジャーリリースのオーバーライドパラメーターをリストします。
--minor-override- マイナーリリースのオーバーライドパラメーターをリストします。
--role- ロールのリスト。
--role-file-
role_data.yamlファイル。
-
Red Hat Ceph Storage をデプロイした場合は、
containers-prepare-parameter.yamlファイルを開いて、Red Hat Ceph Storage 5 コンテナーイメージが指定されていること、および Red Hat Ceph Storage 6 コンテナーイメージへの参照がないことを確認します。
director でデプロイされた Red Hat Ceph Storage デプロイメントがある場合は、
ceph_params.yamlというファイルを作成し、次の内容を含めます。parameter_defaults: CephSpecFqdn: true CephConfigPath: "/etc/ceph" CephAnsibleRepo: "rhceph-5-tools-for-rhel-8-x86_64-rpms" DeployedCeph: true GrafanaPlugins: []重要RHOSP のアップグレード完了後に
ceph_params.yamlファイルを削除しないでください。このファイルは、director でデプロイされた Red Hat Ceph Storage 環境に存在する必要があります。さらに、openstack overcloud deployを実行するときは、-e ceph_params.yamlを指定するなどして、常にceph_params.yamlファイルを含める必要があります。注記Red Hat Ceph Storage デプロイメントに短縮名が含まれている場合は、
CephSpecFqdnパラメーターをfalseに設定する必要があります。trueに設定すると、短縮名とドメイン名の両方を使用してインベントリーが生成され、Red Hat Ceph Storage のアップグレードが失敗します。テンプレートディレクトリーに
upgrades-environment.yamlという環境ファイルを作成し、以下の内容を含めます。parameter_defaults: ExtraConfig: nova::workarounds::disable_compute_service_check_for_ffu: true DnsServers: ["<dns_servers>"] DockerInsecureRegistryAddress: [<undercloud_FQDN>] UpgradeInitCommand: | sudo subscription-manager repos --disable=* if $( grep -q 9.2 /etc/os-release ) then sudo subscription-manager repos --enable=rhel-9-for-x86_64-baseos-e4s-rpms --enable=rhel-9-for-x86_64-appstream-e4s-rpms --enable=rhel-9-for-x86_64-highavailability-e4s-rpms --enable=openstack-17.1-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms sudo subscription-manager release --set=9.2 else sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-aus-rpms --enable=rhel-8-for-x86_64-appstream-aus-rpms --enable=rhel-8-for-x86_64-highavailability-aus-rpms --enable=openstack-17.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms sudo subscription-manager release --set=8.4 fi if $(sudo podman ps | grep -q ceph ) then sudo dnf -y install cephadm fi-
<dns_servers>を、DNS サーバーの IP アドレスのコンマ区切りのリスト (["10.0.0.36", "10.0.0.37"]など) に置き換えます。 &
lt;undercloud_FQDN> をアンダークラウドホストの完全修飾ドメイン名(FQDN)に置き換えます(例:["undercloud-0.ctlplane.redhat.local:8787"])。環境ファイルで設定できるアップグレードパラメーターに関する詳細は、アップグレードパラメーター を参照してください。
-
アンダークラウドで、テンプレートディレクトリーに
overcloud_upgrade_prepare.shというファイルを作成します。このファイルは、環境内のスタックごとに作成する必要があります。このファイルには、オーバークラウドのデプロイファイルの元の内容と、使用中の環境に関連する環境ファイルが含まれています。以下に例を示します。#!/bin/bash openstack overcloud upgrade prepare --yes \ --timeout 460 \ --templates /usr/share/openstack-tripleo-heat-templates \ --ntp-server 192.168.24.1 \ --stack <stack> \ -r /home/stack/roles_data.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/templates/upgrades-environment.yaml \ -e /home/stack/overcloud-params.yaml \ -e /home/stack/templates/overcloud-network-environment.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \ -e /home/stack/skip_rhel_release.yaml \ -e ~/containers-prepare-parameter.yaml \ -e /home/stack/templates/baremetal-deployment.yaml \ -e /home/stack/templates/generated-networks-deployed.yaml \ -e /home/stack/templates/generated-vip-deployed.yaml注記マルチセル環境をお使いの場合は、マルチセル環境でのオーバークラウドの導入 を参照し、セルスタックごとに
overcloud_upgrade_prepare.shファイルを作成する例を確認してください。-
元の
network-environment.yamlファイル (/home/stack/templates/network/network-environment.yaml) で、OS::TripleO::*::Net::SoftwareConfigを指す resource_registry リソースをすべて削除します。 overcloud_upgrade_prepare.shファイルに、環境に関連する以下のオプションを含めます。-
アップグレード固有のパラメーターを持つ環境ファイル (
upgrades-environment.yaml) (-e) -
新しいコンテナーイメージの場所を定義した環境ファイル (
containers-prepare-parameter.yaml) (-e)。多くの場合、アンダークラウドが使用する環境ファイルと同じファイルです。 -
リリースパラメーター (
-e) を持つ環境ファイル (skip_rhel_release.yaml)。 -
デプロイメントに関連するカスタム設定環境ファイル (
-e) -
該当する場合は、
--roles-fileを使用してカスタムロール (roles_data) ファイルを指定します。 -
Ceph デプロイメントの場合、Ceph パラメーター (
-e) を持つ環境ファイル (ceph_params.yaml)。 -
該当する場合は、IPA サービス (
-e) を持つ環境ファイル (ipa-environment.yaml)。 -
コンポーザブルネットワークを使用している場合は、
--network-fileを使用して (network_data) ファイルを指定します。 -
オーバークラウドの導入中に生成されたファイル (
network-deployed.yaml、vip-deployed.yaml、baremetal-deployment.yaml) (-e)。これらのファイルは、オーバークラウドアップグレード準備スクリプトの最後に配置する必要があります。 OVS を使用する場合は、OVS 環境ファイルを以下の順序で追加します。
-
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml -
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml -
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs-dpdk.yaml
-
OVN を使用する場合は、OVN 環境ファイルを次の順序で追加します。
-
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-dpdk.yaml -
/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-ha.yaml注記オーバークラウドのデプロイファイルや
overcloud_upgrade_prepare.shファイルにnetwork-isolation.yamlファイルを含めないでください。ネットワークの分離はnetwork_data.yamlファイルで定義します。
-
カスタムのスタック名を使用する場合は、
--stackオプションでその名前を渡します。注記環境内のすべての RHEL 8 コンピュートノードが RHEL 9 にアップグレードされるまで、テンプレートに
nova-hw-machine-type-upgrade.yamlファイルを含める必要があります。このファイルを除外すると、/var/log/containers/novaディレクトリーのnova_compute.logにエラーが表示されます。すべての RHEL 8 コンピュートノードを RHEL 9 にアップグレードした後、このファイルを設定から削除してスタックを更新できます。
-
アップグレード固有のパラメーターを持つ環境ファイル (
director でデプロイされた Red Hat Ceph Storage のユースケースでは、アップグレードするデプロイメントで、CephFS NFS を使用する Shared File Systems サービス (manila) を有効にしていた場合、
overcloud_upgrade_prepare.shスクリプトファイルの最後に追加の環境ファイルを指定する必要があります。環境ファイルは、スクリプトの前の方で指定されている別の環境ファイルをオーバーライドするため、スクリプトの最後に追加する必要があります。-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml外部 Red Hat Ceph Storage のユースケースでは、アップグレードするデプロイメントで、CephFS NFS を使用する Shared File Systems サービス (manila) を有効にしていた場合、
overcloud_upgrade_prepare.shスクリプト内の関連する環境ファイルが tripleo ベースのceph-nfsロールを参照することを確認する必要があります。次の環境ファイルが存在する場合は、削除します。-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml次の環境ファイルを追加します。
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
-
元の
環境内のスタックごとにアップグレード準備スクリプトを実行します。
$ source stackrc $ chmod 755 /home/stack/overcloud_upgrade_prepare.sh $ sh /home/stack/overcloud_upgrade_prepare.sh注記マルチセル環境をお使いの場合は、各セルスタック用に作成した
overcloud_upgrade_prepare.shファイルごとにスクリプトを実行する必要があります。例については、マルチセル環境でのオーバークラウドの導入 を参照してください。- アップグレードの準備が完了するまで待ちます。
コンテナーイメージをダウンロードします。
$ openstack overcloud external-upgrade run --stack <stack> --tags container_image_prepare