第4章 オーバークラウドのアップグレードの準備

以下の手順では、アップグレードのプロセスに向けたオーバークラウドの準備を行います。

前提条件

  • アンダークラウドが最新バージョンにアップグレードされていること

4.1. オーバークラウドの登録情報の準備

オーバークラウドに最新のサブスクリプション情報を提供して、アップグレードプロセスの実行中にオーバークラウドが最新のパッケージを使用するようにする必要があります。

前提条件

  • 最新の OpenStack Platform リポジトリーが含まれたサブスクリプション
  • 登録のためのアクティベーションキーを使用する場合には、新しい OpenStack Platform リポジトリーを含む新規アクティベーションキーを作成すること

手順

  1. 登録情報が記載された環境ファイルを編集します。以下に例を示します。

    $ vi ~/templates/rhel-registration/environment-rhel-registration.yaml
  2. 以下のパラメーター値を編集します。

    rhel_reg_repos
    Red Hat OpenStack Platform 12 の新しいリポジトリーが含まれるように更新します。
    rhel_reg_activation_key
    Red Hat OpenStack Platform 12 のリポジトリーにアクセスするためのアクティベーションキーを更新します。
    rhel_reg_sat_repo
    Red Hat Satellite 6 のより新しいバージョンを使用する場合には、Satellite 6 の管理ツールが含まれているリポジトリーを更新します。
  3. 環境ファイルを保存します。

関連情報

4.2. コンテナー化されたサービスの準備

Red Hat OpenStack Platform は、コンテナーを使用して OpenStack サービスをホストおよび実行するようになりました。これには、以下の操作を実行する必要があります。

  • レジストリーなどのコンテナーイメージソースの設定
  • イメージソース上のイメージの場所を指定した環境ファイルの生成
  • オーバークラウドデプロイメントへの環境ファイルの追加

この環境ファイルを異なるソース種別用に生成する方法についての全手順は、『director のインストールと使用方法』ガイドの「コンテナーレジストリー情報の設定」を参照してください。

生成される環境ファイル (/home/stack/templates/overcloud_images.yaml) には、各サービスのコンテナーイメージをポイントするパラメーターが記載されます。今後実行する全デプロイメント操作でこの環境ファイルを指定してください。

4.3. 新規コンポーザブルサービスの作成

Red Hat OpenStack Platform の今回のバージョンには、新たなコンポーザブルサービスが含まれています。カスタムの roles_data ファイルを使用する場合には、これらの新しいサービスを該当するロールに追加してください。

全ロール

以下の新規サービスは全ロールに適用されます。

OS::TripleO::Services::CertmongerUser
オーバークラウドが Certmonger からの証明書を必要とするようにすることができます。TLS/SSL 通信を有効にしている場合にのみ使用されます。
OS::TripleO::Services::Docker
コンテナー化されたサービスを管理するためにdocker をインストールします。
OS::TripleO::Services::MySQLClient
オーバークラウドのデータベースクライアントツールをインストールします。
OS::TripleO::Services::ContainersLogrotateCrond
コンテナーログ用の logrotate サービスをインストールします。
OS::TripleO::Services::Securetty
ノード上で securetty の設定ができるようにします。environments/securetty.yaml 環境ファイルで有効化します。
OS::TripleO::Services::Tuned
Linux のチューニングデーモン (tuned) を有効化して設定します。

特定のロール

以下の新規サービスは特定のロールに適用されます。

OS::TripleO::Services::Clustercheck
OS::TripleO::Services::MySQL service, such as the Controller またはスタンドアロンの Database ロールなど、OS::TripleO::Services::MySQL サービスも使用するロールに必要です。
OS::TripleO::Services::Iscsid
Controller ロール、Compute ロール、BlockStorage ロールで iscsid サービスを設定します。
OS::TripleO::Services::NovaMigrationTarget
コンピュート ノード上でマイグレーションターゲットサービスを設定します。

カスタムの roles_data ファイルを使用する場合には、必要なロールにこれらのサービスを追加してください。

上記に加えて、特定のカスタムロール向けのサービスの最新のリストは、『Advanced Overcloud Customization』ガイドの「Service Architecture: Standalone Roles」の項を参照してください。

4.4. コンポーザブルネットワークの準備

Red Hat OpenStack Platform の今回のバージョンでは、コンポーザブルネットワーク向けの新機能が導入されています。カスタムの roles_data ファイルを使用する場合には、ファイルを編集して、コンポーザブルネットワークを各ロールに追加します。コントローラーノードの場合の例を以下に示します。

- name: Controller
  networks:
    - External
    - InternalApi
    - Storage
    - StorageMgmt
    - Tenant

その他の構文例については、デフォルトの /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ファイルを確認してください。また、ロールの例のスニペットについては、/usr/share/openstack-tripleo-heat-templates/roles を確認してください。

カスタムのスタンドアロンロールとコンポーザブルネットワークの対応表を以下に示します。

ロール必要なネットワーク

Ceph Storage Monitor

StorageStorageMgmt

Ceph Storage OSD

StorageStorageMgmt

Ceph Storage RadosGW

StorageStorageMgmt

Cinder API

InternalApi

Compute

InternalApiTenantStorage

Controller

ExternalInternalApiStorageStorageMgmtTenant

データベース

InternalApi

Glance

InternalApi

Heat

InternalApi

Horizon

InternalApi

Ironic

必要なネットワークはなし。API には、プロビジョニング/コントロールプレーンネットワークを使用します。

Keystone

InternalApi

Load Balancer

ExternalInternalApiStorageStorageMgmtTenant

Manila

InternalApi

メッセージバス

InternalApi

Networker

InternalApiTenant

Neutron API

InternalApi

Nova

InternalApi

OpenDaylight

ExternalInternalApiTenant

Redis

InternalApi

Sahara

InternalApi

Swift API

Storage

Swift ストレージ

StorageMgmt

Telemetry

InternalApi

4.5. 非推奨パラメーターの準備

以下のパラメーターは非推奨となり、ロール固有のパラメーターに置き換えられた点に注意してください。

旧パラメーター新規パラメーター

controllerExtraConfig

ControllerExtraConfig

OvercloudControlFlavor

OvercloudControllerFlavor

controllerImage

ControllerImage

NovaImage

ComputeImage

NovaComputeExtraConfig

ComputeExtraConfig

NovaComputeServerMetadata

ComputeServerMetadata

NovaComputeSchedulerHints

ComputeSchedulerHints

NovaComputeIPs

ComputeIPs

SwiftStorageServerMetadata

ObjectStorageServerMetadata

SwiftStorageIPs

ObjectStorageIPs

SwiftStorageImage

ObjectStorageImage

OvercloudSwiftStorageFlavor

OvercloudObjectStorageFlavor

カスタムの環境ファイルでこれらのパラメーターを更新します。

4.6. Ceph Storage ノードのアップグレードの準備

コンテナー化されたサービスにアップグレードされたため、Ceph Storage ノードのインストールと更新の方法が変わりました。Ceph Storage の設定では、ceph-ansible パッケージ内の Playbook のセットを使用するようになりました。このパッケージはアンダークラウドにインストールします。

前提条件

  • オーバークラウドに、director で管理されている Ceph Storage クラスターがあること

手順

  1. ceph-ansible パッケージをアンダークラウドにインストールします。

    [stack@director ~]$ sudo yum install -y ceph-ansible
  2. ストレージの環境ファイルで、最新のリソースと設定を使用するようにします。これは、以下のように変更する必要があります。

    1. resource_registry はコア Heat テンプレートコレクションの docker/services サブディレクトリーからコンテナー化されたサービスを使用します。以下に例を示します。
resource_registry:
  OS::TripleO::Services::CephMon: ../docker/services/ceph-ansible/ceph-mon.yaml
  OS::TripleO::Services::CephOSD: ../docker/services/ceph-ansible/ceph-osd.yaml
  OS::TripleO::Services::CephClient: ../docker/services/ceph-ansible/ceph-client.yaml
  1. 新しい CephAnsibleDisksConfig パラメーターを使用して、ディスクのマッピングの方法を定義します。以前のバージョンの Red Hat OpenStack Platform では、ceph::profile::params::osds hieradata を使用して OSD レイアウトを定義していました。この hieradata を CephAnsibleDisksConfig パラメーターの構成に変換します。たとえば、hieradata に以下の内容が記載されているとします。

    parameter_defaults:
      ExtraConfig:
        ceph::profile::params::osd_journal_size: 512
        ceph::profile::params::osds:
          '/dev/sdb': {}
          '/dev/sdc': {}
          '/dev/sdd': {}

    この場合には、CephAnsibleDisksConfig は以下のようになります。

    parameters_default:
      CephAnsibleDisksConfig:
        devices:
        - /dev/sdb
        - /dev/sdc
        - /dev/sdd
        journal_size: 512
        osd_scenario: collocated

    ceph-ansible に使用する OSD ディスクレイアウトオプションの完全な一覧は、/usr/share/ceph-ansible/group_vars/osds.yml.sample のサンプルファイルを参照してください。

関連情報

  • ハイパーコンバージドインフラストラクチャーを使用する環境には、追加の設定が必要である点に注意してください。「Hyper-Converged Infrastructure (HCI) のアップグレードの準備」を参照してください。
  • OpenStack Platform director を使用した ceph-ansible の管理に関する詳しい情報は、『Deploying an Overcloud with Containerized Red Hat Ceph』ガイドを参照してください。

4.7. Hyper-Converged Infrastructure (HCI) のアップグレードの準備

ハイパーコンバージドインフラストラクチャー (HCI) では、Ceph Storage と Compute サービスが単一のロール内に配置されます。ただし、HCI ノードは通常のコンピュートノードと同様にアップグレードします。HCI を使用している場合には、コアパッケージのインストールが完了してコンテナーサービスが有効化されるまで、Ceph Storage サービスをコンテナー化されたサービスへの移行は遅らせてください。

前提条件

  • オーバークラウドで、Compute と Ceph Storage の両方が配置されたロールを使用していること

手順

  1. Ceph Storage の設定が含まれた環境ファイルを編集します。
  2. resource_registry が Puppet リソースを使用するように設定します。以下に例を示します。

    resource_registry:
      OS::TripleO::Services::CephMon: ../puppet/services/ceph-mon.yaml
      OS::TripleO::Services::CephOSD: ../puppet/services/ceph-osd.yaml
      OS::TripleO::Services::CephClient: ../puppet/services/ceph-client.yaml
    注記

    /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph.yaml の内容を例として使用します。

  3. 「オーバークラウドノードのアップグレード」の手順に従って、コントローラーベースのノードをコンテナー化されたサービスにアップグレードします。
  4. 「コンピュートノードのアップグレード」の手順に従って HCI ノードをアップグレードします。
  5. Ceph Storage 設定の resource_registry を編集して、コンテナー化されたサービスを使用するようにします。

    resource_registry:
      OS::TripleO::Services::CephMon: ../docker/services/ceph-ansible/ceph-mon.yaml
      OS::TripleO::Services::CephOSD: ../docker/services/ceph-ansible/ceph-osd.yaml
      OS::TripleO::Services::CephClient: ../docker/services/ceph-ansible/ceph-client.yaml
    注記

    /usr/share/openstack-tripleo-heat-templates/environments/storage-environment.yaml の内容を例として使用します。

  6. ストレージの環境ファイルの parameter_defaults セクションにCephAnsiblePlaybook パラメーターを追加します。

      CephAnsiblePlaybook: /usr/share/ceph-ansible/infrastructure-playbooks/switch-from-non-containerized-to-containerized-ceph-daemons.yml
  7. ストレージの環境ファイルの parameter_defaults セクションにCephAnsibleDisksConfig パラメーターを追加して、ディスクレイアウトを定義します。以下に例を示します。

      CephAnsibleDisksConfig:
        devices:
        - /dev/vdb
        - /dev/vdc
        - /dev/vdd
        journal_size: 512
        osd_scenario: collocated
  8. 「アップグレードの最終処理」の手順に従って、オーバークラウドのアップグレードの最終処理を実行します。

関連情報

  • OpenStack Platform director を使用した ceph-ansible の管理の設定に関する詳しい情報は、『Deploying an Overcloud with Containerized Red Hat Ceph』ガイドを参照してください。

4.8. SSL/TLS を介してアンダークラウドのパブリック API にアクセスするための準備

オーバークラウドは、アップグレード中にアンダークラウドの OpenStack Object Storage (swift) のパブリック API にアクセスする必要があります。アンダークラウドで自己署名証明書を使用している場合には、アンダークラウドの認証局を各オーバークラウドノードに追加する必要があります。

前提条件

  • アンダークラウドで、パブリック API に SSL/TLS を使用していること

手順

  1. director の動的な Ansible スクリプトが OpenStack Platform 12 バージョンに更新され、オーバークラウドプラン内の RoleNetHostnameMap Heat パラメーターを使用してインベントリーを定義するようになりました。ただし、オーバークラウドは現在 OpenStack Platform 11 のテンプレートバージョンを使用しており、これには RoleNetHostnameMap パラメーターがないため、一時的な静的インベントリーファイルを作成する必要があります。このファイルは、以下のコマンドを実行すると生成することができます。

    $ openstack server list -c Networks -f value | cut -d"=" -f2 > overcloud_hosts
  2. 以下の内容を記述した Ansible Playbook (undercloud-ca.yml) を作成します。

    ---
    - name: Add undercloud CA to overcloud nodes
      hosts: all
      user: heat-admin
      become: true
      tasks:
        - name: Copy undercloud CA
          copy:
            src: ca.crt.pem
            dest: /etc/pki/ca-trust/source/anchors/
        - name: Update trust
          command: "update-ca-trust extract"
        - name: Get the hostname of the undercloud
          delegate_to: 127.0.0.1
          command: hostname
          register: undercloud_hostname
        - name: Verify URL
          uri:
            url: https://{{ undercloud_hostname.stdout }}:13808/healthcheck
            return_content: yes
          register: verify
        - name: Report output
          debug:
            msg: "{{ ansible_hostname }} can access the undercloud's Public API"
          when: verify.content == "OK"

    この Playbook には複数のタスクが含まれており、各ノードで以下の操作を実行します。

    • アンダークラウドの認証局のファイル (ca.crt.pem) をオーバークラウドノードにコピーします。このファイルの名前と場所は、設定によって異なる場合があります。この例では、自己署名証明書の手順 (『director のインストールと使用方法』「SSL/TLS 証明書の設定」を参照) で定義された名前と場所を使用しています。
    • オーバークラウドノードで、CA トラストデータベースを更新するコマンドを実行します。
    • オーバークラウドノードから、アンダークラウドの Object Storage Public API をチェックして、成功したかどうかを報告します。
  3. 以下のコマンドで Playbook を実行します。

    $ ansible-playbook -i overcloud_hosts undercloud-ca.yml

    ここでは、一時インベントリーを使用して、Ansible にオーバークラウドノードを指定します。

  4. その結果、Ansible の出力には、ノードのデバッグメッセージが表示されます。以下に例を示します。

    ok: [192.168.24.100] => {
        "msg": "overcloud-controller-0 can access the undercloud's Public API"
    }

関連情報

  • オーバークラウドでの Ansible 自動化の実行に関する詳しい情報は、『director のインストールと使用方法』ガイドの「Ansible 自動化の実行」 を参照してください。

4.9. 事前にプロビジョニングされたノードのアップグレードの準備

事前にプロビジョニング済みのノードは、director の管理外で作成されたノードです。事前にプロビジョニング済みのノードを使用するオーバークラウドには、アップグレードの前に追加のステップがいくつか必要です。

前提条件

  • オーバークラウドが事前にプロビジョニング済みのノードを使用していること

手順

  1. 以下のコマンドを実行して、OVERCLOUD_HOSTS 環境変数内のノードの IP アドレスの一覧を保存します。

    $ source ~/stackrc
    $ export OVERCLOUD_HOSTS=$(openstack server list -f value -c Networks | cut -d "=" -f 2 | tr '\n' ' ')
  2. 以下のスクリプトを実行します。

    $ /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/enable-ssh-admin.sh
  3. アップグレードを開始します。
  4. コンピュートノードまたは Object Storage ノードをアップグレードする場合には、以下を使用します。

    1. upgrade-non-controller.sh スクリプトに -U オプションを使用して stack ユーザーを指定します。事前にプロビジョニング済みのノードのデフォルトユーザーは heat-admin ではなく stack であることがその理由です。
    2. --upgrade オプションでノードの IP アドレスを使用します。これは、ノードが director の Compute (Nova) と Bare Metal (ironic) のサービスで管理されるのでノード名がないためです。

      以下に例を示します。

      $ upgrade-non-controller.sh -U stack --upgrade 192.168.24.100

関連情報

4.10. NFV を設定したオーバークラウドの準備

Red Hat OpenStack Platform 11 から Red Hat OpenStack Platform 12 にアップグレードすると、OVS パッケージもバージョン 2.6 から 2.7 に更新されます。OVS-DPDK が設定されている場合にこの移行をサポートするには、以下のガイドラインに従ってください。

注記

Red Hat OpenStack Platform 12 は OVS クライアントモードで稼働します。

前提条件

  • オーバークラウドでネットワーク機能仮想化 (NFV) を使用していること

手順

オーバークラウドを Red Hat OpenStack Platform 11 から OVS-DPDK を設定した Red Hat OpenStack Platform 12 にアップグレードする場合には、環境ファイルに以下の追加パラメーターを設定する必要があります。

  1. parameter_defaults セクションで、アップグレードプロセス中に os-net-config を実行して、OVS 2.7 PCI アドレスを DPDK ポートに関連付けするためのするためのネットワークデプロイメントパラメーターを追加します。

    parameter_defaults:
      ComputeNetworkDeploymentActions: ['CREATE', 'UPDATE']

    パラメーター名は、DPDK のデプロイに使用するロール名と一致する必要があります。この例では、ロール名は Compute なので、パラメーター名は ComputeNetworkDeploymentActions となっています。

    注記

    初回のアップグレードの後には、このパラメーターは必要ないので、環境ファイルから削除すべきです。

  2. resource_registry セクションで、ComputeNeutronOvsAgent サービスを neutron-ovs-dpdk-agent puppet サービスに上書きします。

    resource_registry:
      OS::TripleO::Services::ComputeNeutronOvsAgent: /usr/share/openstack-tripleo-heat-templates/puppet/services/neutron-ovs-dpdk-agent.yaml

    Red Hat OpenStack Platform 12 は、新しい ComputeOvsDpdk ロールの追加をサポートするための新しいサービス (OS::TripleO::Services::ComputeNeutronOvsDpdk) を追加しました。上記の例では、このサービスをアップグレード向けに外部にマッピングしています。

編集した環境ファイルは、「オーバークラウドノードのアップグレード」openstack overcloud deploy コマンドの一部として追加します。

4.11. オーバークラウドのアップグレードの一般的な考慮事項

オーバークラウドのアップグレードを実行する前に考慮すべき一般的な注意事項は以下の通りです。

Custom ServiceNetMap
カスタムの ServiceNetMap を指定してオーバークラウドをアップグレードする場合には、新規サービス向けに最新の ServiceNetMap が含まれるようにしてください。デフォルトのサービス一覧は、network/service_net_map.j2.yaml ファイルの ServiceNetMapDefaults パラメーターで定義されます。カスタムの ServiceNetMap の使用方法については、『オーバークラウドの高度なカスタマイズ』「Isolating Networks」のセクションを参照してください。
外部のロードバランシング
外部のロードバランシングを使用している場合には、ロードバランサーに追加する新規サービスがあるかどうかを確認してください。サービスの設定については、『External Load Balancing for the Overcloud』ガイドの「Configuring Load Balancing Options」の項を参照してください。
非推奨となったデプロイメントオプション
openstack overcloud deploy コマンドの一部のオプションは非推奨になりました。これらのオプションの代わりに、同等の Heat パラメーターを使用すべきです。これらのパラメーターの対照表は、『director のインストールと使用方法』ガイドの「CLI ツールを使用したオーバークラウドの作成」を参照してください。