Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
6.2. ユーザー定義のコンポーザブルサービスの作成
本項では、ユーザー定義のコンポーザブルサービスの作成方法を考察し、その日のメッセージ (motd
: message of the day) サービスの実装に重点を置いて説明します。以下の例では、設定フックを使用するか、オーバークラウドイメージを編集して、そのイメージにカスタムの motd
Puppet モジュールが読み込まれています。詳細は、3章オーバークラウドイメージに関する操作 を参照してください。
独自のサービスを作成する場合は、サービスの heat テンプレートで次の項目を定義する必要があります。
- parameters
以下のパラメーターは、サービステンプレートに追加する必要のある必須パラメーターです。
-
ServiceNetMap
: サービスからネットワークへのマッピング。このパラメーターは、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}
) をdefault
値として使用します。 -
DefaultPasswords
: デフォルトパスワードの一覧。このパラメーターは、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}
) をdefault
値として使用します。 -
EndpointMap
: OpenStack サービスエンドポイントからプロトコルへのマッピングの一覧。このパラメーターは、親の Heat テンプレートからの値で上書きされるので、空のハッシュ ({}
) をdefault
値として使用します。
作成するサービスが必要とする追加のパラメーターを定義してください。
-
- outputs
- 以下の出力パラメーターは、ホスト上でのサービス設定を定義します。詳細は、付録A コンポーザブルサービスのパラメーター を参照してください。
以下は、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 }
- 1
- このテンプレートには、その日のメッセージを定義する
MotdMessage
パラメーターが含まれています。このパラメーターにはデフォルトのメッセージが含まれていますが、カスタムの環境ファイルで同じパラメーターを使用して上書きすることができます。 - 2
outputs
セクションは、config_settings
内の一部のサービスの hieradata を定義します。motd::content
hieradata には、MotdMessage
パラメーターからのコンテンツが保管されます。motd
Puppet クラスは、最終的にこの hieradata を読み取り、ユーザー定義のメッセージを/etc/motd
ファイルに渡します。- 3
outputs
セクションのstep_config
には、Puppet マニフェストのスニペットが記載されています。このスニペットは、設定がステップ 2 に達したかどうかをチェックし、達している場合には、motd
Puppet クラスを実行します。