Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

2.6. 現在のオーバークラウドパッケージの OpenStack Platform 10.z の更新

director では、全オーバークラウドノード上のパッケージを更新するためのコマンドが提供されています。これにより、OpenStack Platform 環境の現行バージョン内のマイナー更新を実行することができます。これは、Red Hat OpenStack Platform 10 内でのマイナー更新です。

注記

このステップにより、オーバークラウドノードのオペレーティングシステムも Red Hat Enterprise Linux 7 の最新バージョンに更新され、Open vSwitch はバージョン 2.9 となります。

前提条件

  • アンダークラウドを現行バージョンの最新のマイナーリリースに更新済みであること
  • オーバークラウドのバックアップを実行済みであること

手順

  1. サブスクリプション管理の設定で rhel_reg_release パラメーターを確認します。このパラメーターが設定されていない場合は、そのパラメーターを追加してバージョン 7.7 に設定する必要があります。

    parameter_defaults:
      ...
      rhel_reg_release: "7.7"

    オーバークラウドのサブスクリプション管理用環境ファイルに加えた変更を、必ず保存してください。

  2. 元の openstack overcloud deploy コマンドに --update-plan-only オプションを追加して、現在のプランを更新します。以下に例を示します。

    $ openstack overcloud deploy --update-plan-only \
      --templates  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/storage-environment.yaml \
      -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \
      [-e <environment_file>|...]

    --update-plan-only のオプションを指定すると、director に保管されているオーバークラウドのプランのみが更新されます。-e オプションを使用して、オーバークラウドと関連のある環境ファイルとその更新パスを追加します。後で実行される環境ファイルで定義されているパラメーターとリソースが優先されることになるため、環境ファイルの順序は重要となります。以下の一覧は、環境ファイルの順序の例です。

    • Heat テンプレートコレクションの初期化ファイル (environments/network-isolation.yaml) を含むネットワーク分離ファイルと、次にカスタムの NIC 設定ファイル
    • 外部のロードバランシングの環境ファイル
    • ストレージの環境ファイル
    • Red Hat CDN または Satellite 登録用の環境ファイル
    • その他のカスタム環境ファイル
  3. オーバークラウドの静的なインベントリーファイルを作成します。

    $ tripleo-ansible-inventory --ansible_ssh_user heat-admin --static-yaml-inventory ~/inventory.yaml

    デフォルトのオーバークラウド名 overcloud 以外のオーバークラウド名を使用する場合は、--plan オプションを使用して実際のオーバークラウドの名前を設定します。

  4. すべてのノードで、オペレーティングシステムのバージョンを Red Hat Enterprise Linux 7.7 に設定するタスクが含まれる Playbook を作成します。

    $ cat > ~/set_release.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: set release to 7.7
          command: subscription-manager release --set=7.7
          become: true
    EOF
  5. set_release.yaml Playbook を実行します。

    $ ansible-playbook -i ~/inventory.yaml -f 25 ~/set_release.yaml --limit undercloud,Controller,Compute

    すべての Red Hat OpenStack Platform ノードにコンテンツを適用するには、--limit オプションを使用します。

  6. openstack overcloud update コマンドを使用して、全ノードでパッケージの更新を実行します。

    $ openstack overcloud update stack -i overcloud

    -i のオプションを指定すると、各ノードは対話モードで順次に更新されます。更新プロセスによりノードの更新が完了すると、スクリプトにより、確認のためのブレークポイントが提供されます。-i オプションを指定しないと、最初のブレークポイントで更新が一時停止されたままになります。したがって、-i オプションを含めることが必須です。

    スクリプトは以下の機能を実行します。

    1. スクリプトはノード上で 1 つずつ実行します。

      1. コントローラーノードの場合は、これにより全パッケージが更新されます。
      2. その他のノードの場合には、これにより Puppet モジュールのみが更新されます。
    2. Puppet は全ノードで一度に実行されます。

      1. コントローラーノードの場合には、Puppet 実行により設定が同期されます。
      2. その他のノードの場合には、Puppet 実行により残りのパッケージが更新され、設定が同期されます。
  7. 更新のプロセスが開始します。このプロセス中に、director は IN_PROGRESS のステータスを報告して、ブレークポイントをクリアするように定期的に要求します。以下に例を示します。

    starting package update on stack overcloud
    IN_PROGRESS
    IN_PROGRESS
    WAITING
    on_breakpoint: [u'overcloud-compute-0', u'overcloud-controller-2', u'overcloud-controller-1', u'overcloud-controller-0']
    Breakpoint reached, continue? Regexp or Enter=proceed (will clear 49913767-e2dd-4772-b648-81e198f5ed00), no=cancel update, C-c=quit interactive mode:

    Enter を押すと、on_breakpoint 一覧の最後のノードからブレークポイントをクリアします。これで、そのノードの更新が開始します。

  8. スクリプトはノードの更新順序を自動的に事前定義します。

    • 各コントローラーノードを個別に事前定義
    • 各コンピュートノードを個別に事前定義
    • 各 Ceph Storage ノードを個別に事前定義
    • その他の全ノードを個別に事前定義

    更新を成功させるには、特に以下の順序で作業を行うことを推奨します。

    1. 各コントローラーノードのブレークポイントを個別にクリアします。更新後にノードのサービスを再起動する必要がある場合のために、各コントローラーノードには、個別のパッケージ更新が必要です。これにより、他のコントローラーノードの高可用性サービスの中断が抑えられます。
    2. コントローラーノードの更新後に、各コンピュートノードのブレークポイントをクリアします。また、特定のノード上でコンピュートノードの名前をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数のコンピュートノード上のブレークポイントを一度にクリアしたりすることもできます。
    3. 各 Ceph Storage ノードのブレークポイントをクリアします。また、特定のノード上で Ceph Storage ノードの名前をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数の Ceph Storage ノード上のブレークポイントを一度にクリアしたりすることもできます。
    4. 残りのブレークポイントをクリアして、その他のノードを更新します。特定のノードでノード名をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数のノード上のブレークポイントを一度にクリアしたりすることもできます。
    5. すべてのノードの更新が完了するまで待ちます。
  9. 更新が完了すると、コマンドにより COMPLETE のステータスが報告されます。

    ...
    IN_PROGRESS
    IN_PROGRESS
    IN_PROGRESS
    COMPLETE
    update finished with status COMPLETE
  10. コントローラーノードにフェンシングを設定している場合には、更新プロセスによってその設定が無効になる場合があります。更新プロセスが完了したら、コントローラーノードの 1 つで以下のコマンドを実行してフェンシングを再度有効にします。

    $ sudo pcs property set stonith-enabled=true

更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。カーネルおよびその他のシステムッケージを更新した場合には、リブートが必要です。各ノードの /var/log/yum.log ファイルをチェックして、kernel または openvswitch パッケージのメジャーまたはマイナーバージョンが更新されているかどうかを確認します。更新されている場合には、以下の手順に従って各ノードをリブートします。