第6章 コンポーザブルサービス
Red Hat OpenStack Platform には、ロール上のカスタムロールとコンポーザブルサービスの組み合わせを定義する機能が実装されました(『オーバークラウドの 高度なカスタマイズ』 の「 コンポーザブルサービスと カスタムロール」を参照)。統合の一環として、独自のカスタムサービスを定義して、選択したロールに追加することができます。本セクションでは、コンポーザブルサービスアーキテクチャーを考察し、カスタムサービスをコンポーザブルサービスアーキテクチャーに統合する方法の例を記載します。
6.1. コンポーザブルサービスアーキテクチャーの考察
コア Heat テンプレートコレクションには、コンポーザブルサービスのテンプレートセットが 2 つ含まれています。
-
deployment
には、主要な OpenStack Platform サービスのテンプレートが含まれます。 -
puppet/services
には、コンポーザブルサービスを設定するためのレガシーテンプレートが含まれます。互換性を維持するために、一部のコンポーザブルサービスは、このディレクトリーからのテンプレートを使用する場合があります。多くの場合、コンポーザブルサービスはdeployment
ディレクトリーのテンプレートを使用します。
各テンプレートには目的を特定する記述が含まれています。たとえば、deployment/time/ntp-baremetal-puppet.yaml
サービステンプレートには以下のような記述が含まれます。
description: > NTP service deployment using puppet, this YAML file creates the interface between the HOT template and the puppet manifest that actually installs and configure NTP.
これらのサービステンプレートは、Red Hat OpenStack Platform デプロイメント固有のリソースとして登録されます。これは、overcloud-resource-registry-puppet.j2.yaml
ファイルで定義されている一意な Heat リソース名前空間を使用して、各リソースを呼び出すことができることを意味します。サービスはすべて、リソース種別に OS::TripleO::Services
名前空間を使用します。
一部のリソースは、直接コンポーザブルサービスのベーステンプレートを使用します。以下に例を示します。
resource_registry: ... OS::TripleO::Services::Ntp: deployment/time/ntp-baremetal-puppet.yaml ...
ただし、コアサービスにはコンテナーが必要なので、コンテナー化されたサービステンプレートを使用します。たとえば、コンテナー化された keystone
サービスでは、以下のリソースを使用します。
resource_registry: ... OS::TripleO::Services::Keystone: deployment/keystone/keystone-container-puppet.yaml ...
通常、これらのコンテナー化されたテンプレートは、依存関係を追加するために他のテンプレートを参照します。たとえば、deployment/keystone/keystone-container-puppet.yaml
テンプレートは、ContainersCommon
リソースにベーステンプレートの出力を保管します。
resources: ContainersCommon: type: ../containers-common.yaml
これにより、コンテナー化されたテンプレートは、containers-common.yaml
テンプレートからの機能やデータを取り込むことができます。
overcloud.j2.yaml
Heat テンプレートには、roles_data.yaml
ファイル内の各カスタムロールのサービス一覧を定義するための Jinja2-based コードのセクションが含まれています。
{{role.name}}Services: description: A list of service resources (configured in the Heat resource_registry) which represent nested stacks for each service that should get installed on the {{role.name}} role. type: comma_delimited_list default: {{role.ServicesDefault|default([])}}
デフォルトのロールの場合は、これにより次のサービス一覧パラメーターが作成されます: ControllerServices
、ComputeServices
、BlockStorageServices
、ObjectStorageServices
、CephStorageServices
roles_data.yaml
ファイル内の各カスタムロールのデフォルトのサービスを定義します。たとえば、デフォルトの Controller ロールには、以下の内容が含まれます。
- name: Controller CountDefault: 1 ServicesDefault: - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephRgw - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - OS::TripleO::Services::Core - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GlanceRegistry ...
これらのサービスは、次に ControllerServices
パラメーターのデフォルト一覧として定義されます。
環境ファイルを使用してサービスパラメーターのデフォルト一覧を上書きすることもできます。たとえば、環境ファイルで ControllerServices
を parameter_default
として定義して、roles_data.yaml
ファイルからのサービス一覧を上書きすることができます。