第6章 コンポーザブルサービス


Red Hat OpenStack Platform には、カスタムのロールとロール上のコンポーザブルサービスの組み合わせを定義する機能が実装されました (『オーバークラウドの高度なカスタマイズ』「コンポーザブルサービスとカスタムロール」を参照)。統合の一環として、独自のカスタムサービスを定義して、選択したロールに追加することができます。本項では、コンポーザブルサービスアーキテクチャーを考察し、カスタムサービスをコンポーザブルサービスアーキテクチャーに統合する方法の例を記載します。

6.1. コンポーザブルサービスアーキテクチャーの考察

コア Heat テンプレートコレクションには、puppet/services サブディレクトリー内のコンポーザブルサービステンプレートのコレクションが含まれます。これらのサービスは、以下のコマンドで表示することができます。

$ ls /usr/share/openstack-tripleo-heat-templates/puppet/services
Copy to Clipboard Toggle word wrap

各サービステンプレートには目的を特定する記述が含まれています。たとえば、keystone.yaml サービステンプレートには以下のような記述が含まれます。

description: >
 OpenStack Identity (`keystone`) service configured with Puppet
Copy to Clipboard Toggle word wrap

これらのサービステンプレートは、Red Hat OpenStack Platform デプロイメント固有のリソースとして登録されます。これは、overcloud-resource-registry-puppet.j2.yaml ファイルで定義されている一意な Heat リソース名前空間を使用して各リソースを呼び出すことができることを意味します。サービスはすべて、リソース種別に OS::TripleO::Services 名前空間を使用します。たとえば、keystone.yaml サービステンプレートは OS::TripleO::Services::Keystone リソース種別に登録されます。

grep "OS::TripleO::Services::Keystone" /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.j2.yaml
  OS::TripleO::Services::Keystone: puppet/services/keystone.yaml
Copy to Clipboard Toggle word wrap

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([])}}
Copy to Clipboard Toggle word wrap

デフォルトのロールの場合は、これにより次のサービス一覧パラメーターが作成されます: ControllerServicesComputeServicesBlockStorageServicesObjectStorageServicesCephStorageServices

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
...
Copy to Clipboard Toggle word wrap

これらのサービスは、次に ControllerServices パラメーターのデフォルト一覧として定義されます。

環境ファイルを使用してサービスパラメーターのデフォルト一覧を上書きすることもできます。たとえば、環境ファイルで ControllerServicesparameter_default として定義して、roles_data.yaml ファイルからのサービス一覧を上書きすることができます。

6.2. ユーザー定義のコンポーザブルサービスの作成

本項では、ユーザー定義のコンポーザブルサービスの作成方法を考察し、その日のメッセージ (motd: message of the day) サービスの実装に重点を置いて説明します。以下の例は、設定フックを使用するか、「3章オーバークラウドイメージ」の手順に従ってオーバークラウドイメージを編集して、そのイメージにカスタムの motd Puppet モジュールが読み込まれていることを前提とします。

独自のサービスを作成する場合には、そのサービスの Heat テンプレートで定義すべき特定の項目があります。

parameters

以下のパラメーターは、サービステンプレートに追加する必要のある必須パラメーターです。

  • ServiceNetMap: サービスからネットワークへのマッピング。この値は、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}) を default 値として使用します。
  • DefaultPasswords: デフォルトパスワードの一覧。この値は、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}) を default 値として使用します。
  • EndpointMap: OpenStack サービスエンドポイントからプロトコルへのマッピングの一覧。この値は、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}) を default 値として使用します。

作成するサービスの必要に応じて、追加のパラメーターを定義してください。

outputs

以下の出力パラメーターは、ホスト上でサービスの設定を定義します。

  • config_settings: 作成するサービス用のカスタム hieradata 設定
  • service_config_settings: 別のサービス用のカスタム hieradata 設定。たとえば、作成するサービスには、OpenStack Identity (keystone) に登録済みのエンドポイントが必要な場合があります。この設定により、1 つのサービスから別のサービスにパラメーターが提供され、サービスが異なるロール上にある場合でも、複数のサービスにまたがった設定を指定することができます。
  • global_config_settings: 全ロールに配布されるカスタムの hieradata 設定
  • step_config: サービスを設定するための Puppet スニペット。このスニペットは、サービス設定プロセスの各ステップで作成/実行される、統合されたマニフェストに追加されます。ステップは以下のとおりです。

    • ステップ 1: ロードバランサーの設定
    • ステップ 2: 高可用性および一般のコアサービス (データベース、RabbitMQ、NTP) の設定
    • ステップ 3: Openstack Platform サービスの初期設定 (ストレージ、リングの構築)
    • ステップ 4: 一般的な OpenStack Platform サービスの設定
    • ステップ 5: サービスのアクティブ化 (Pacemaker) および OpenStack Identity (keystone) のロールとユーザーの作成

参照される Puppet マニフェストでは、step hieradata を使用して (hiera('step') を使用)、デプロイメントプロセスの特定のステップに特定のアクションを定義することができます。

以下は、motd サービス用の Heat テンプレート (service.yaml) の一例です。

heat_template_version: 2016-04-08

description: >
  Message of the day service configured with Puppet

parameters:
  ServiceNetMap:
    default: {}
    type: json
  DefaultPasswords:
    default: {}
    type: json
  EndpointMap:
    default: {}
    type: json
  MotdMessage: 
1

    default: |
      Welcome to my Red Hat OpenStack Platform environment!

    type: string
    description: The message to include in the motd

outputs:
  role_data:
    description: Motd role using composable services.
    value:
      service_name: motd
      config_settings: 
2

        motd::content: {get_param: MotdMessage}
      step_config: | 
3

        if hiera('step') >= 2 {
          include ::motd
        }
Copy to Clipboard Toggle word wrap
1
このテンプレートには、その日のメッセージの定義に使用する MotdMessage パラメーターが含まれています。このパラメーターにはデフォルトのメッセージが含まれていますが、カスタムの環境ファイルで同じパラメーターを使用して上書きすることができます。その方法については、後半で説明します。
2
outputs セクションは、config_settings 内の一部のサービスの hieradata を定義します。motd::content hieradata には、MotdMessage パラメーターからのコンテンツが保管されます。motd Puppet クラスは、最終的にこの hieradata を読み取り、ユーザー定義のメッセージを /etc/motd ファイルに渡します。
3
outputs セクションの step_config には、Puppet マニフェストのスニペットが記載されています。このスニペットは、設定がステップ 2 に達したかどうかをチェックし、達している場合には、motd Puppet クラスを実行します。

6.3. ユーザー定義のコンポーザブルサービスの追加

この例では、オーバークラウドのコントローラーノードでのみカスタムの motd サービスを設定することを目的としています。そのためには、カスタムの環境ファイルとカスタムのロールデータファイルをデプロイメントに追加する必要があります。

まず最初に、OS::TripleO::Services 名前空間内の登録済み Heat リソースとして新規サービスを 環境ファイル (env-motd.yaml) に追加します。この例では、motd サービスのリソース名は OS::TripleO::Services::Motd です。

resource_registry:
  OS::TripleO::Services::Motd: /home/stack/templates/motd.yaml

parameter_defaults:
  MotdMessage: |
    You have successfully accessed my Red Hat OpenStack Platform environment!
Copy to Clipboard Toggle word wrap

このカスタム環境ファイルには、 デフォルトの MotdMessage を上書きする新しいメッセージも含まれている点に注意してください。

デプロイメントに motd サービスが追加されましたが、この新規サービスを必要とする各ロールの roles_data.yaml ファイルの ServicesDefault リストを更新する必要があります。以下の例では、コントローラーノードのみでこのサービスを設定します。

デフォルトの roles_data.yaml ファイルのコピーを作成します。

$ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml ~/custom_roles_data.yaml
Copy to Clipboard Toggle word wrap

このファイルを編集して、Controller ロールにスクロールし、ServicesDefault リストにサービスを追加します。

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
...
    - OS::TripleO::Services::FluentdClient
    - OS::TripleO::Services::VipHosts
    - OS::TripleO::Services::Motd           # Add the service to the end
Copy to Clipboard Toggle word wrap

オーバークラウドの作成時には、編集した環境ファイルと custom_roles_data.yaml ファイルを他の環境ファイルおよびデプロイメントオプションとともに追加します。

$ openstack overcloud deploy --templates -e /home/stack/templates/env-motd.yaml -r ~/custom_roles_data.yaml [OTHER OPTIONS]
Copy to Clipboard Toggle word wrap

このコマンドにより、デプロイメントにカスタムの motd サービスが追加され、コントローラーノードのみでサービスが設定されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る