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 となります。
前提条件
- アンダークラウドを現行バージョンの最新のマイナーリリースに更新済みであること
- オーバークラウドのバックアップを実行済みであること
手順
サブスクリプション管理の設定で
rhel_reg_release
パラメーターを確認します。このパラメーターが設定されていない場合は、そのパラメーターを追加してバージョン 7.7 に設定する必要があります。parameter_defaults: ... rhel_reg_release: "7.7"
オーバークラウドのサブスクリプション管理用環境ファイルに加えた変更を、必ず保存してください。
元の
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 登録用の環境ファイル
- その他のカスタム環境ファイル
-
Heat テンプレートコレクションの初期化ファイル (
オーバークラウドの静的なインベントリーファイルを作成します。
$ tripleo-ansible-inventory --ansible_ssh_user heat-admin --static-yaml-inventory ~/inventory.yaml
デフォルトのオーバークラウド名
overcloud
以外のオーバークラウド名を使用する場合は、--plan
オプションを使用して実際のオーバークラウドの名前を設定します。すべてのノードで、オペレーティングシステムのバージョンを 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
set_release.yaml Playbook を実行します。
$ ansible-playbook -i ~/inventory.yaml -f 25 ~/set_release.yaml --limit undercloud,Controller,Compute
すべての Red Hat OpenStack Platform ノードにコンテンツを適用するには、
--limit
オプションを使用します。openstack overcloud update
コマンドを使用して、全ノードでパッケージの更新を実行します。$ openstack overcloud update stack -i overcloud
-i
のオプションを指定すると、各ノードは対話モードで順次に更新されます。更新プロセスによりノードの更新が完了すると、スクリプトにより、確認のためのブレークポイントが提供されます。-i
オプションを指定しないと、最初のブレークポイントで更新が一時停止されたままになります。したがって、-i
オプションを含めることが必須です。スクリプトは以下の機能を実行します。
スクリプトはノード上で 1 つずつ実行します。
- コントローラーノードの場合は、これにより全パッケージが更新されます。
- その他のノードの場合には、これにより Puppet モジュールのみが更新されます。
Puppet は全ノードで一度に実行されます。
- コントローラーノードの場合には、Puppet 実行により設定が同期されます。
- その他のノードの場合には、Puppet 実行により残りのパッケージが更新され、設定が同期されます。
更新のプロセスが開始します。このプロセス中に、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
一覧の最後のノードからブレークポイントをクリアします。これで、そのノードの更新が開始します。スクリプトはノードの更新順序を自動的に事前定義します。
- 各コントローラーノードを個別に事前定義
- 各コンピュートノードを個別に事前定義
- 各 Ceph Storage ノードを個別に事前定義
- その他の全ノードを個別に事前定義
更新を成功させるには、特に以下の順序で作業を行うことを推奨します。
- 各コントローラーノードのブレークポイントを個別にクリアします。更新後にノードのサービスを再起動する必要がある場合のために、各コントローラーノードには、個別のパッケージ更新が必要です。これにより、他のコントローラーノードの高可用性サービスの中断が抑えられます。
- コントローラーノードの更新後に、各コンピュートノードのブレークポイントをクリアします。また、特定のノード上でコンピュートノードの名前をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数のコンピュートノード上のブレークポイントを一度にクリアしたりすることもできます。
- 各 Ceph Storage ノードのブレークポイントをクリアします。また、特定のノード上で Ceph Storage ノードの名前をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数の Ceph Storage ノード上のブレークポイントを一度にクリアしたりすることもできます。
- 残りのブレークポイントをクリアして、その他のノードを更新します。特定のノードでノード名をタイプしてブレークポイントをクリアしたり、Python ベースの正規表現を使用して複数のノード上のブレークポイントを一度にクリアしたりすることもできます。
- すべてのノードの更新が完了するまで待ちます。
更新が完了すると、コマンドにより
COMPLETE
のステータスが報告されます。... IN_PROGRESS IN_PROGRESS IN_PROGRESS COMPLETE update finished with status COMPLETE
コントローラーノードにフェンシングを設定している場合には、更新プロセスによってその設定が無効になる場合があります。更新プロセスが完了したら、コントローラーノードの 1 つで以下のコマンドを実行してフェンシングを再度有効にします。
$ sudo pcs property set stonith-enabled=true
更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。カーネルおよびその他のシステムッケージを更新した場合には、リブートが必要です。各ノードの /var/log/yum.log
ファイルをチェックして、kernel
または openvswitch
パッケージのメジャーまたはマイナーバージョンが更新されているかどうかを確認します。更新されている場合には、以下の手順に従って各ノードをリブートします。