7.2. ロール
7.2.1. roles_data ファイルの検証
オーバークラウドの作成プロセスでは、roles_data
ファイルを使用して、そのオーバークラウドのロールを定義します。roles_data
ファイルには、YAML 形式のロール一覧が含まれます。roles_data
構文の短い例を以下に示します。
- name: Controller description: | Controller role that has all the controler services loaded and handles Database, Messaging and Network functions. ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient ... - name: Compute description: | Basic Compute Node role ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient ...
コア 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
7.2.2. roles_data ファイルの作成
カスタムの roles_data
ファイルは、手動で作成することができますが、個別のロールテンプレートを使用して自動生成することも可能です。director は、ロールテンプレートの管理とカスタムの roles_data
ファイルの自動生成を行うためのコマンドをいくつか提供しています。
デフォルトロールのテンプレートを一覧表示するには、openstack overcloud role list
コマンドを使用します。
$ openstack overcloud role list BlockStorage CephStorage Compute ComputeHCI ComputeOvsDpdk Controller ...
ロールの YAML 定義を確認するには、openstack overcloud role show
コマンドを使用します。
$ 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
-o
は、作成するファイルの名前を定義します。
これにより、カスタムの roles_data
ファイルが作成されます。ただし、上記の例では、Controller
と Networker
ロールを使用しており、その両方に同じネットワークエージェントが含まれています。これは、ネットワークサービスが Controller
から Networker
ロールにスケーリングされることを意味します。オーバークラウドは、Controller
ノードと Networker
ノードの間で、ネットワークサービスの負荷のバランスを取ります。
この Networker
ロールをスタンドアロンにするには、独自のカスタム Controller
ロールと、その他の必要なロールを作成することができます。これにより、独自のカスタムロールから roles_data
ファイルを生成できるようになります。
このディレクトリーを、コア Heat テンプレートコレクションから stack
ユーザーのホームディレクトリーにコピーします。
$ 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
このコマンドにより、~/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
タグの両方で、プライマリーロールを定義します。- name: Controller ... tags: - primary - controller ...
プライマリーロールをタグ付けしない場合には、最初に定義されたロールがプライマリーロールになります。このロールが Controller ロールとなるようにしてください。
- networks
ロール上で設定するネットワークの YAML リスト
networks: - External - InternalApi - Storage - StorageMgmt - Tenant
デフォルトのネットワークには、
External
、InternalApi
、Storage
、StorageMgmt
、Tenant
、Management
が含まれます。- CountDefault
- (任意) このロールにデプロイするデフォルトのノード数を定義します。
- HostnameFormatDefault
(任意) このロールに対するホスト名のデフォルトの形式を定義します。デフォルトの命名規則では、以下の形式が使用されます。
[STACK NAME]-[ROLE NAME]-[NODE ID]
たとえば、コントローラーノード名はデフォルトで以下のように命名されます。
overcloud-controller-0 overcloud-controller-1 overcloud-controller-2 ...
- 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 テンプレートの各ロールのリソースの定義は、以下のスニペットのようになります。
{{role.name}}: type: OS::Heat::ResourceGroup depends_on: Networks properties: count: {get_param: {{role.name}}Count} removal_policies: {get_param: {{role.name}}RemovalPolicies} resource_def: type: OS::TripleO::{{role.name}} properties: CloudDomain: {get_param: CloudDomain} ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]} EndpointMap: {get_attr: [EndpointMap, endpoint_map]} ...
このスニペットには、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 ~/.
~/roles/Horizon.yaml
という名前の新規ファイルを作成して、ベースおよびコアの OpenStack Dashboard サービスが含まれた Horizon
ロールを新規作成します。以下に例を示します。
- name: Horizon CountDefault: 1 HostnameFormatDefault: '%stackname%-horizon-%index%' ServicesDefault: - OS::TripleO::Services::CACerts - OS::TripleO::Services::Kernel - OS::TripleO::Services::Ntp - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Fluentd - OS::TripleO::Services::AuditD - OS::TripleO::Services::Collectd - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Apache - OS::TripleO::Services::Horizon
また、CountDefault
を 1
に設定して、デフォルトのオーバークラウドには常に Horizon
ノードが含まれるようにした方がよいでしょう。
既存のオーバークラウド内でサービスをスケーリングする場合には、既存のサービスを Controller
ロール上に保持します。新規オーバークラウドを作成して、OpenStack Dashboard がスタンドアロンのロールに残るようにするには、Controller
ロールの定義から OpenStack Dashboard コンポーネントを削除します。
- name: Controller CountDefault: 1 ServicesDefault: ... - OS::TripleO::Services::GnocchiMetricd - OS::TripleO::Services::GnocchiStatsd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::HeatApi - OS::TripleO::Services::HeatApiCfn - OS::TripleO::Services::HeatApiCloudwatch - OS::TripleO::Services::HeatEngine # - OS::TripleO::Services::Horizon # Remove this service - OS::TripleO::Services::IronicApi - OS::TripleO::Services::IronicConductor - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Keepalived ...
roles
ディレクトリーをソースに使用して、新しい roles_data
ファイルを生成します。
$ 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 baremetal node set --property capabilities='profile:horizon,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
以下の環境ファイルのスニペットを使用して、Horizon ノードの数とフレーバーを定義します。
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
デプロイメントが完了すると、コントローラーノードが 1 台、コンピュートノードが 1 台、ネットワーカーノードが 1 台の 3 ノード設定のオーバークラウドが作成されます。オーバークラウドのノード一覧を表示するには、以下のコマンドを実行します。
$ openstack server list