Red Hat OpenStack Platform のアップグレード
Red Hat OpenStack Platform 環境のアップグレード
概要
第1章 はじめに
本書には、Red Hat OpenStack Platform 環境を最新のメジャーバージョンにアップグレードし、そのバージョンのマイナーリリースで最新状態に維持するために役立つワークフローを記載しています。
本ガイドは、以下のバージョンのアップグレードパスを提供します。
古いオーバークラウドバージョン | 新しいオーバークラウドバージョン |
---|---|
Red Hat OpenStack Platform 13 | Red Hat OpenStack Platform 15 |
1.1. ワークフローの概要
以下の表には、アップグレードのプロセスに必要なステップの概要をまとめています。
ステップ | 説明 |
---|---|
環境の準備 | アンダークラウドおよびオーバークラウドのコントローラーノードのデータベースおよび設定のバックアップを実行します。最新のマイナーリリースに更新します。環境を検証します。 |
コンテナーイメージの準備 | OpenStack Platform 15 のサービス用のコンテナーイメージを準備するためのパラメーターが含まれた環境ファイルを作成します。 |
アンダークラウドのアップグレード | アンダークラウドを OpenStack Platform 13 から OpenStack Platform 15 にアップグレードします。 |
オーバークラウドの準備 | オーバークラウドの設定ファイルを OpenStack Platform 15 に移行するための適切なステップを実行します。 |
コントローラーノードのアップグレード | 全コントローラーノードを同時に OpenStack Platform 15 にアップグレードします。 |
コンピュートノードのアップグレード | 選択したコンピュートノードでアップグレードをテストします。テストが成功したら、全コンピュートノードをアップグレードします。 |
Ceph Storage ノードのアップグレード | 全 Ceph Storage ノードをアップグレードします。これには、Red Hat Ceph Storage 3 のコンテナー化されたバージョンへのアップグレードも含まれます。 |
アップグレードの最終段階 | コンバージェンスのコマンドを実行して、オーバークラウドスタックをリフレッシュします。 |
1.2. 主な変更点
以下の一覧に、アップグレードプロセスに関する主な変更点の概要を示します。
- アンダークラウドは、サービスを実行するのにコンテナーを使用するようになりました。アンダークラウドにも、オーバークラウドを設定するのと同じアーキテクチャーが使用されます。
- director がアンダークラウドおよびオーバークラウドのコンテナーイメージを自動的に取得するのに、コンテナー準備法を使用するようになりました。
-
オーバークラウドは、Ansible ベースの Red Hat Subscription Management 法を使用するようになりました。これは以前の
rhel-registration
法に代わるものです。 - コンポーザブルネットワークがルートの一覧を定義するようになりました。
- OpenStack Telemetry (ceilometer) は、OpenStack Platform 15 から完全に削除されています。
1.3. アップグレードを開始する前に
- アップグレードを実施する前に、ハードウェアに対するファームウェアの更新をすべて適用します。
更新時に Open vSwitch (OVS) のメジャーバージョンが変更されると (たとえば 2.9 から 2.11 に)、director はユーザーがカスタマイズした設定ファイルの名前に .rpmsave 拡張子を付けて変更し、デフォルトの OVS 設定をインストールします。
以前の OVS カスタマイズを維持するには、名前が変更されたファイルに含まれる変更を手動で再適用する必要があります (例: /etc/logrotate.d/openvswitch の logrotate の設定)。この 2 ステップの更新方法により、RPM パッケージの自動更新によってトリガーされるデータプレーンの中断が回避されます。
第2章 OpenStack Platform のアップグレードの準備
このプロセスでは、完全な更新に向けて OpenStack Platform 環境を準備します。これには、以下のステップが含まれます。
- アンダークラウドとオーバークラウドの両方をバックアップする。
- アンダークラウドのパッケージを更新し、アップグレードコマンドを実行する。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、アンダークラウドをリブートする。
- overcloud upgrade コマンドでオーバークラウドを更新する。
- 新しいカーネルまたはシステムパッケージがインストールされた場合には、オーバークラウドノードをリブートする。
- アンダークラウドとオーバークラウドの両方で検証のチェックを実行する。
これらの手順により、OpenStack Platform 環境は、アップグレードを開始する前に、最適な状態となります。
2.1. 現在の OpenStack Platform バージョンの更新
次の OpenStack Platform バージョンへのアップグレードを実施する前に、既存のアンダークラウドおよびオーバークラウドに対してマイナーバージョンの更新を実施することを推奨します。これは、OpenStack Platform 13 のマイナーバージョンの更新を実施することを意味します。
OpenStack Platform 13 向けの『 Red Hat OpenStack Platform の最新状態の維持』に 記載の手順に従います。
2.2. ベアメタルアンダークラウドのバックアップ
完全なアンダークラウドのバックアップには、以下のデータベースおよびファイルが含まれます。
- アンダークラウドノード上の MariaDB データベース
- (データベースを正確にリストアできるように) アンダークラウド上の MariaDB 設定ファイル
-
設定データ:
/etc
-
ログデータ:
/var/log
-
イメージデータ:
/var/lib/glance
-
証明書生成データ (SSL を使用している場合):
/var/lib/certmonger
-
コンテナーイメージデータ:
/var/lib/docker
、/var/lib/registry
-
swift の全データ:
/srv/node
-
stack ユーザーのホームディレクトリー内の全データ:
/home/stack
バックアッププロセスを実行する前に、アンダークラウドに利用可能なディスク容量が十分にあることを確認します。アーカイブファイルは、少なくとも 3.5 GB となることが予想され、それ以上になる可能性があります。
手順
-
アンダークラウドに
root
ユーザーとしてログインします。 データベースのバックアップを作成します。
[root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
backup
ディレクトリーを作成して、そのディレクトリーを所有するユーザーをstack
ユーザーに変更します。[root@director ~]# mkdir /backup [root@director ~]# chown stack: /backup
このディレクトリーを使用して、アンダークラウドのデータベースおよびファイルシステムを含むアーカイブを保存します。
バックアップ
ディレクトリーに移動します。[root@director ~]# cd /backup
データベースのバックアップと設定ファイルをアーカイブします。
[root@director ~]# tar --xattrs --ignore-failed-read -cf \ undercloud-backup-`date +%F`.tar \ /etc \ /var/log \ /var/lib/glance \ /var/lib/certmonger \ /srv/node \ /root \ /home/stack
-
--ignore-failed-read
オプションを指定すると、アンダークラウドに適用されないディレクトリーはスキップされます。 -
--xattrs
オプションには、Object Storage (swift) のメタデータを保管するのに必要な拡張属性が含まれます。
これにより、
undercloud-backup-<date>.tar.gz
という名前のファイルが作成されます。ここで、<date>
はシステムの日付けです。このtar
ファイルを安全な場所にコピーします。-
2.3. コンテナー化されたオーバークラウドのコントロールプレーンサービスのバックアップ
以下の手順では、コンテナー化されたオーバークラウドのデータベースと設定のバックアップを作成します。オーバークラウドのデータベースおよびサービスのバックアップにより、作業環境のスナップショットが確保されます。スナップショットがあると、操作のエラーが発生してオーバークラウドを元の状態に復元する必要がある場合に役立ちます。
この手順では、重要なコントロールプレーンサービスのみが含まれます。コンピュートノードのワークロード、Ceph Storage ノード上のデータ、追加のサービスのバックアップは対象外です。
手順
データベースのバックアップを実行します。
コントローラーノードにログインします。オーバークラウドには、アンダークラウドからアクセスできます。
$ ssh heat-admin@192.0.2.100
root
ユーザーに変更します。$ sudo -i
まだ
mariadb
クライアントツールがインストールされていない場合には、それらのツールをインストールします。# dnf install mariadb
バックアップを保管するための一時ディレクトリーを作成します。
# mkdir -p /var/tmp/mysql_backup/
データベースのパスワードを取得して、
MYSQLDBPASS
の環境変数に保存します。このパスワードは、/etc/puppet/hieradata/service_configs.json
ファイルのmysql::server::root_password
の変数に保管されています。以下のコマンドを使用してパスワードを保管します。# MYSQLDBPASS=$(sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
データベースのバックアップを作成します。
# mysql -uroot -p$MYSQLDBPASS -s -N -e "select distinct table_schema from information_schema.tables where engine='innodb' and table_schema != 'mysql';" | xargs mysqldump -uroot -p$MYSQLDBPASS --single-transaction --databases > /var/tmp/mysql_backup/openstack_databases-`date +%F`-`date +%T`.sql
このコマンドにより、
/var/tmp/mysql_backup/openstack_databases-<date>.sql
という名前のデータベースバックアップがダンプされます。<date>
はシステムの日付と時刻になります。このデータベースダンプを安全な場所にコピーします。ユーザーおよびパーミッションに関する全情報をバックアップします。
# mysql -uroot -p$MYSQLDBPASS -s -N -e "SELECT CONCAT('\"SHOW GRANTS FOR ''',user,'''@''',host,''';\"') FROM mysql.user where (length(user) > 0 and user NOT LIKE 'root')" | xargs -n1 mysql -uroot -p$MYSQLDBPASS -s -N -e | sed 's/$/;/' > /var/tmp/mysql_backup/openstack_databases_grants-`date +%F`-`date +%T`.sql
このコマンドにより、
/var/tmp/mysql_backup/openstack_databases_grants-<date>.sql
という名前のデータベースバックアップがダンプされます。<date>
はシステムの日付と時刻になります。このデータベースダンプを安全な場所にコピーします。
Pacemaker の設定をバックアップします。
- コントローラーノードにログインします。
以下のコマンドを実行し、現在の Pacemaker 設定のアーカイブを作成します。
# sudo pcs config backup pacemaker_controller_backup
-
作成されたアーカイブ (
pacemaker_controller_backup.tar.bz2
) を安全な場所にコピーします。
Redis クラスターをバックアップします。
HAProxy から Redis のエンドポイントを取得します。
# REDISIP=$(sudo hiera -c /etc/puppet/hiera.yaml redis_vip)
Redis クラスターのマスターパスワードを取得します。
# REDISPASS=$(sudo hiera -c /etc/puppet/hiera.yaml redis::masterauth)
Redis クラスターの接続をチェックします。
# redis-cli -a $REDISPASS -h $REDISIP ping
Redis データベースをダンプします。
# redis-cli -a $REDISPASS -h $REDISIP bgsave
このコマンドにより、データベースのバックアップがデフォルトの
/var/lib/redis/
ディレクトリーに保管されます。このデータベースダンプを安全な場所にコピーします。
各コントローラーノードのファイルシステムをバックアップします。
バックアップ用のディレクトリーを作成します。
# mkdir -p /var/tmp/filesystem_backup/
以下の
tar
コマンドを実行します。# tar --ignore-failed-read --xattrs \ -zcvf /var/tmp/filesystem_backup/fs_backup-`date '+%Y-%m-%d-%H-%M-%S'`.tar.gz \ /var/lib/kolla \ /var/lib/config-data \ /var/log/containers \ /var/log/openvswitch \ /etc \ /srv/node \ /root \ /home/heat-admin
--ignore-failed-read
オプションは、見つからないディレクトリーを無視します。これは、特定のサービスが使用されていない場合や、独自のカスタムロール上に分離されている場合に役立ちます。
-
作成された
tar
ファイルを安全な場所にコピーします。
2.4. アンダークラウドの検証
アンダークラウドの機能を確認するステップを以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
エラーが発生している Systemd サービスがあるかどうかを確認します。
(undercloud) $ sudo systemctl list-units --state=failed 'tripleo_*'
アンダークラウドの空き領域を確認します。
(undercloud) $ df -h
『Director Installation and Usage』の「Undercloud Reqirements」 を元に、十分な空き容量があるかどうかを判断します。
アンダークラウド上に NTP をインストールしている場合には、クロックが同期されていることを確認します。
(undercloud) $ sudo chronyc -a 'burst 4/4'
アンダークラウドのネットワークサービスを確認します。
(undercloud) $ openstack network agent list
全エージェントが
Alive
で、それらの状態がUP
である必要があります。アンダークラウドの Compute サービスを確認します。
(undercloud) $ openstack compute service list
全エージェントのステータスが
enabled
で、状態がup
である必要があります。
関連情報
- OpenStack Orchestration (heat) のデータベースで削除済みとマークされている stack のエントリーを完全削除する方法は、「How I can remove old data from my heat database from my Director node」のソリューションに記載されています。
2.5. コンテナー化されたオーバークラウドの検証
コンテナー化されたオーバークラウドの機能を確認するステップを以下に示します。
手順
アンダークラウドのアクセス情報を読み込みます。
$ source ~/stackrc
ベアメタルノードのステータスを確認します。
(undercloud) $ openstack baremetal node list
全ノードの電源状態が有効で (
on
)、かつメンテナンスモードがfalse
である必要があります。エラーが発生している Systemd サービスがあるかどうかを確認します。
(undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo systemctl list-units --state=failed 'tripleo_*' 'ceph*'" ; done
エラーが発生しているコンテナー化されたサービスがあるかどうかを確認します。
(undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo podman ps -f 'exited=1' --all" ; done
全サービスへの HAProxy 接続をチェックします。コントロールプレーンの仮想 IP アドレスと
haproxy.stats
サービスの認証情報を取得します。(undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE sudo 'grep "listen haproxy.stats" -A 6 /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg'
以下の cURL 要求でそれらの情報を使用します。
(undercloud) $ curl -s -u admin:<PASSWORD> "http://<IP ADDRESS>:1993/;csv" | egrep -vi "(frontend|backend)" | cut -d, -f 1,2,18,37,57 | column -s, -t
<
;PASSWORD>
; および<IP ADDRESS&
gt; の情報をhaproxy.stats
サービスからの実際の情報に置き換えます。その結果表示される一覧には、各ノード上の OpenStack Platform サービスとそれらの接続ステータスが表示されます。注記ノードが Redis サービスを実行している場合、1 つのノードだけがそのサービスの
ON
ステータスを表示します。これは、Redis がアクティブ/パッシブのサービスであり、同時に複数のノードでは実行されないためです。オーバークラウドデータベースのレプリケーションの正常性を確認します。
(undercloud) $ for NODE in $(openstack server list --name controller -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo podman exec clustercheck clustercheck" ; done
Pacemaker リソースの正常性を確認します。
(undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo pcs status"
以下の点を確認します。
-
全クラスターノードが
online
であること -
いずれのクラスターノード上でも
stopped
のリソースがないこと -
pacemaker で
failed
のアクションがないこと
-
全クラスターノードが
各オーバークラウドノードでディスク領域を確認します。
(undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo df -h --output=source,fstype,avail -x overlay -x tmpfs -x devtmpfs" ; done
オーバークラウドの Ceph Storage クラスターの正常性を確認します。以下のコマンドを使用すると、コントローラーノード上で
ceph
ツールが実行されて、クラスターをチェックします。(undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo ceph -s"
Ceph Storage OSD に空き領域があるかどうかを確認します。以下のコマンドを使用すると、コントローラーノード上で
ceph
ツールが実行され、空き領域をチェックします。(undercloud) $ NODE=$(openstack server list --name controller-0 -f value -c Networks | cut -d= -f2); ssh heat-admin@$NODE "sudo ceph df"
オーバークラウドノードでクロックが同期されていることを確認します。
(undercloud) $ for NODE in $(openstack server list -f value -c Networks | cut -d= -f2); do echo "=== $NODE ===" ; ssh heat-admin@$NODE "sudo chronyc -a 'burst 4/4'" ; done
オーバークラウドのアクセス情報を読み込みます。
(undercloud) $ source ~/overcloudrc
オーバークラウドのネットワークサービスを確認します。
(overcloud) $ openstack network agent list
全エージェントが
Alive
で、それらの状態がUP
である必要があります。オーバークラウドの Compute サービスを確認します。
(overcloud) $ openstack compute service list
全エージェントのステータスが
enabled
で、状態がup
である必要があります。オーバークラウドのボリュームサービスを確認します。
(overcloud) $ openstack volume service list
全エージェントのステータスが
enabled
で、状態がup
である必要があります。
関連情報
- 「How can I verify my OpenStack environment is deployed with Red Hat recommended configurations?」の記事を参照してください。この記事には、Red Hat OpenStack Platform 環境を確認して、Red Hat の推奨値に合わせて設定を調整する方法が記載されています。
第3章 アンダークラウドのアップグレード
以下の手順では、アンダークラウドおよびそのオーバークラウドのイメージを Red Hat OpenStack Platform 15 にアップグレードします。
3.1. 次世代電源管理ドライバーへの移行
Red Hat OpenStack Platform では ハードウェアタイプ とも呼ばれる次世代ドライバーが使用され、従来のドライバーがこれに置き換えられています。
従来のドライバーとそれと等価な次世代ハードウェアタイプの対比を、以下の表に示します。
従来のドライバー | 新しいハードウェアタイプ |
---|---|
|
|
|
|
|
|
|
|
|
|
VBMC ( |
|
|
|
OpenStack Platform 15 では、これらの従来ドライバーは削除され、使用できなくなっています。OpenStack Platform 15 に アップグレードする前に ハードウェアタイプに変更する必要があります。
手順
有効なハードウェアタイプの最新の一覧を確認します。
$ source ~/stackrc $ openstack baremetal driver list --type dynamic
有効ではないハードウェアタイプのドライバーを使用する場合には、
undercloud.conf
ファイルのenabled_hardware_types
パラメーターを使用してそのドライバーを有効にします。enabled_hardware_types = ipmi,redfish,idrac
ファイルを保存し、アンダークラウドをリフレッシュします。
$ openstack undercloud install
以下のコマンドを実行します。
OLDDRIVER
およびNEWDRIVER
変数を、実際の電源管理タイプに置き換えてください。$ source ~/stackrc $ OLDDRIVER="pxe_ipmitool" $ NEWDRIVER="ipmi" $ for NODE in $(openstack baremetal node list --driver $OLDDRIVER -c UUID -f value) ; do openstack baremetal node set $NODE --driver $NEWDRIVER; done
3.2. director パッケージの OpenStack Platform 14 へのアップグレード
以下の手順では、director ツールセットとコア Heat テンプレートコレクションを OpenStack Platform 14 リリースにアップグレードします。
手順
-
director に
stack
ユーザーとしてログインします。 現在設定されている OpenStack Platform リポジトリーを無効にします。
$ sudo subscription-manager repos --disable=rhel-7-server-openstack-13-rpms
新しい OpenStack Platform リポジトリーを有効にします。
$ sudo subscription-manager repos --enable=rhel-7-server-openstack-14-rpms
dnf
コマンドを実行して、director の主要なパッケージをアップグレードします。$ sudo dnf update -y python-tripleoclient* openstack-tripleo-common openstack-tripleo-heat-templates
3.3. コンテナーイメージの準備
オーバークラウドの設定には、イメージの取得先およびその保存方法を定義するための初期レジストリーの設定が必要です。コンテナーイメージを準備するための環境ファイルを生成およびカスタマイズするには、以下の手順を実施します。
手順
- アンダークラウドホストに stack ユーザーとしてログインします。
デフォルトのコンテナーイメージ準備ファイルを生成します。
$ openstack tripleo container image prepare default \ --local-push-destination \ --output-env-file containers-prepare-parameter.yaml
上記のコマンドでは、以下の追加オプションを使用しています。
-
--local-push-destination
: コンテナーイメージの保管場所として、アンダークラウド上のレジストリーを設定します。つまり、director は必要なイメージを Red Hat Container Catalog からプルし、それをアンダークラウド上のレジストリーにプッシュします。director はこのレジストリーをコンテナーイメージのソースとして使用します。Red Hat Container Catalog から直接プルする場合には、このオプションを省略します。 --output-env-file
: 環境ファイルの名前です。このファイルには、コンテナーイメージを準備するためのパラメーターが含まれます。ここでは、ファイル名はcontainers-prepare-parameter.yaml
です。注記アンダークラウドとオーバークラウド両方のコンテナーイメージのソースを定義するのに、同じ
containers-prepare-parameter.yaml
ファイルを使用することができます。
-
-
containers-prepare-parameter.yaml
を編集し、要求に合わせて変更を加えます。
3.4. コンテナーイメージ準備のパラメーター
コンテナー準備用のデフォルトファイル (containers-prepare-parameter.yaml
) には、ContainerImagePrepare
Heat パラメーターが含まれます。このパラメーターで、イメージのセットを準備するためのさまざまな設定を定義します。
parameter_defaults: ContainerImagePrepare: - (strategy one) - (strategy two) - (strategy three) ...
それぞれの設定では、サブパラメーターのセットにより使用するイメージやイメージの使用方法を定義することができます。以下の表には、ContainerImagePrepare
の各設定で使用することのできるサブパラメーターの情報をまとめています。
パラメーター | 説明 |
---|---|
| 設定から除外するイメージの名前に含まれる文字列のリスト |
|
設定に含めるイメージの名前に含まれる文字列のリスト。少なくとも 1 つのイメージ名が既存のイメージと一致している必要があります。 |
|
対象となるイメージのタグに追加する文字列。たとえば、 |
| 変更するイメージを絞り込むイメージラベルのディクショナリー。イメージが定義したラベルと一致する場合には、director はそのイメージを変更プロセスに含めます。 |
| イメージのアップロード中 (ただし目的のレジストリーにプッシュする前) に実行する Ansible ロール名の文字列 |
|
|
|
アップロードプロセス中にイメージをプッシュするレジストリーの名前空間。このパラメーターで名前空間を指定すると、すべてのイメージパラメーターでもこの名前空間が使用されます。 |
| 元のコンテナーイメージをプルするソースレジストリー |
|
初期イメージの取得場所を定義する、 |
|
得られたイメージをタグ付けするラベルパターンを定義します。通常は、 |
set
パラメーターには、複数の キー:値
定義を設定することができます。以下の表には、キーの情報をまとめています。
キー | 説明 |
---|---|
| Ceph Storage コンテナーイメージの名前 |
| Ceph Storage コンテナーイメージの名前空間 |
| Ceph Storage コンテナーイメージのタグ |
| 各 OpenStack サービスイメージの接頭辞 |
| 各 OpenStack サービスイメージの接尾辞 |
| 各 OpenStack サービスイメージの名前空間 |
|
使用する OpenStack Networking (neutron) コンテナーを定義するのに使用するドライバー。標準の |
|
ソースレジストリーからプルするイメージを識別するために director が使用するタグ。通常、このキーは |
ContainerImageRegistryCredentials
パラメーターは、コンテナーレジストリーをそのレジストリーに対して認証を行うためのユーザー名とパスワードにマッピングします。
コンテナーレジストリーでユーザー名およびパスワードが必要な場合には、ContainerImageRegistryCredentials
を使用して以下の構文でその値を設定することができます。
ContainerImagePrepare: - push_destination: 192.168.24.1:8787 set: namespace: registry.redhat.io/... ... ContainerImageRegistryCredentials: registry.redhat.io: my_username: my_password
上記の例の my_username
および my_password
を、実際の認証情報に置き換えてください。Red Hat では、個人のユーザー認証情報を使用する代わりに、レジストリーサービスアカウントを作成し、それらの認証情報を使用して registry.redhat.io
コンテンツにアクセスすることを推奨します。詳しくは、「Red Hat コンテナーレジストリーの認証」を参照してください。
ContainerImageRegistryLogin
パラメーターは、デプロイ中のシステムのレジストリーへのログインを制御するために使用されます。push_destination
が false に設定されている、または使用されていない場合は、これを true
に設定する必要があります。
ContainerImagePrepare: - set: namespace: registry.redhat.io/... ... ContainerImageRegistryCredentials: registry.redhat.io: my_username: my_password ContainerImageRegistryLogin: true
3.5. director 設定の確認
お使いの環境に適用される可能のある新規または非推奨のパラメーターがないか、/usr/share/python-tripleoclient/undercloud.conf.sample
を確認してください。現在の /home/stack/undercloud.conf
ファイルでこれらのパラメーターを変更します。特に、以下のパラメーターに注意してください。
-
container_images_file
:containers-prepare-parameter.yaml
ファイルの場所への絶対パスに設定する必要があります。 -
enabled_drivers
: 削除する必要があります。以前のドライバーはhardware_types
に置き換えられました。 -
generate_service_certificate
: デフォルトではtrue
に設定されるようになりました。従来からアンダークラウドが SSL を使用しておらず、SSL を有効にする予定がない場合は、false
に切り替えます。アンダークラウドで SSL を有効にするには、アンダークラウドとオーバークラウドノード間に信頼を確立するために、アップグレード時に新たな環境ファイルを指定する必要がある点に注意してください。
3.6. director の設定パラメーター
以下の一覧で、undercloud.conf
ファイルを設定するパラメーターについて説明します。エラーを避けるために、パラメーターは決して該当するセクションから削除しないでください。
デフォルト
undercloud.conf
ファイルの [DEFAULT]
セクションで定義されているパラメーターを以下に示します。
- additional_architectures
オーバークラウドがサポートする追加の (カーネル) アーキテクチャーの一覧。現在、オーバークラウドは
ppc64le
アーキテクチャーをサポートしています。注記ppc64le のサポートを有効にする場合には、
ipxe_enabled
をFalse
に設定する必要もあります。- certificate_generation_ca
-
要求した証明書に署名する CA の
certmonger
のニックネーム。generate_service_certificate
パラメーターを設定した場合に限り、このオプションを使用します。local
CA を選択する場合は、certmonger はローカルの CA 証明書を/etc/pki/ca-trust/source/anchors/cm-local-ca.pem
に抽出し、証明書をトラストチェーンに追加します。 - clean_nodes
- デプロイメントを再実行する前とイントロスペクションの後にハードドライブを消去するかどうかを定義します。
- cleanup
-
一時ファイルをクリーンナップします。デプロイメント時に使用した一時ファイルをコマンド実行後もそのまま残すには、このパラメーターを
False
に設定します。ファイルを残すと、生成されたファイルのデバッグを行う場合やエラーが発生した場合に役に立ちます。 - container_cli
-
コンテナー管理用の CLI ツール。Red Hat Enterprise Linux 8 は
podman
のみをサポートするため、このパラメーターはpodman
に設定したままにしてください。 - container_healthcheck_disabled
-
コンテナー化されたサービスのヘルスチェックを無効にします。このオプションは
false
に設定したままにして、ヘルスチェックを有効な状態に維持することを推奨します。 - container_images_file
コンテナーイメージ情報が含まれる Heat 環境ファイル。このパラメーターは、以下のいずれかに設定します。
- 必要なすべてのコンテナーイメージのパラメーター。
-
必要なイメージの準備を実施する
ContainerImagePrepare
パラメーター。このパラメーターが含まれるファイルの名前は、通常containers-prepare-parameter.yaml
です。
- container_insecure_registries
-
podman
が使用するセキュアではないレジストリーの一覧。プライベートコンテナーレジストリー等の別のソースからイメージをプルする場合には、このパラメーターを使用します。多くの場合、podman
は Red Hat Container Catalog または Satellite サーバー (アンダークラウドが Satellite に登録されている場合) のいずれかからコンテナーイメージをプルするための証明書を持ちます。 - container_registry_mirror
-
設定により
podman
が使用するオプションのregistry-mirror
- custom_env_files
- アンダークラウドのインストールに追加する新たな環境ファイル。
- deployment_user
-
アンダークラウドをインストールするユーザー。現在のデフォルトユーザー (
stack
) を使用する場合には、このパラメーターを未設定のままにします。 - discovery_default_driver
-
自動的に登録されたノードのデフォルトドライバーを設定します。
enable_node_discovery
を有効にし、enabled_hardware_types
ファイルにドライバーを含める必要があります。 - enable_ironic、enable_ironic_inspector、enable_mistral、enable_tempest、enable_validations、enable_zaqar
-
director で有効にするコアサービスを定義します。これらのパラメーターは
true
に設定されたままにします。 - enable_node_discovery
-
introspection ramdisk を PXE ブートする不明なノードを自動的に登録します。新規ノードは、
fake_pxe
ドライバーをデフォルトとして使用しますが、discovery_default_driver
を設定して上書きすることもできます。また、イントロスペクションルールを使用して、新しく登録したノードにドライバーの情報を指定することもできます。 - enable_novajoin
-
アンダークラウドの
novajoin
メタデータサービスをインストールするかどうかを定義します。 - enable_routed_networks
- ルーティングされたコントロールプレーンネットワークのサポートを有効にするかどうかを定義します。
- enable_swift_encryption
- 保存データの Swift 暗号化を有効にするかどうかを定義します。
- enable_telemetry
-
アンダークラウドに OpenStack Telemetry サービス (gnocchi、aodh、panko) をインストールするかどうかを定義します。Telemetry サービスを自動的にインストール/設定するには、
enable_telemetry
パラメーターをtrue
に設定します。デフォルト値はfalse
で、アンダークラウド上の telemetry が無効になります。このパラメーターは、Red Hat CloudForms などのメトリックデータを消費する他の製品を使用している場合に必要です。 - enabled_hardware_types
- アンダークラウドで有効にするハードウェアタイプの一覧。
- generate_service_certificate
-
アンダークラウドのインストール時に SSL/TLS 証明書を生成するかどうかを定義します。これは
undercloud_service_certificate
パラメーターに使用します。アンダークラウドのインストールで、作成された証明書/etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem
を保存します。certificate_generation_ca
パラメーターで定義される CA はこの証明書に署名します。 - heat_container_image
- 使用する heat コンテナーイメージの URL。未設定のままにします。
- heat_native
-
ネイティブの heat テンプレートを使用します。
true
のままにします。 - hieradata_override
-
director に Puppet hieradata を設定するための
hieradata
オーバーライドファイルへのパス。これにより、サービスに対してundercloud.conf
パラメーター以外のカスタム設定を行うことができます。設定すると、アンダークラウドのインストールでこのファイルが/etc/puppet/hieradata
ディレクトリーにコピーされ、階層の最初のファイルに設定されます。この機能の使用 方法についての詳細は、「アンダークラウドへの hieradata の設定 」を参照してください。 - inspection_extras
-
イントロスペクション時に追加のハードウェアコレクションを有効化するかどうかを定義します。このパラメーターを使用するには、イントロスペクションイメージに
python-hardware
またはpython-hardware-detect
パッケージが必要です。 - inspection_interface
-
ノードのイントロスペクションに director が使用するブリッジ。これは、director の設定により作成されるカスタムのブリッジです。
LOCAL_INTERFACE
でこのブリッジをアタッチします。これは、デフォルトのbr-ctlplane
のままにします。 - inspection_runbench
-
ノードイントロスペクション時に一連のベンチマークを実行します。ベンチマークを有効にするには、このパラメーターを
true
に設定します。このオプションは、登録ノードのハードウェアを検査する際にベンチマーク分析を実行する場合に必要です。 - ipa_otp
-
IPA サーバーにアンダークラウドノードを登録するためのワンタイムパスワードを定義します。これは、
enable_novajoin
が有効な場合に必要です。 - ipxe_enabled
-
iPXE か標準の PXE のいずれを使用するか定義します。デフォルトは
true
で iPXE を有効化します。false
に指定すると、標準の PXE に設定されます。 - local_interface
director のプロビジョニング NIC 用に選択するインターフェース。director は、DHCP および PXE ブートサービスにもこのデバイスを使用します。この値を選択したデバイスに変更します。接続されているデバイスを確認するには、
ip addr
コマンドを使用します。ip addr
コマンドの出力結果の例を、以下に示します。2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3462sec preferred_lft 3462sec inet6 fe80::5054:ff:fe75:2409/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ff
この例では、外部 NIC は
eth0
を、プロビジョニング NIC は未設定のeth1
を使用します。今回は、local_interface
をeth1
に設定します。この設定スクリプトにより、このインターフェースがinspection_interface
パラメーターで定義したカスタムのブリッジにアタッチされます。- local_ip
-
director のプロビジョニング NIC 用に定義する IP アドレス。director は、DHCP および PXE ブートサービスにもこの IP アドレスを使用します。環境内の既存の IP アドレスまたはサブネットと競合するなどの理由により、プロビジョニングネットワークに別のサブネットを使用する場合以外は、この値はデフォルトの
192.168.24.1/24
のままにします。 - local_mtu
-
local_interface
に使用する MTU。アンダークラウドでは 1500 以下にします。 - local_subnet
-
PXE ブートと DHCP インターフェースに使用するローカルサブネット。
local_ip
アドレスがこのサブネットに含まれている必要があります。デフォルトはctlplane-subnet
です。 - net_config_override
-
ネットワーク設定のオーバーライドテンプレートへのパス。このパラメーターを設定すると、アンダークラウドは JSON 形式のテンプレートを使用して
os-net-config
でネットワークを設定します。アンダークラウドは、undercloud.conf
に設定されているネットワークパラメーターを無視します。/usr/share/python-tripleoclient/undercloud.conf.sample
の例を参照してください。 - networks_file
-
heat
をオーバーライドするネットワークファイル - output_dir
- 状態、処理された heat テンプレート、および Ansible デプロイメントファイルを出力するディレクトリー
- overcloud_domain_name
オーバークラウドのデプロイ時に使用する DNS ドメイン名。
注記オーバークラウドを設定する際に、
CloudDomain
パラメーターに overcloud_domain_name と同じ値を設定する必要があります。オーバークラウドを設定する際に、環境ファイルでこのパラメーターを設定します。- roles_file
- アンダークラウドのインストール用に上書きを行うロールファイル。director のインストールにデフォルトのロールファイルが使用されるように、未設定のままにすることを強く推奨します。
- scheduler_max_attempts
- スケジューラーがインスタンスのデプロイを試行する最大回数。スケジューリング時に競合状態にならないように、この値を 1 度にデプロイする予定のベアメタルノードの数以上に指定する必要があります。
- service_principal
- この証明書を使用するサービスの Kerberos プリンシパル。FreeIPA など CA で Kerberos プリンシパルが必要な場合に限り、このパラメーターを使用します。
- subnets
-
プロビジョニングおよびイントロスペクション用のルーティングネットワークのサブネットの一覧。詳しくは、「サブネット」を参照してください。デフォルト値に含まれるのは、
ctlplane-subnet
サブネットのみです。 - templates
- 上書きする heat テンプレートファイル
- undercloud_admin_host
-
SSL/TLS 経由の director の管理 API エンドポイントに定義する IP アドレスまたはホスト名。director の設定により、IP アドレスは
/32
ネットマスクを使用するルーティングされた IP アドレスとして director のソフトウェアブリッジに接続されます。 - undercloud_debug
-
アンダークラウドサービスのログレベルを
DEBUG
に設定します。この値はtrue
に設定して有効化します。 - undercloud_enable_selinux
-
デプロイメント時に、SELinux を有効または無効にします。問題をデバッグする場合以外は、この値を
true
に設定したままにすることを強く推奨します。 - undercloud_hostname
- アンダークラウドの完全修飾ホスト名を定義します。設定すると、アンダークラウドのインストールで全システムのホスト名が設定されます。未設定のままにすると、アンダークラウドは現在のホスト名を使用しますが、ユーザーは適切に全システムのホスト名の設定を行う必要があります。
- undercloud_log_file
-
アンダークラウドのインストール/アップグレードログを保管するログファイルへのパス。デフォルトでは、ログファイルはホームディレクトリー内の
install-undercloud.log
です。たとえば、/home/stack/install-undercloud.log
のようになります。 - undercloud_nameservers
- アンダークラウドのホスト名解決に使用する DNS ネームサーバーの一覧
- undercloud_ntp_servers
- アンダークラウドの日付と時刻を同期できるようにする Network Time Protocol サーバーの一覧
- undercloud_public_host
-
SSL/TLS 経由の director のパブリック API エンドポイントに定義する IP アドレスまたはホスト名。director の設定により、IP アドレスは
/32
ネットマスクを使用するルーティングされた IP アドレスとして director のソフトウェアブリッジに接続されます。 - undercloud_service_certificate
- OpenStack SSL/TLS 通信の証明書の場所とファイル名。理想的には、信頼できる認証局から、この証明書を取得します。それ以外の場合は、独自の自己署名の証明書を生成します。
- undercloud_timezone
- アンダークラウド用ホストのタイムゾーン。タイムゾーンを指定しなければ、director は既存のタイムゾーン設定を使用します。
- undercloud_update_packages
- アンダークラウドのインストール時にパッケージを更新するかどうかを定義します。
サブネット
undercloud.conf
ファイルには、各プロビジョニングサブネットの名前が付いたセクションがあります。たとえば、ctlplane-subnet
という名前のサブネットを作成するには、undercloud.conf
ファイルで以下のような設定を使用します。
[ctlplane-subnet] cidr = 192.168.24.0/24 dhcp_start = 192.168.24.5 dhcp_end = 192.168.24.24 inspection_iprange = 192.168.24.100,192.168.24.120 gateway = 192.168.24.1 masquerade = true
プロビジョニングネットワークは、環境に応じて、必要なだけ指定することができます。
- gateway
-
オーバークラウドインスタンスのゲートウェイ。外部ネットワークにトラフィックを転送するアンダークラウドのホストです。director に別の IP アドレスを使用する場合または直接外部ゲートウェイを使用する場合以外は、この値はデフォルト (
192.168.24.1
) のままにします。
director 設定は、適切な sysctl
カーネルパラメーターを使用して IP フォワーディングも自動的に有効化します。
- cidr
-
オーバークラウドインスタンスの管理に director が使用するネットワーク。これは、アンダークラウドの
neutron
サービスが管理するプロビジョニングネットワークです。プロビジョニングネットワークに別のサブネットを使用しない限り、この値はデフォルト (192.168.24.0/24
) のままにします。 - masquerade
-
外部ネットワークへのアクセスのために、
cidr
で定義したネットワークをマスカレードするかどうかを定義します。このパラメーターにより、director 経由で外部ネットワークにアクセスすることができるように、プロビジョニングネットワークにネットワークアドレス変換 (NAT) の一部メカニズムが提供されます。 - dhcp_start、dhcp_end
- オーバークラウドノードの DHCP 割り当て範囲 (開始アドレスと終了アドレス)。ノードを割り当てるのに十分な IP アドレスがこの範囲に含まれるようにします。
- dhcp_exclude
- DHCP 割り当て範囲で除外する IP アドレス
- host_routes
-
このネットワーク上のオーバークラウドインスタンス用の Neutron が管理するサブネットのホストルート。このパラメーターにより、アンダークラウド上の
local_subnet
のホストルートも設定されます。 - inspection_iprange
-
director のイントロスペクションサービスが PXE ブートとプロビジョニングプロセスの際に使用する IP アドレス範囲。値をコンマ区切り、この IP アドレス範囲の開始アドレスおよび終了アドレスを定義します。たとえば、
192.168.24.100,192.168.24.120
のように定義します。この範囲には、使用するノードに十分な数の IP アドレスが含まれるようにし、dhcp_start
とdhcp_end
の範囲とは競合しないように設定してください。
3.7. director のアップグレード
director をアップグレードするには、以下の手順を実施します。
手順
以下のコマンドを実行して、アンダークラウド上の director をアップグレードします。
$ openstack undercloud upgrade
このコマンドにより、director の設定スクリプトが起動します。director によりパッケージがアップグレードされ、
undercloud.conf
の設定に合わせてサービスが設定されます。このスクリプトは、完了までに数分かかります。注記director の設定スクリプトでは、次の設定に進む前に確認が求められます。この確認を省略するには、
-y
オプションを使用します。$ openstack undercloud upgrade -y
このスクリプトにより、アンダークラウド上の OpenStack Platform サービスのコンテナーも、すべて自動的に起動されます。以下のコマンドを使用して、有効化されたコンテナーを確認してください。
[stack@director ~]$ sudo docker ps
スクリプトにより
stack
ユーザーがdocker
グループに追加され、stack
ユーザーがコンテナー管理コマンドを使用できるようになります。以下のコマンドでstack
ユーザーのアクセス権限をリフレッシュします。[stack@director ~]$ exec su -l stack
このコマンドを実行すると、再度ログインが求められます。stack ユーザーのパスワードを入力します。
stack
ユーザーを初期化してコマンドラインツールを使用するには、以下のコマンドを実行します。[stack@director ~]$ source ~/stackrc
プロンプトには、OpenStack コマンドがアンダークラウドに対して認証および実行されることが表示されるようになります。
(undercloud) [stack@director ~]$
director のアップグレードが完了しました。
3.8. オーバークラウドイメージのアップグレード
現在のオーバークラウドイメージを新しいバージョンに置き換える必要があります。新しいイメージにより、director は最新バージョンの OpenStack Platform ソフトウェアを使用してノードのイントロスペクションとプロビジョニングを行うことができるようになります。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
手順
stack
ユーザーのホーム下のimages
ディレクトリー (/home/stack/images
) から既存のイメージを削除します。$ rm -rf ~/images/*
アーカイブを展開します。
$ cd ~/images $ for i in /usr/share/rhosp-director-images/overcloud-full-latest-14.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-14.0.tar; do tar -xvf $i; done $ cd ~
director に最新のイメージをインポートします。
$ openstack overcloud image upload --update-existing --image-path /home/stack/images/
ノードが新しいイメージを使用するように設定します。
$ openstack overcloud node configure $(openstack baremetal node list -c UUID -f value)
新規イメージが存在することを確認します。
$ openstack image list $ ls -l /var/lib/ironic/httpboot/
オーバークラウドノードをデプロイする際には、オーバークラウドイメージのバージョンが、その Heat テンプレートバージョンに対応していることを確認してください。たとえば、OpenStack Platform 14 の Heat テンプレートには、OpenStack Platform 14 のイメージのみを使用してください。
3.9. アンダークラウドアップグレード後の注意事項
-
stack
ユーザーのホームディレクトリーでコアテンプレートのローカルセットを使用している場合には、『オーバークラウドの高度な カスタマイズ』の「カスタムのコア Heat テンプレートの使用」に記載の推奨ワークフローを使用して、テンプレートを更新するようにして ください。オーバークラウドをアップグレードする前に、ローカルコピーを更新する必要があります。
3.10. 次のステップ
アンダークラウドのアップグレードが完了しました。これで、アップグレードに向けてオーバークラウドを準備することができます。
第4章 オーバークラウドのアップグレードの準備
以下の手順では、アップグレードプロセスに向けて、オーバークラウドの準備を行います。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
4.1. Red Hat Subscription Manager (RHSM) コンポーザブルサービス
rhsm
コンポーザブルサービスは、Ansible を介してオーバークラウドノードを登録する方法を提供します。デフォルトの roles_data
ファイルの各ロールには、OS::TripleO::Services::Rhsm
リソースが含まれており、これはデフォルトで無効になっています。サービスを有効にするには、このリソースを rhsm
コンポーザブルサービスのファイルに登録します。
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml
rhsm
コンポーザブルサービスは RhsmVars
パラメーターを受け入れます。これにより、登録に必要な複数のサブパラメーターを定義することができます。以下に例を示します。
parameter_defaults: RhsmVars: rhsm_repos: - rhel-8-for-x86_64-baseos-rpms - rhel-8-for-x86_64-appstream-rpms - rhel-8-for-x86_64-highavailability-rpms - ansible-2.8-for-rhel-8-x86_64-rpms - advanced-virt-for-rhel-8-x86_64-rpms - openstack-15-for-rhel-8-x86_64-rpms - rhceph-4-osd-for-rhel-8-x86_64-rpms - rhceph-4-mon-for-rhel-8-x86_64-rpms - rhceph-4-tools-for-rhel-8-x86_64-rpms - fast-datapath-for-rhel-8-x86_64-rpms rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567"
RhsmVars
パラメーターをロール固有のパラメーター (例: ControllerParameters
) と共に使用することにより、異なるノードタイプ用の特定のリポジトリーを有効化する場合に柔軟性を提供することもできます。
4.2. rhsm コンポーザブルサービスへの切り替え
従来の rhel-registration
メソッドは、bash スクリプトを実行してオーバークラウドの登録を処理します。このメソッド用のスクリプトと環境ファイルは、/usr/share/openstack-tripleo-heat-templates/extraconfig/pre_deploy/rhel-registration/
のコア Heat テンプレートコレクションにあります。
rhel-registration
メソッドを rhsm
コンポーザブルサービスに切り替えるには、以下の手順を実施します。
手順
rhel-registration
環境ファイルは、今後のデプロイメント操作から除外します。通常は、以下のファイルを除外します。-
rhel-registration/environment-rhel-registration.yaml
-
rhel-registration/rhel-registration-resource-registry.yaml
-
カスタムの
roles_data
ファイルを使用する場合には、roles_data
ファイルの各ロールに必ずOS::TripleO::Services::Rhsm
コンポーザブルサービスを含めてください。以下に例を示します。- name: Controller description: | Controller role that has all the controller services loaded and handles Database, Messaging and Network functions. CountDefault: 1 ... ServicesDefault: ... - OS::TripleO::Services::Rhsm ...
-
rhsm
コンポーザブルサービスのパラメーター用の環境ファイルを今後のデプロイメント操作に追加します。
このメソッドは、rhel-registration
パラメーターを rhsm
サービスのパラメーターに置き換えて、サービスを有効化する Heat リソースを変更します。
resource_registry: OS::TripleO::NodeExtraConfig: rhel-registration.yaml
必要に応じて、以下を行ってください。
resource_registry: OS::TripleO::Services::Rhsm: /usr/share/openstack-tripleo-heat-templates/extraconfig/services/rhsm.yaml
デプロイメントに /usr/share/openstack-tripleo-heat-templates/environments/rhsm.yaml
環境ファイルを追加して、サービスを有効にすることもできます。
4.3. rhel-registration から rhsm へのマッピング
rhel-registration | rhsm / RhsmVars |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.4. コンポーザブルサービスの更新
本項では、新しいコンポーザブルサービスおよび非推奨のコンポーザブルサービスについて説明します。
-
デフォルトの
roles_data
ファイルを使用する場合は、これらのサービスが自動的に含まれます。 -
カスタムの
roles_data
ファイルを使用する場合は、該当するロールごとに新しいサービスを追加し非推奨のサービスを削除します。
コントローラーノード
コントローラーノードでは、以下のサービスが非推奨になっています。Controller ロールからこれらのサービスを削除します。
サービス | 理由 |
---|---|
| OpenStack Platform には Ceilometer サービスが含まれなくなりました。 |
| このサービスは、2 つの新規サービスに置き換えられています。
|
コントローラーノードでは、以下が新規サービスです。Controller ロールにこれらのサービスを追加します。
サービス | 理由 |
---|---|
| Block Storage (cinder) の NVMeOF バックエンドを有効にする場合にのみ必要です。 |
| コマンドを実行して、オーバークラウドのサービスに関連するコンテナーイメージを自動的にプルして準備します。 |
| DNS-as-a-Service 用サービス (designate) |
| オーバークラウドのベアメタルイントロスペクション用サービス |
| OpenStack Bare Metal (ironic) 用ネットワークエージェント |
|
|
|
コンテナー化されたオーバークラウドで使用されなくなった |
コンピュートノード
コンピュートノードでは、以下が新規サービスです。Compute ロールにこれらのサービスを追加します。
サービス | 理由 |
---|---|
|
コンピュートノードで |
全ノード
全ノードで、以下が新規サービスです。すべてのロールにこれらのサービスを追加します。
サービス | 理由 |
---|---|
| メトリクスおよびモニタリング用に Qpid Dispatch Router サービスを有効にするサービス |
| Ansible ベースの Red Hat Subscription Management を有効にするサービス |
4.5. 非推奨パラメーター
以下のパラメーターは非推奨となり、ロール固有のパラメーターに置き換えられています。
旧パラメーター | 新規パラメーター |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
お使いのカスタム環境ファイルのこれらのパラメーターを更新してください。
OpenStack Platform 環境で非推奨となったこれらのパラメーターがまだ必要な場合には、デフォルトの roles_data
ファイルで使用することができます。ただし、カスタムの roles_data
ファイルを使用していて、オーバークラウドにそれらの非推奨パラメーターが引き続き必要な場合には、roles_data
ファイルを編集して各ロールに以下の設定を追加することによって、パラメーターへのアクセスを可能にすることができます。
Controller ロール
- name: Controller uses_deprecated_params: True deprecated_param_extraconfig: 'controllerExtraConfig' deprecated_param_flavor: 'OvercloudControlFlavor' deprecated_param_image: 'controllerImage' ...
Compute ロール
- name: Compute uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' ...
Object Storage ロール
- name: ObjectStorage uses_deprecated_params: True deprecated_param_metadata: 'SwiftStorageServerMetadata' deprecated_param_ips: 'SwiftStorageIPs' deprecated_param_image: 'SwiftStorageImage' deprecated_param_flavor: 'OvercloudSwiftStorageFlavor' ...
4.6. 非推奨の CLI オプション
環境ファイルの parameter_defaults
セクションに追加する Heat テンプレートのパラメーターの使用が優先されるため、一部のコマンドラインオプションは古いか非推奨となっています。以下の表では、非推奨となったオプションと、それに相当する Heat テンプレートのオプションをマッピングしています。
オプション | 説明 | Heat テンプレートのパラメーター |
---|---|---|
| スケールアウトするコントローラーノード数 |
|
| スケールアウトするコンピュートノード数 |
|
| スケールアウトする Ceph Storage ノードの数 |
|
| スケールアウトする Cinder ノード数 |
|
| スケールアウトする Swift ノード数 |
|
| コントローラーノードに使用するフレーバー |
|
| コンピュートノードに使用するフレーバー |
|
| Ceph Storage ノードに使用するフレーバー |
|
| Cinder ノードに使用するフレーバー |
|
| Swift Storage ノードに使用するフレーバー |
|
| オーバークラウドの作成プロセスでは、デプロイメントの前に一連のチェックが行われます。このオプションは、デプロイメント前のチェックで何らかの致命的なエラーが発生した場合に終了します。どのようなエラーが発生してもデプロイメントが失敗するので、このオプションを使用することを推奨します。 | パラメーターのマッピングなし |
|
デプロイメント前の検証を完全に無効にします。これらの検証は、デプロイメント前の検証として組み込まれていましたが、 | パラメーターのマッピングなし |
|
| パラメーターのマッピングなし |
| 時刻の同期に使用する NTP サーバーを設定します。 |
|
これらのパラメーターは Red Hat OpenStack Platform から削除されています。CLI オプションを Heat パラメーターに変換し、それを環境ファイルに追加することを推奨します。
4.7. コンポーザブルネットワーク
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 |
|
Ceph Storage OSD |
|
Ceph Storage RadosGW |
|
Cinder API |
|
Compute |
|
Controller |
|
Database |
|
Glance |
|
Heat |
|
Horizon |
|
Ironic | 必要なネットワークはなし。API には、プロビジョニング/コントロールプレーンネットワークを使用。 |
Keystone |
|
Load Balancer |
|
Manila |
|
Message Bus |
|
Networker |
|
Neutron API |
|
Nova |
|
OpenDaylight |
|
Redis |
|
Sahara |
|
Swift API |
|
Swift Storage |
|
Telemetry |
|
以前のバージョンでは、*NetName
パラメーター (例: InternalApiNetName
) によってデフォルトのネットワークの名前が変更されていました。このパラメーターはサポートされなくなりました。カスタムのコンポーザブルネットワークファイルを使用してください。詳しい情報は、『オーバークラウドの 高度なカスタマイズ』 の「カスタムコンポーザブルネットワーク 」を参照してください。
4.8. ネットワークインターフェーステンプレートの更新
OpenStack Platform 15 の新機能により、オーバークラウドの network_data
ファイル内の各ネットワークにルートを指定することができます。この新機能に対応するために、ネットワークインターフェーステンプレートでは、各ネットワークのルート一覧に関するパラメーターが必要になりました。これらのパラメーターには、以下の形式を使用します。
[network-name]InterfaceRoutes
オーバークラウドでルーティングのリストが使用されない場合でも、ネットワークインターフェーステンプレートごとにこれらのパラメーターを追加する必要があります。
- デフォルトの NIC テンプレートセットのいずれかを使用する場合には、これらのパラメーターは自動的に含まれています。
-
カスタムの静的 NIC テンプレートセットを使用している場合には、これらの新しいパラメーターを各ロールのテンプレートの
parameters
に追加します。
Red Hat OpenStack Platform には、不足しているパラメーターをテンプレートファイルに自動的に追加するスクリプトが用意されています。
手順
director のコアテンプレートコレクションに切り替えます。
$ cd /usr/share/openstack-tripleo-heat-templates
tools ディレクトリーの
merge-new-params-nic-config-script.py
python スクリプトを実行します。たとえば、コントローラーノードのカスタム NIC テンプレートを更新するには、以下のオプションを指定してスクリプトを実行します。$ python ./tools/merge-new-params-nic-config-script.py --role-name Controller -t /home/stack/ccsosp-templates/custom-nics/controller.yaml
このスクリプトで使用する以下のオプションに留意してください。
-
--role-name
: テンプレート更新のベースとして使用するロールの名前を定義します。 -
-t、--template
: 更新する NIC テンプレートのファイル名を定義します。 -
-n、--network-data
:network_data
ファイルへの相対パスを定義します。カスタムのnetwork_data
ファイルの場合に、このオプションを使用します。省略した場合には、スクリプトはデフォルトのファイルを使用します。 -
-r、--roles-data
:roles_data.yaml
ファイルへの相対パスを定義します。カスタムのroles_data
ファイルの場合に、このオプションを使用します。省略した場合には、スクリプトはデフォルトのファイルを使用します。
-
スクリプトは元のテンプレートのコピーを保存し、コピーのファイル名にタイムスタンプの拡張子を追加します。元のテンプレートと更新されたテンプレートの違いを比較するには、以下のコマンドを実行します。
$ diff /home/stack/ccsosp-templates/custom-nics/controller.yaml.[TIMESTAMP] /home/stack/ccsosp-templates/custom-nics/controller.yaml
[TIMESTAMP]
を元のファイル名のタイムスタンプに置き換えます。出力に、そのロールの新しいルートパラメーターが表示されます。
StorageMgmtInterfaceRoutes: default: [] description: > Routes for the storage_mgmt network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json TenantInterfaceRoutes: default: [] description: > Routes for the tenant network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json ExternalInterfaceRoutes: default: [] description: > Routes for the external network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json InternalApiInterfaceRoutes: default: [] description: > Routes for the internal_api network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json ManagementInterfaceRoutes: default: [] description: > Routes for the management network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json StorageInterfaceRoutes: default: [] description: > Routes for the storage network traffic. JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. type: json
詳しくは、『オーバークラウドの高度なカスタマイズ』の 「ネットワーク分離」 を参照してください。
4.9. カスタム設定ファイルを使用する Block Storage サービスの準備
コンテナー化された環境にアップグレードする際には、CinderVolumeOptVolumes
パラメーターを使用して docker ボリュームのマウントを追加します。これにより、cinder-volume サービスがコンテナー内で動作している場合には、ホストのカスタム設定ファイルを使用することができます。
以下に例を示します。
parameter_defaults: CinderVolumeOptVolumes: /etc/cinder/nfs_shares1:/etc/cinder/nfs_shares1 /etc/cinder/nfs_shares2:/etc/cinder/nfs_shares2
4.10. 次のステップ
オーバークラウドの準備段階が完了しました。次に「 5章オーバークラウドのアップグレード 」に記載の手順でオーバークラウドを 15 にアップグレードします。
第5章 オーバークラウドのアップグレード
以下の手順では、オーバークラウドをアップグレードします。
前提条件
- アンダークラウドが最新バージョンにアップグレードされていること
- アップグレードでの変更に対応するためのカスタム環境ファイルの準備が完了していること
5.1. アップグレードに関するファイル
オーバークラウドのアップグレードに使用する新規ファイルおよび変更されたファイルの一覧を以下に示します。
ロール
-
カスタムロールを使用する場合は、新規および非推奨のサービスを更新した
roles_data
ファイルを追加します。
ネットワーク
-
分離ネットワークを使用する場合は、
network_data
ファイルを追加します。 - カスタム NIC テンプレートを使用する場合は、新しいバージョンを追加します。
環境ファイル
-
アンダークラウドのアップグレード時に作成された
containers-prepare-parameter.yaml
ファイルを追加します。 -
rhel-registration
環境ファイルを、Ansible ベースの Red Hat Subscription Management サービスを設定する環境ファイルに置き換えます。 - ご自分のオーバークラウド設定に該当するその他すべての環境ファイルを追加します。
5.2. オーバークラウドアップグレード準備タスクの実行
アップグレードを行うには、openstack overcloud upgrade prepare
コマンドを実行する必要があります。このコマンドにより、以下のタスクが実行されます。
- オーバークラウドのプランを OpenStack Platform 15 に更新する
- アップグレードに向けてノードを準備する。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
upgrade prepare コマンドを実行します。
$ openstack overcloud upgrade prepare \ --templates \ -e /home/stack/containers-prepare-parameter.yaml \ -e <ENVIRONMENT FILE>
以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
カスタム設定環境ファイル (
-e
) -
新しいコンテナーイメージの場所を定義した環境ファイル (
containers-prepare-parameter.yaml
) (-e
)。多くの場合、アンダークラウドが使用する環境ファイルと同じファイルです。 -
該当する場合は、
--roles-file
でカスタムロール (roles_data
) ファイルを指定します。 -
該当する場合は、
--networks-file
でコンポーザブルネットワーク (network_data
) ファイルを指定します。 -
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタム設定環境ファイル (
- アップグレードの準備が完了するまで待ちます。
5.3. コンテナーイメージ準備タスクの実行
オーバークラウドには、アップグレードを実行する前に OpenStack Platform 15 のコンテナーイメージが必要です。そのためには、container_image_prepare
外部アップグレードプロセスを実行します。このプロセスを実行するには、container_image_prepare
にタグ付けされたタスクに対して openstack overcloud external-upgrade run
コマンドを実行します。これらのタスクにより以下の操作が実施されます。
- お使いの環境に該当するすべてのコンテナーイメージ設定を自動的に準備する。
- 事前にこのオプションを無効にしていない限り、該当するコンテナーイメージをアンダークラウドにプルする。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
container_image_prepare
にタグ付けされたタスクに対してopenstack overcloud external-upgrade run
コマンドを実行します。$ openstack overcloud external-upgrade run --tags container_image_prepare
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタムのスタック名を使用する場合は、
5.4. コントローラーノードおよびカスタムロールノードのアップグレード
すべてのコントローラーノード、分割されたコントローラーサービス、およびその他のカスタムノードを OpenStack Platform 15 にアップグレードするには、以下のプロセスを使用します。このプロセスでは、--nodes
オプションを指定して openstack overcloud upgrade run
コマンドを実行し、操作を選択したノードだけに制限します。
$ openstack overcloud upgrade run --nodes [ROLE]
[ROLE]
をロール名またはロール名のコンマ区切りリストに置き換えます。
オーバークラウドでモノリシックなコントローラーノードが使用されている場合は、Controller
ロールに対してこのコマンドを実行します。
オーバークラウドで分割されたコントローラーサービスが使用されている場合は、以下のガイドに従ってノードのロールを次の順序でアップグレードします。
-
Pacemaker を使用するすべてのロール。たとえば、
ControllerOpenStack
、Database
、Messaging
、Telemetry
等。 -
Networker
ノード - その他すべてのカスタムロール
以下のノードはまだアップグレード しないでください。
-
コンピュート
ノード -
CephStorage
ノード
これらのノードは後でアップグレードします。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
モノリシックなコントローラーノードを使用している場合は、
Controller
ロールに対してアップグレードコマンドを実行します。$ openstack overcloud upgrade run --nodes Controller
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタムのスタック名を使用する場合は、
複数のロールにわたって分割されたコントローラーサービスを使用している場合の操作は以下のとおりです。
- Pacemaker サービスを使用するロールのアップグレードコマンドを実行します。
$ openstack overcloud upgrade run --nodes ControllerOpenStack $ openstack overcloud upgrade run --nodes Database $ openstack overcloud upgrade run --nodes Messaging $ openstack overcloud upgrade run --nodes Telemetry
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。Networker
ロールのアップグレードコマンドを実行します。$ openstack overcloud upgrade run --nodes Networker
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。Compute
ロールまたはCephStorage
ロールを除く、残りすべてのカスタムロールのアップグレードコマンドを実行します。$ openstack overcloud upgrade run --nodes ObjectStorage
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
5.5. 全コンピュートノードのアップグレード
このプロセスでは、残りのコンピュートノードをすべて OpenStack Platform 15 にアップグレードします。このプロセスでは、--nodes Compute
オプションを指定して openstack overcloud upgrade run
コマンドを実行し、操作をコンピュートノードだけに制限します。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --nodes Compute
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタムのスタック名を使用する場合は、
- コンピュートノードのアップグレードが完了するまで待ちます。
5.6. 全 Ceph Storage ノードのアップグレード
このプロセスでは、Ceph Storage ノードをアップグレードします。このプロセスでは、以下の操作を行います。
-
--nodes CephStorage
オプションを指定してopenstack overcloud upgrade run
コマンドを実行し、操作を Ceph Storage ノードに制限する。 -
openstack overcloud ceph-upgrade run
コマンドを実行し、コンテナー化された Red Hat Ceph Storage 3 クラスターへのアップグレードを実施する
手順
stackrc
ファイルを取得します。$ source ~/stackrc
アップグレードのコマンドを実行します。
$ openstack overcloud upgrade run --nodes CephStorage
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタムのスタック名を使用する場合は、
- ノードのアップグレードが完了するまで待ちます。
Ceph Storage の外部アップグレードプロセスを実行します。以下に例を示します。
$ openstack overcloud external-upgrade run --tags ceph
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。 - 追加のオーバーライドを渡すには、「アップグレード用のカスタムパラメーター」 を参照してください。
-
カスタムのスタック名を使用する場合は、
- Ceph Storage ノードのアップグレードが完了するまで待ちます。
5.6.1. アップグレード用のカスタムパラメーター
Ceph をコンテナーに移行する場合、それぞれの Ceph monitor および OSD は順次停止します。停止したものと同じサービスが正常に再開されるまで、移行は続行されません。Ansible は 15 秒間待って (待機) サービスの開始を確認する行為を 5 回繰り返します (リトライ)。サービスが再開されない場合には、移行は停止しオペレーターは手動操作を行う必要があります。
Ceph クラスターのサイズによっては、リトライまたは待機の値を増加しなければならない場合があります。これらのパラメーターの正確な名前およびそのデフォルト値は以下のとおりです。
health_mon_check_retries: 5 health_mon_check_delay: 15 health_osd_check_retries: 5 health_osd_check_delay: 15
デフォルト値を変更し、クラスターの確認を 40 秒間隔で 30 回行う場合、openstack overcloud deploy
コマンドの実行時に -e
を使用して、以下のパラメーターを yaml ファイルで渡します。
parameter_defaults: CephAnsibleExtraConfig: health_osd_check_delay: 40 health_osd_check_retries: 30
5.7. データベースのオンラインアップグレードの実施
一部のオーバークラウドコンポーネントでは、データベーステーブルのオンラインアップグレード (または移行) が必要です。そのためには、online_upgrade
外部アップグレードプロセスを実行します。このプロセスを実行するには、online_upgrade
にタグ付けされたタスクに対して openstack overcloud external-upgrade run
コマンドを実行します。これにより、以下のコンポーネントに対してデータベースのオンラインアップグレードが実行されます。
- OpenStack Block Storage (cinder)
- OpenStack Compute (nova)
- オーバークラウドで有効化されている場合には OpenStack Bare Metal (ironic)
手順
stackrc
ファイルを取得します。$ source ~/stackrc
online_upgrade
にタグ付けされたタスクに対してopenstack overcloud external-upgrade run
コマンドを実行します。$ openstack overcloud external-upgrade run --tags online_upgrade
-
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。
-
カスタムのスタック名を使用する場合は、
5.8. アップグレードの最終処理
アップグレードには、オーバークラウドスタックを更新する最終ステップが必要です。これにより、スタックのリソース構造が OpenStack Platform 15 の標準のデプロイメントと一致し、今後、通常の openstack overcloud deploy
の機能を実行できるようになります。
手順
stackrc
ファイルを取得します。$ source ~/stackrc
アップグレードの最終処理コマンドを実行します。
$ openstack overcloud upgrade converge \ --templates \ -e <ENVIRONMENT FILE>
以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
カスタム設定環境ファイル (
-e
) -
カスタムのスタック名を使用する場合は、
--stack
オプションでその名前を渡します。 -
該当する場合は、
--roles-file
でカスタムロール (roles_data
) ファイルを指定します。 -
該当する場合は、
--networks-file
でコンポーザブルネットワーク (network_data
) ファイルを指定します。
-
カスタム設定環境ファイル (
- アップグレードの最終処理が完了するまで待ちます。