7.2. ロール
7.2.1. roles_data ファイルの検証
					オーバークラウドの作成プロセスでは、roles_data ファイルを使用して、そのオーバークラウドのロールを定義します。roles_data ファイルには、YAML 形式のロール一覧が含まれます。roles_data 構文の短い例を以下に示します。
				
					コア Heat テンプレートコレクションには、デフォルトの roles_data ファイルが /usr/share/openstack-tripleo-heat-templates/roles_data.yaml に含まれています。デフォルトのファイルは、以下のロール種別を定義します。
				
- 
							Controller
- 
							Compute
- 
							BlockStorage
- 
							ObjectStorage
- 
							CephStorage
					openstack overcloud deploy コマンドにより、デプロイ中にこのファイルが追加されます。このファイルは、-r 引数を使用して、カスタムの roles_data ファイルで上書きすることができます。以下に例を示します。
				
openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml
$ openstack overcloud deploy --templates -r ~/templates/roles_data-custom.yaml7.2.2. roles_data ファイルの作成
					カスタムの roles_data ファイルは、手動で作成することができますが、個別のロールテンプレートを使用して自動生成することも可能です。director は、ロールテンプレートの管理とカスタムの roles_data ファイルの自動生成を行うためのコマンドをいくつか提供しています。
				
					デフォルトロールのテンプレートを一覧表示するには、openstack overcloud role list コマンドを使用します。
				
					ロールの YAML 定義を確認するには、openstack overcloud role show コマンドを使用します。
				
openstack overcloud role show Compute
$ openstack overcloud role show Compute
					カスタムの roles_data ファイルを生成するには、openstack overcloud roles generate コマンドを使用して、複数の事前定義済みロールを単一のロールに統合します。たとえば、以下のコマンドは、Controller、Compute、Networker のロールを単一のファイルに統合します。
				
openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker
$ openstack overcloud roles generate -o ~/roles_data.yaml Controller Compute Networker
					-o は、作成するファイルの名前を定義します。
				
					これにより、カスタムの roles_data ファイルが作成されます。ただし、上記の例では、Controller と Networker ロールを使用しており、その両方に同じネットワークエージェントが含まれています。これは、ネットワークサービスが Controller から Networker ロールにスケーリングされることを意味します。オーバークラウドは、Controller ノードと Networker ノードの間で、ネットワークサービスの負荷のバランスを取ります。
				
					この Networker ロールをスタンドアロンにするには、独自のカスタム Controller ロールと、その他の必要なロールを作成することができます。これにより、独自のカスタムロールから roles_data ファイルを生成できるようになります。
				
					このディレクトリーを、コア Heat テンプレートコレクションから stack ユーザーのホームディレクトリーにコピーします。
				
cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
					このディレクトリー内でカスタムロールファイルを追加または変更します。このディレクトリーをカスタムロールのソースとして使用するには、前述したロールのサブコマンドに --roles-path オプションを指定します。以下に例を示します。
				
openstack overcloud roles generate -o my_roles_data.yaml \ --roles-path ~/roles \ Controller Compute Networker
$ openstack overcloud roles generate -o my_roles_data.yaml \
  --roles-path ~/roles \
  Controller Compute Networker
					このコマンドにより、~/roles ディレクトリー内の個々のロールから、単一の my_roles_data.yaml ファイルが生成されます。
				
						デフォルトのロールコレクションには、ControllerOpenStack ロールも含まれます。このロールには、Networker、Messaging、および Database ロールのサービスは含まれません。ControllerOpenStack は、スタンドアロンの Networker、Messaging、Database ロールと組み合わせて使用することができます。
					
7.2.3. サポートされるカスタムロール
					以下の表で、/usr/share/openstack-tripleo-heat-templates/roles で利用可能なすべてのサポート対象ロールについて説明します。
				
| ロール | 説明 | ファイル | 
|---|---|---|
| 
									 | OpenStack Block Storage (cinder) ノード | 
									 | 
| 
									 | 完全なスタンドアロンの Ceph Storage ノード。OSD、MON、Object Gateway (RGW)、Object Operations (MDS)、Manager (MGR)、および RBD Mirroring が含まれます。 | 
									 | 
| 
									 | スタンドアロンのスケールアウト Ceph Storage ファイルロール。OSD および Object Operations (MDS) が含まれます。 | 
									 | 
| 
									 | スタンドアロンのスケールアウト Ceph Storage オブジェクトロール。OSD および Object Gateway (RGW) が含まれます。 | 
									 | 
| 
									 | Ceph Storage OSD ノードロール | 
									 | 
| 
									 | 代替のコンピュートノードロール | 
									 | 
| 
									 | DVR 対応のコンピュートノードロール | 
									 | 
| 
									 | ハイパーコンバージドインフラストラクチャーを持つコンピュートノード。Compute および Ceph OSD サービスが含まれます。 | 
									 | 
| 
									 | 
									コンピュートインスタンス HA ノードロール。 | 
									 | 
| 
									 | Cavium Liquidio Smart NIC を持つコンピュートノード | 
									 | 
| 
									 | コンピュート OVS DPDK RealTime ロール | 
									 | 
| 
									 | コンピュート OVS DPDK ロール | 
									 | 
| 
									 | ppc64le サーバー用 Compute ロール | 
									 | 
| 
									 | 
									リアルタイムのパフォーマンスに最適化された Compute ロール。このロールを使用する場合には、 | 
									 | 
| 
									 | コンピュート SR-IOV RealTime ロール | 
									 | 
| 
									 | コンピュート SR-IOV ロール | 
									 | 
| 
									 | 標準のコンピュートノードロール | 
									 | 
| 
									 | 
									データベース、メッセージング、ネットワーク設定、および OpenStack Compute (nova) コントロールコンポーネントを持たない Controller ロール。 | 
									 | 
| 
									 | コア Controller サービスは組み込まれているが Ceph Storage (MON) コンポーネントを持たない Controller ロール。このロールはデータベース、メッセージング、およびネットワーク機能を処理しますが、Ceph Storage 機能は処理しません。 | 
									 | 
| 
									 | 
									OpenStack Compute (nova) コントロールコンポーネントが含まれない Controller ロール。 | 
									 | 
| 
									 | 
									データベース、メッセージング、およびネットワーク設定コンポーネントが含まれない Controller ロール。 | 
									 | 
| 
									 | すべてのコアサービスが組み込まれ、Ceph NFS を使用する Controller ロール。このロールはデータベース、メッセージング、およびネットワーク機能を処理します。 | 
									 | 
| 
									 | すべてのコアサービスが組み込まれた Controller ロール。このロールはデータベース、メッセージング、およびネットワーク機能を処理します。 | 
									 | 
| 
									 | スタンドアロンのデータベー出力ル。Pacemaker を使用して Galera クラスターとして管理されるデータベース。 | 
									 | 
| 
									 | ハイパーコンバージドインフラストラクチャーおよびすべての Ceph Storage サービスを持つコンピュートノード。OSD、MON、Object Gateway (RGW)、Object Operations (MDS)、Manager (MGR)、および RBD Mirroring が含まれます。 | 
									 | 
| 
									 | ハイパーコンバージドインフラストラクチャーおよび Ceph Storage ファイルサービスを持つコンピュートノード。OSD および Object Operations (MDS) が含まれます。 | 
									 | 
| 
									 | ハイパーコンバージドインフラストラクチャーおよび Ceph Storage ブロックサービスを持つコンピュートノード。OSD、MON、および Manager が含まれます。 | 
									 | 
| 
									 | ハイパーコンバージドインフラストラクチャーおよび Ceph Storage オブジェクトサービスを持つコンピュートノード。OSD および Object Gateway (RGW) が含まれます。 | 
									 | 
| 
									 | Ironic Conductor ノードロール | 
									 | 
| 
									 | スタンドアロンのメッセージングロール。Pacemaker を使用して管理される RabbitMQ。 | 
									 | 
| 
									 | スタンドアロンのネットワーク設定ロール。単独で OpenStack Networking (neutron) エージェントを実行します。デプロイメントで ML2/OVN メカニズムドライバーが使用される場合は、Deploying a Custom Role with ML2/OVN に記載の追加ステップを参照してください。 | 
									 | 
| 
									 | 
									スタンドアロンの  | 
									 | 
| 
									 | Swift オブジェクトストレージノードロール | 
									 | 
| 
									 | すべてのメトリックおよびアラームサービスを持つ Telemetry ロール | 
									 | 
7.2.4. ロールパラメーターの考察
各ロールは、以下のパラメーターを使用します。
- name
- 
								(必須) 空白または特殊文字を含まないプレーンテキスト形式のロール名。選択した名前により、他のリソースとの競合が発生しないことを確認します。たとえば、Networkの代わりにNetworkerを名前に使用します。
- description
- (オプション) プレーンテキスト形式のロールの説明
- tags
- (オプション) ロールのプロパティーを定義するタグの YAML リスト。このパラメーターを使用して - controllerと- primaryタグの両方で、プライマリーロールを定義します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
プライマリーロールをタグ付けしない場合には、最初に定義されたロールがプライマリーロールになります。このロールが Controller ロールとなるようにしてください。
- networks
- ロール上で設定するネットワークの YAML リスト - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - デフォルトのネットワークには、 - External、- InternalApi、- Storage、- StorageMgmt、- Tenant、- Managementが含まれます。
- CountDefault
- (任意) このロールにデプロイするデフォルトのノード数を定義します。
- HostnameFormatDefault
- (任意) このロールに対するホスト名のデフォルトの形式を定義します。デフォルトの命名規則では、以下の形式が使用されます。 - [STACK NAME]-[ROLE NAME]-[NODE ID] - [STACK NAME]-[ROLE NAME]-[NODE ID]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - たとえば、コントローラーノード名はデフォルトで以下のように命名されます。 - overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ... - overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- disable_constraints
- (任意) director のデプロイ時に OpenStack Compute (nova) および OpenStack Image Storage (glance) の制約を無効にするかどうかを定義します。事前プロビジョニング済みのノードでオーバークラウドをデプロイする場合に使用します。詳しくは、director のインストールと使用方法の 事前にプロビジョニングされたノードを使用した基本的なオーバークラウドの設定 を参照してください。
- disable_upgrade_deployment
- (任意) 特定のロールのアップグレードを無効にするかどうかを定義します。これにより、1 つのロールのノードを個別にアップグレードしてサービスの可用性を確保する方法が提供されます。たとえば、Compute と Swift Storage のロールにこのパラメーターを使用します。
- update_serial
- (任意) OpenStack の更新オプション時に同時に更新するノードの数を定義します。 - roles_data.yamlファイルのデフォルト設定は以下のとおりです。- 
										コントローラー、オブジェクトストレージ、および Ceph Storage ノードのデフォルトは 1です。
- 
										コンピュートおよびブロックストレージノードのデフォルトは 25です。
 - このパラメーターをカスタムロールから省いた場合のデフォルトは - 1です。
- 
										コントローラー、オブジェクトストレージ、および Ceph Storage ノードのデフォルトは 
- ServicesDefault
- (任意) ノード上で追加するデフォルトのサービス一覧を定義します。詳しくは、「コンポーザブルサービスアーキテクチャーの考察」を参照してください。
これらのパラメーターは、新規ロールの作成方法を指定するのに加えて、追加するサービスを定義します。
					openstack overcloud deploy コマンドは、roles_data ファイルのパラメーターをいくつかの Jinja2 ベースのテンプレートに統合します。たとえば、特定の時点で overcloud.j2.yaml Heat テンプレートは roles_data.yaml のロールの一覧を繰り返し適用し、対応する各ロール固有のパラメーターとリソースを作成します。
				
					overcloud.j2.yaml Heat テンプレートの各ロールのリソースの定義は、以下のスニペットのようになります。
				
					このスニペットには、Jinja2 ベースのテンプレートが {{role.name}} の変数を組み込み、各ロール名を OS::Heat::ResourceGroup リソースとして定義しているのが示されています。これは、次に roles_data ファイルのそれぞれの name パラメーターを使用して、対応する各 OS::Heat::ResourceGroup リソースを命名します。
				
7.2.5. 新規ロールの作成
					以下の例は、OpenStack Dashboard (horizon) のみをホストする新しい Horizon ロールを作成することを目的としています。このような場合には、新規ロールの情報が含まれるカスタムの roles ディレクトリーを作成します。
				
					デフォルトの roles ディレクトリーのカスタムコピーを作成します。
				
cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
$ cp -r /usr/share/openstack-tripleo-heat-templates/roles ~/.
					~/roles/Horizon.yaml という名前の新規ファイルを作成して、ベースおよびコアの OpenStack Dashboard サービスが含まれた Horizon ロールを新規作成します。以下に例を示します。
				
					また、CountDefault を 1 に設定して、デフォルトのオーバークラウドには常に Horizon ノードが含まれるようにした方がよいでしょう。
				
					既存のオーバークラウド内でサービスをスケーリングする場合には、既存のサービスを Controller ロール上に保持します。新規オーバークラウドを作成して、OpenStack Dashboard がスタンドアロンのロールに残るようにするには、Controller ロールの定義から OpenStack Dashboard コンポーネントを削除します。
				
					roles ディレクトリーをソースに使用して、新しい roles_data ファイルを生成します。
				
openstack overcloud roles generate -o roles_data-horizon.yaml \ --roles-path ~/roles \ Controller Compute Horizon
$ openstack overcloud roles generate -o roles_data-horizon.yaml \
  --roles-path ~/roles \
  Controller Compute Horizon
					このロールに新しいフレーバーを定義して、特定のノードをタグ付けできるようにする必要がある場合があります。この例では、以下のコマンドを使用して horizon フレーバーを作成します。
				
openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 horizon openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="horizon" horizon openstack flavor set --property resources:VCPU=0 --property resources:MEMORY_MB=0 --property resources:DISK_GB=0 --property resources:CUSTOM_BAREMETAL=1 horizon
$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 horizon
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="horizon" horizon
$ openstack flavor set --property resources:VCPU=0 --property resources:MEMORY_MB=0 --property resources:DISK_GB=0 --property resources:CUSTOM_BAREMETAL=1 horizon以下のコマンドを実行して、ノードを新規フレーバーにタグ付けします。
openstack baremetal node set --property capabilities='profile:horizon,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
$ openstack baremetal node set --property capabilities='profile:horizon,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13以下の環境ファイルのスニペットを使用して、Horizon ノードの数とフレーバーを定義します。
parameter_defaults: OvercloudHorizonFlavor: horizon HorizonCount: 1
parameter_defaults:
  OvercloudHorizonFlavor: horizon
  HorizonCount: 1
					openstack overcloud deploy コマンドの実行時には、新しい roles_data ファイルと環境ファイルを指定します。以下に例を示します。
				
openstack overcloud deploy --templates -r ~/templates/roles_data-horizon.yaml -e ~/templates/node-count-flavor.yaml
$ openstack overcloud deploy --templates -r ~/templates/roles_data-horizon.yaml -e ~/templates/node-count-flavor.yamlデプロイメントが完了すると、コントローラーノードが 1 台、コンピュートノードが 1 台、ネットワーカーノードが 1 台の 3 ノード設定のオーバークラウドが作成されます。オーバークラウドのノード一覧を表示するには、以下のコマンドを実行します。
openstack server list
$ openstack server list